1 | import {expect} from 'chai';
|
2 | import PO from 'pofile';
|
3 |
|
4 | import io from '../src/io';
|
5 |
|
6 |
|
7 | describe('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 = `
|
55 | msgid ""
|
56 | msgstr ""
|
57 |
|
58 | msgid "One"
|
59 | msgstr "Uno"
|
60 |
|
61 | msgid "Two"
|
62 | msgstr "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 | });
|