import {TranslateDefaultParser, TranslateParser} from '../public-api'; describe('Parser', () => { let parser: TranslateParser; beforeEach(() => { parser = new TranslateDefaultParser(); }); it('is defined', () => { expect(TranslateParser).toBeDefined(); expect(parser instanceof TranslateParser).toBeTruthy(); }); it('should interpolate strings', () => { expect(parser.interpolate("This is a {{ key }}", {key: "value"})).toEqual("This is a value"); }); it('should interpolate strings with falsy values', () => { expect(parser.interpolate("This is a {{ key }}", {key: ""})).toEqual("This is a "); expect(parser.interpolate("This is a {{ key }}", {key: 0})).toEqual("This is a 0"); }); it('should interpolate strings with object properties', () => { expect(parser.interpolate("This is a {{ key1.key2 }}", {key1: {key2: "value2"}})).toEqual("This is a value2"); expect(parser.interpolate("This is a {{ key1.key2.key3 }}", {key1: {key2: {key3: "value3"}}})).toEqual("This is a value3"); }); it('should support interpolation functions', () => { expect(parser.interpolate((v: string) => v.toUpperCase() + ' YOU!', 'bless')).toBe('BLESS YOU!'); }); it('should get the addressed value', () => { expect(parser.getValue({key1: {key2: "value2"}}, 'key1.key2')).toEqual("value2"); expect(parser.getValue({key1: {key2: "value"}}, 'keyWrong.key2')).not.toBeDefined(); expect(parser.getValue({key1: {key2: {key3: "value3"}}}, 'key1.key2.key3')).toEqual("value3"); expect(parser.getValue({key1: {key2: {key3: "value3"}}}, 'key1.keyWrong.key3')).not.toBeDefined(); expect(parser.getValue({key1: {key2: {key3: "value3"}}}, 'key1.key2.keyWrong')).not.toBeDefined(); expect(parser.getValue({'key1.key2': {key3: "value3"}}, 'key1.key2.key3')).toEqual("value3"); expect(parser.getValue({key1: {'key2.key3': "value3"}}, 'key1.key2.key3')).toEqual("value3"); expect(parser.getValue({'key1.key2.key3': "value3"}, 'key1.key2.key3')).toEqual("value3"); expect(parser.getValue({'key1.key2': {key3: "value3"}}, 'key1.key2.keyWrong')).not.toBeDefined(); expect(parser.getValue({ 'key1': "value1", 'key1.key2': "value2" }, 'key1.key2')).toEqual("value2"); }); });