1+ import { TestBed } from "@angular/core/testing"
2+ import { provideTranslateLoader , TranslatePipe , TranslateService , TranslationObject } from "../public-api"
3+ import { provideTestableTranslateService , FakeLoader } from "./test-helpers"
4+
5+ const translations : TranslationObject = { a : "A" , b : { "a" : "BA" , "b" : "BB" } , c : "C" }
6+ type MyKeys = "a" | "b.a" | "b.b" | "c" ;
7+
8+ describe ( 'Key type safety tests' , ( ) => {
9+ it ( 'should not have typescript errors when using TranslateService' , ( ) => {
10+ TestBed . configureTestingModule ( {
11+ providers : [
12+ provideTestableTranslateService ( {
13+ loader : provideTranslateLoader ( FakeLoader ) ,
14+ } ) ,
15+ ] ,
16+ } ) ;
17+ const translate = TestBed . inject < TranslateService < MyKeys > > ( TranslateService < MyKeys > ) ;
18+ translate . setTranslation ( "en" , translations ) ;
19+ translate . use ( "en" ) ;
20+
21+ translate . instant ( 'a' ) ;
22+ translate . stream ( 'b.a' ) ;
23+ translate . get ( 'b.b' ) ;
24+
25+ // @ts -expect-error
26+ translate . get ( 'c.c' ) ;
27+ // @ts -expect-error
28+ translate . get ( 'b' ) ;
29+
30+ expect ( translate . instant ( 'a' ) ) . toBe ( "A" ) ;
31+ } )
32+
33+ it ( 'should not have typescript errors when using TranslatePipe' , ( ) => {
34+ TestBed . configureTestingModule ( {
35+ providers : [
36+ provideTestableTranslateService ( {
37+ loader : provideTranslateLoader ( FakeLoader ) ,
38+ } ) ,
39+ {
40+ provide : TranslatePipe ,
41+ useClass : TranslatePipe ,
42+ }
43+ ] ,
44+ } ) ;
45+ const translate = TestBed . inject < TranslateService < MyKeys > > ( TranslateService < MyKeys > ) ;
46+ const translatePipe = TestBed . inject < TranslatePipe < MyKeys > > ( TranslatePipe < MyKeys > ) ;
47+ translate . setTranslation ( "en" , translations ) ;
48+ translate . use ( "en" ) ;
49+
50+ translatePipe . transform ( 'a' ) ;
51+ translatePipe . transform ( 'b.a' ) ;
52+ translatePipe . transform ( 'b.b' ) ;
53+
54+ // @ts -expect-error
55+ translatePipe . transform ( 'c.c' ) ;
56+ // @ts -expect-error
57+ translatePipe . transform ( 'b' ) ;
58+
59+ expect ( translatePipe . transform ( 'b.a' ) ) . toBe ( "BA" ) ;
60+ } )
61+ } )
0 commit comments