import { expect } from 'chai'; import { PipeParser } from '../../src/parsers/pipe.parser'; describe('PipeParser', () => { const templateFilename: string = 'test.template.html'; let parser: PipeParser; beforeEach(() => { parser = new PipeParser(); }); it('should only extract string using pipe', () => { const contents = ``; const keys = parser.extract(contents, templateFilename).keys(); expect(keys).to.deep.equal(['SomeKey_NotWorking']); }); it('should extract string using pipe, but between quotes only', () => { const contents = ``; const keys = parser.extract(contents, templateFilename).keys(); expect(keys).to.deep.equal(['user.settings.form.phone.placeholder']); }); it('should extract interpolated strings using translate pipe', () => { const contents = `Hello {{ 'World' | translate }}`; const keys = parser.extract(contents, templateFilename).keys(); expect(keys).to.deep.equal(['World']); }); it('should extract strings with escaped quotes', () => { const contents = `Hello {{ 'World\\'s largest potato' | translate }}`; const keys = parser.extract(contents, templateFilename).keys(); expect(keys).to.deep.equal([`World's largest potato`]); }); it('should extract strings with multiple escaped quotes', () => { const contents = `{{ 'C\\'est ok. C\\'est ok' | translate }}`; const keys = parser.extract(contents, templateFilename).keys(); expect(keys).to.deep.equal([`C'est ok. C'est ok`]); }); it('should extract interpolated strings using translate pipe in attributes', () => { const contents = ``; const keys = parser.extract(contents, templateFilename).keys(); expect(keys).to.deep.equal(['Hello World']); }); it('should extract bound strings using translate pipe in attributes', () => { const contents = ``; const keys = parser.extract(contents, templateFilename).keys(); expect(keys).to.deep.equal(['Hello World']); }); it('should not use a greedy regular expression', () => { const contents = ` {{ 'Info' | translate }} {{ 'Loading...' | translate }} `; const keys = parser.extract(contents, templateFilename).keys(); expect(keys).to.deep.equal(['Info', 'Loading...']); }); it('should extract strings on same line', () => { const contents = ``; const keys = parser.extract(contents, templateFilename).keys(); expect(keys).to.deep.equal(['Hello', 'World']); }); it('should extract strings from this template', () => { const contents = `

{{ error }}

`; const keys = parser.extract(contents, templateFilename).keys(); expect(keys).to.deep.equal(['Name', 'Create account']); }); });