UNPKG

2.68 kBJavaScriptView Raw
1import {expect} from 'chai';
2import PO from 'pofile';
3
4import io from '../src/io';
5
6
7describe('input/output library', function() {
8 const outputFixture = {
9 "message1": [
10 {sourceFile: 'src1.js', line: 3, node: 'node1'},
11 ],
12 "message2": [
13 {sourceFile: 'src2.js', line: 15, node: 'node2'},
14 {sourceFile: 'src2.js', line: 31, node: 'node3'},
15 ],
16 };
17
18 describe('json', function() {
19 describe('output', function() {
20 it('outputs JSON with format {key: key}', function() {
21 const json = io.json.out(outputFixture);
22 const parsed = JSON.parse(json);
23 expect(Object.keys(parsed)).to.eql(Object.keys(outputFixture));
24 expect(Object.keys(parsed).map(k => parsed[k])).to.eql(Object.keys(outputFixture));
25 });
26 });
27
28 describe('input', function() {
29 it('parses JSON', function() {
30 const json = '{"One": "Uno", "Two": "Dos"}';
31 const messages = io.json.in(json);
32 expect(messages.One).to.equal("Uno");
33 expect(messages.Two).to.equal("Dos");
34 });
35 });
36 });
37
38 describe('po', function() {
39 describe('output', function() {
40 it('outputs po files with source references', function() {
41 const poSrc = io.po.out(outputFixture);
42 const parsed = PO.parse(poSrc);
43 parsed.items.forEach(item => {
44 const fixture = outputFixture[item.msgid];
45 expect(fixture.length).to.equal(item.references.length);
46 expect(item.references).to.eql(
47 fixture.map(({sourceFile, line}) => `${sourceFile}:${line}`)
48 );
49 });
50 });
51 });
52
53 describe('input', function() {
54 const po = `
55msgid ""
56msgstr ""
57
58msgid "One"
59msgstr "Uno"
60
61msgid "Two"
62msgstr "Dos"
63 `;
64 it('converts po files to msgid: msgstr format', function() {
65 const messages = io.po.in(po);
66 expect(messages.One).to.equal("Uno");
67 expect(messages.Two).to.equal("Dos");
68 });
69 });
70 });
71
72 describe('js', function() {
73 describe('output', function() {
74 it('is a passthru', function() {
75 expect(io.js.out(outputFixture)).to.eql(outputFixture);
76 });
77 });
78
79 describe('input', function() {
80 it('is a passthru', function() {
81 expect(io.js.in(outputFixture)).to.eql(outputFixture);
82 });
83 });
84 });
85});