angular-t9n
Version:
A translation tool for Angular i18n
50 lines (42 loc) • 1.84 kB
text/typescript
import { logging, normalize, Path } from '@angular-devkit/core';
import { SerializationStrategy, TranslationTarget } from '../../../server';
import { MOCK_TARGET_DE } from '../../../test';
import { AngularI18n } from './angular-i18n';
import { AngularJsonPersistenceStrategy } from './angular-json-persistence-strategy';
describe('AngularJsonPersistenceStrategy', () => {
class MockAngularI18n implements Partial<AngularI18n> {
projectRelativePath(target: TranslationTarget) {
return normalize(`${target.language}.xlf`);
}
update(): Promise<void> {
return Promise.resolve();
}
}
class MockSerializationStrategy implements Partial<SerializationStrategy> {
serializedTargets: TranslationTarget[] = [];
async serializeTarget(target: TranslationTarget, _path: Path): Promise<void> {
this.serializedTargets.push(target);
return Promise.resolve();
}
}
let persistenceStrategy: AngularJsonPersistenceStrategy;
let serializationStrategy: MockSerializationStrategy;
beforeEach(() => {
serializationStrategy = new MockSerializationStrategy();
persistenceStrategy = new AngularJsonPersistenceStrategy(
new MockAngularI18n() as AngularI18n,
new logging.NullLogger(),
serializationStrategy as unknown as SerializationStrategy,
);
});
it('should create target', async () => {
await persistenceStrategy.create(MOCK_TARGET_DE);
expect(serializationStrategy.serializedTargets.length).toEqual(1);
expect(serializationStrategy.serializedTargets[0]).toEqual(MOCK_TARGET_DE);
});
it('should update a target', async () => {
await persistenceStrategy.update(MOCK_TARGET_DE);
expect(serializationStrategy.serializedTargets.length).toEqual(1);
expect(serializationStrategy.serializedTargets[0]).toEqual(MOCK_TARGET_DE);
});
});