angular-docs-cn/modules/@angular/compiler/test/i18n/message_bundle_spec.ts

58 lines
2.0 KiB
TypeScript
Raw Normal View History

2016-07-15 12:42:33 -04:00
/**
* @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
*/
2016-07-21 16:56:58 -04:00
import * as i18n from '@angular/compiler/src/i18n/i18n_ast';
import {Serializer} from '@angular/compiler/src/i18n/serializers/serializer';
2016-07-15 12:42:33 -04:00
import {beforeEach, ddescribe, describe, expect, iit, inject, it, xdescribe, xit} from '@angular/core/testing/testing_internal';
2016-08-05 15:08:43 -04:00
import {serializeNodes} from '../../src/i18n/digest';
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';
2016-07-15 12:42:33 -04:00
export function main(): void {
2016-07-21 16:56:58 -04:00
describe('MessageBundle', () => {
describe('Messages', () => {
let messages: MessageBundle;
2016-07-15 12:42:33 -04:00
2016-07-21 16:56:58 -04:00
beforeEach(() => { messages = new MessageBundle(new HtmlParser, [], {}); });
2016-07-15 12:42:33 -04:00
it('should extract the message to the catalog', () => {
2016-07-21 16:56:58 -04:00
messages.updateFromTemplate(
2016-07-15 12:42:33 -04:00
'<p i18n="m|d">Translate Me</p>', 'url', DEFAULT_INTERPOLATION_CONFIG);
2016-07-21 16:56:58 -04:00
expect(humanizeMessages(messages)).toEqual([
2016-07-15 12:42:33 -04:00
'a486901=Translate Me',
]);
});
it('should extract the same message with different meaning in different entries', () => {
2016-07-21 16:56:58 -04:00
messages.updateFromTemplate(
2016-07-15 12:42:33 -04:00
'<p i18n="m|d">Translate Me</p><p i18n>Translate Me</p>', 'url',
DEFAULT_INTERPOLATION_CONFIG);
2016-07-21 16:56:58 -04:00
expect(humanizeMessages(messages)).toEqual([
2016-07-15 12:42:33 -04:00
'a486901=Translate Me',
'8475f2cc=Translate Me',
]);
});
});
});
}
class _TestSerializer implements Serializer {
2016-07-21 16:56:58 -04:00
write(messageMap: {[id: string]: i18n.Message}): string {
2016-07-15 12:42:33 -04:00
return Object.keys(messageMap)
2016-08-01 17:43:20 -04:00
.map(id => `${id}=${serializeNodes(messageMap[id].nodes)}`)
2016-07-15 12:42:33 -04:00
.join('//');
}
2016-07-21 16:56:58 -04:00
load(content: string, url: string, placeholders: {}): {} { return null; }
2016-07-15 12:42:33 -04:00
}
2016-07-21 16:56:58 -04:00
function humanizeMessages(catalog: MessageBundle): string[] {
2016-07-15 12:42:33 -04:00
return catalog.write(new _TestSerializer()).split('//');
}