/** * @license * Copyright Google Inc. All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ import {Xmb} from '@angular/compiler/src/i18n/serializers/xmb'; import {describe, expect, it} from '@angular/core/testing/testing_internal'; import {MessageBundle} from '../../../src/i18n/message_bundle'; import {HtmlParser} from '../../../src/ml_parser/html_parser'; import {DEFAULT_INTERPOLATION_CONFIG} from '../../../src/ml_parser/interpolation_config'; export function main(): void { describe('XMB serializer', () => { const HTML = `

not translatable

translatable element with placeholders {{ interpolation}}

{ count, plural, =0 {

test

}}

foo

{ count, plural, =0 { { sex, gender, other {

deeply nested

}} }}

`; const XMB = ` ]> translatable element <b>with placeholders</b> { count, plural, =0 {<p>test</p>} } foo { count, plural, =0 {{ sex, gender, other {<p>deeply nested</p>} } } } `; it('should write a valid xmb file', () => { expect(toXmb(HTML)).toEqual(XMB); }); it('should throw when trying to load an xmb file', () => { expect(() => { const serializer = new Xmb(); serializer.load(XMB, 'url', null); }).toThrowError(/Unsupported/); }); }); } function toXmb(html: string): string { let catalog = new MessageBundle(new HtmlParser, [], {}); const serializer = new Xmb(); catalog.updateFromTemplate(html, '', DEFAULT_INTERPOLATION_CONFIG); return catalog.write(serializer); }