-
Notifications
You must be signed in to change notification settings - Fork 38
/
localization-mock.ts
76 lines (70 loc) · 2.61 KB
/
localization-mock.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
import { ModuleWithProviders, NgModule, Pipe, PipeTransform, Provider } from '@angular/core';
import { TranslateLoader, TranslateModule } from '@ngx-translate/core';
import { LocalizationConfiguration, LocalizationModule, LocalizationTranslatePipe } from '@o3r/localization';
import { of } from 'rxjs';
const defaultLocalizationConfiguration: Partial<LocalizationConfiguration> = {
supportedLocales: ['en'],
language: 'en',
endPointUrl: '',
fallbackLanguage: 'en'
};
@Pipe({ name: 'translate' })
export class TranslatePipeMock implements PipeTransform {
public transform(...args: any[]): string | undefined {
return args && args.map((arg) => JSON.parse(arg)).join(', ');
}
}
@Pipe({ name: 'o3rTranslate' })
export class O3rTranslatePipeMock implements PipeTransform {
public transform(...args: any[]): string | undefined {
return args && args.map((arg) => JSON.parse(arg)).join(', ');
}
}
@NgModule({
declarations: [TranslatePipeMock, O3rTranslatePipeMock],
exports: [TranslatePipeMock, O3rTranslatePipeMock]
})
export class LocalizationDependencyMocks {
public static forTest(pipeWithPrefix = false): ModuleWithProviders<LocalizationDependencyMocks> {
return {
ngModule: LocalizationDependencyMocks,
providers: [{ provide: LocalizationTranslatePipe, useClass: pipeWithPrefix ? O3rTranslatePipeMock : TranslatePipeMock }]
};
}
}
/** Mock to provide to the MockTranslation module */
export interface MockTranslations {
[lang: string]: {
[key: string]: any;
};
}
/**
* Function to get the list of modules required to test component using Localization module
* @param localizationConfiguration Localization configuration
* @param translations Translations to use
* @param translationCompilerProvider Provider for translations compiler
* @param mockPipe Enable translation pipe mocking
* @param pipeWithPrefix Enable pipe with prefix
* @returns List of modules to import in the TestBed
*/
export function mockTranslationModules(
localizationConfiguration: Partial<LocalizationConfiguration> = defaultLocalizationConfiguration,
translations: MockTranslations = {},
translationCompilerProvider?: Provider,
mockPipe = false,
pipeWithPrefix = false
): ModuleWithProviders<LocalizationModule>[] {
return [
LocalizationModule.forRoot(() => localizationConfiguration),
TranslateModule.forRoot({
loader: {
provide: TranslateLoader,
useValue: {
getTranslation: (lang: string) => of(translations[lang])
}
},
compiler: translationCompilerProvider
}),
...(mockPipe ? [LocalizationDependencyMocks.forTest(pipeWithPrefix)] : [])
];
}