UNPKG

@ngx-i18nsupport/ngx-i18nsupport-lib

Version:

A Typescript library to work with Angular generated i18n files (xliff, xmb)

136 lines 6 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const index_1 = require("./index"); const fs = require("fs"); /** * Created by martin on 10.04.2017. * Testcases for public API. * Just reading different file formats. * Detail Tests are in the files for the specific formats. */ describe('ngx-i18nsupport-lib API test spec', () => { const SRCDIR = 'test/testdata/i18n/'; const ENCODING = 'UTF-8'; /** * Helper function to read Xliff from File */ function readXliff(path) { const content = fs.readFileSync(path, ENCODING); return index_1.TranslationMessagesFileFactory.fromFileContent('xlf', content, path, ENCODING); } /** * Helper function to read XLIFF 2.0 from File */ function readXliff2(path) { const content = fs.readFileSync(path, ENCODING); return index_1.TranslationMessagesFileFactory.fromFileContent('xlf2', content, path, ENCODING); } /** * Helper function to read Xmb from File */ function readXmb(path) { const content = fs.readFileSync(path, ENCODING); return index_1.TranslationMessagesFileFactory.fromFileContent('xmb', content, path, ENCODING); } /** * Helper function to read Xmb from 2 Files, the xmb and the master */ function readXtbWithMaster(path, masterPath) { const content = fs.readFileSync(path, ENCODING); if (masterPath) { const masterContent = fs.readFileSync(masterPath, ENCODING); const optionalMaster = { xmlContent: masterContent, path: masterPath, encoding: ENCODING }; return index_1.TranslationMessagesFileFactory.fromFileContent('xtb', content, path, ENCODING, optionalMaster); } else { return index_1.TranslationMessagesFileFactory.fromFileContent('xtb', content, path, ENCODING); } } /** * Helper function to read translation file of any format */ function readFile(path, masterPath) { const content = fs.readFileSync(path, ENCODING); if (masterPath) { const masterContent = fs.readFileSync(masterPath, ENCODING); const optionalMaster = { xmlContent: masterContent, path: masterPath, encoding: ENCODING }; return index_1.TranslationMessagesFileFactory.fromUnknownFormatFileContent(content, path, ENCODING, optionalMaster); } else { return index_1.TranslationMessagesFileFactory.fromUnknownFormatFileContent(content, path, ENCODING); } } describe('api tests', () => { const MASTER1SRC_XLIFF = SRCDIR + 'ngExtractedMaster1.xlf'; const MASTER1SRC_XLIFF2 = SRCDIR + 'ngExtractedMaster1.xlf2'; const MASTER1SRC_XMB = SRCDIR + 'ngExtractedMaster1.xmb'; const MASTER_DE_XMB = SRCDIR + 'ngExtractedMaster1.de.xmb'; const MASTER_EN_XTB = SRCDIR + 'ngExtractedMaster1.en.xtb'; it('should read xlf file', () => { const file = readXliff(MASTER1SRC_XLIFF); expect(file).toBeTruthy(); expect(file.fileType()).toBe('XLIFF 1.2'); }); it('should read XLIFF 2.0 file', () => { const file = readXliff2(MASTER1SRC_XLIFF2); expect(file).toBeTruthy(); expect(file.fileType()).toBe('XLIFF 2.0'); }); it('should read xmb file', () => { const file = readXmb(MASTER1SRC_XMB); expect(file).toBeTruthy(); expect(file.fileType()).toBe('XMB'); }); it('should read xtb file with master', () => { const file = readXtbWithMaster(MASTER_EN_XTB, MASTER_DE_XMB); expect(file).toBeTruthy(); expect(file.fileType()).toBe('XTB'); expect(file.sourceLanguage()).toBe('de'); expect(file.targetLanguage()).toBe('en'); }); it('should autodetect file format', () => { const file1 = readFile(MASTER1SRC_XLIFF); expect(file1).toBeTruthy(); expect(file1.fileType()).toBe('XLIFF 1.2'); const file2 = readFile(MASTER1SRC_XMB); expect(file2).toBeTruthy(); expect(file2.fileType()).toBe('XMB'); const file3 = readFile(MASTER_EN_XTB, MASTER1SRC_XMB); expect(file3).toBeTruthy(); expect(file3.fileType()).toBe('XTB'); const file4 = readFile(MASTER1SRC_XLIFF2); expect(file4).toBeTruthy(); expect(file4.fileType()).toBe('XLIFF 2.0'); }); it('should detect files with wrong format', () => { try { index_1.TranslationMessagesFileFactory.fromUnknownFormatFileContent('schrott', 'dummyfile', 'UTF-X'); } catch (error) { expect(error.toString()).toBe('Error: could not identify file format, it is neiter XLIFF (1.2 or 2.0) nor XMB/XTB'); return; } fail('expected error not received'); }); it('should report wrong format as error', () => { try { index_1.TranslationMessagesFileFactory.fromFileContent('schrott', 'schrott', 'dummyfile', 'UTF-X'); } catch (error) { expect(error.toString()).toBe('Error: oops, unsupported format "schrott"'); return; } fail('expected error not received'); }); it('should detect error when reading xtb file with no xmb master', () => { try { readXtbWithMaster(MASTER_EN_XTB, MASTER1SRC_XLIFF); fail('expected error not received'); } catch (error) { expect(error.toString()).toContain('An xtb file needs xmb as master file.'); } }); }); }); //# sourceMappingURL=api.spec.js.map