Skip to content

Commit 3227984

Browse files
committed
test: changed properties used for testing to protected
1 parent 6ebd222 commit 3227984

File tree

10 files changed

+148
-66
lines changed

10 files changed

+148
-66
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ interfaces and explains how to develop custom plugins.
1414
- [Migration guide ngx-translate v16 -> v17](https://ngx-translate.org/getting-started/migration-guide/)
1515
- [Release Notes](https://github.com/ngx-translate/core/releases)
1616

17-
In addition to that, a getting started tutorial is available here:
17+
In addition to that, a getting started tutorial is available here:
1818
[How to Translate Your Angular App with NGX-Translate](https://www.codeandweb.com/babeledit/tutorials/how-to-translate-your-angular-app-with-ngx-translate)
1919

2020
## Support for older versions

projects/http-loader/src/lib/http-loader-backend.spec.ts

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,16 @@
11
import { HTTP_INTERCEPTORS, provideHttpClient, withInterceptorsFromDi } from "@angular/common/http";
22
import { HttpTestingController, provideHttpClientTesting } from "@angular/common/http/testing";
33
import { TestBed } from "@angular/core/testing";
4-
import { provideTranslateService, TranslateService, Translation } from "@ngx-translate/core";
4+
import { TranslateService, Translation } from "@ngx-translate/core";
55
import { provideTranslateHttpLoader, TranslateHttpLoader } from "../public-api";
66
import { MarkerInterceptor } from "../test-helper/marker-interceptor";
7+
import {
8+
provideTestableTranslateService,
9+
TestableTranslateService,
10+
} from "../test-helper/testable-translate-service";
711

812
describe("TranslateHttpLoader (HttpBackend)", () => {
9-
let translate: TranslateService;
13+
let translate: TestableTranslateService;
1014
let http: HttpTestingController;
1115

1216
beforeEach(() => {
@@ -20,14 +24,15 @@ describe("TranslateHttpLoader (HttpBackend)", () => {
2024
},
2125
provideHttpClient(withInterceptorsFromDi()),
2226
provideHttpClientTesting(),
23-
provideTranslateService(),
24-
provideTranslateHttpLoader({
25-
useHttpBackend: true,
27+
provideTestableTranslateService({
28+
loader: provideTranslateHttpLoader({
29+
useHttpBackend: true,
30+
}),
2631
}),
2732
],
2833
});
2934

30-
translate = TestBed.inject(TranslateService);
35+
translate = TestBed.inject(TranslateService) as TestableTranslateService;
3136
http = TestBed.inject(HttpTestingController);
3237
});
3338

@@ -37,8 +42,8 @@ describe("TranslateHttpLoader (HttpBackend)", () => {
3742

3843
it("should be able to provide TranslateHttpLoader", () => {
3944
expect(TranslateHttpLoader).toBeDefined();
40-
expect(translate.currentLoader).toBeDefined();
41-
expect(translate.currentLoader instanceof TranslateHttpLoader).toBeTruthy();
45+
expect(translate.getCurrentLoader()).toBeDefined();
46+
expect(translate.getCurrentLoader() instanceof TranslateHttpLoader).toBeTruthy();
4247
});
4348

4449
it("should be able to get translations", () => {

projects/http-loader/src/lib/http-loader.spec.ts

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { HTTP_INTERCEPTORS, provideHttpClient, withInterceptorsFromDi } from "@angular/common/http";
22
import { HttpTestingController, provideHttpClientTesting } from "@angular/common/http/testing";
33
import { TestBed } from "@angular/core/testing";
4-
import { provideTranslateService, TranslateService, Translation } from "@ngx-translate/core";
4+
import { TranslateService, Translation } from "@ngx-translate/core";
55
import {
66
provideTranslateHttpLoader,
77
provideTranslateMultiHttpLoader,
@@ -10,9 +10,13 @@ import {
1010
TranslateMultiHttpLoaderConfig,
1111
} from "../public-api";
1212
import { MarkerInterceptor } from "../test-helper/marker-interceptor";
13+
import {
14+
provideTestableTranslateService,
15+
TestableTranslateService,
16+
} from "../test-helper/testable-translate-service";
1317

1418
describe("TranslateHttpLoader (HttpClient)", () => {
15-
let translate: TranslateService;
19+
let translate: TestableTranslateService;
1620
let http: HttpTestingController;
1721

1822
const prepareMulti = (config: Partial<TranslateMultiHttpLoaderConfig> = {}) => {
@@ -26,12 +30,13 @@ describe("TranslateHttpLoader (HttpClient)", () => {
2630
},
2731
provideHttpClient(withInterceptorsFromDi()),
2832
provideHttpClientTesting(),
29-
provideTranslateService(),
30-
provideTranslateMultiHttpLoader(config),
33+
provideTestableTranslateService({
34+
loader: provideTranslateMultiHttpLoader(config),
35+
}),
3136
],
3237
});
3338

34-
translate = TestBed.inject(TranslateService);
39+
translate = TestBed.inject(TranslateService) as TestableTranslateService;
3540
http = TestBed.inject(HttpTestingController);
3641
};
3742

@@ -46,12 +51,13 @@ describe("TranslateHttpLoader (HttpClient)", () => {
4651
},
4752
provideHttpClient(withInterceptorsFromDi()),
4853
provideHttpClientTesting(),
49-
provideTranslateService(),
50-
provideTranslateHttpLoader(config),
54+
provideTestableTranslateService({
55+
loader: provideTranslateHttpLoader(config),
56+
}),
5157
],
5258
});
5359

54-
translate = TestBed.inject(TranslateService);
60+
translate = TestBed.inject(TranslateService) as TestableTranslateService;
5561
http = TestBed.inject(HttpTestingController);
5662
};
5763

@@ -62,8 +68,8 @@ describe("TranslateHttpLoader (HttpClient)", () => {
6268
it("should be able to provide TranslateHttpLoader", () => {
6369
prepareSingle();
6470
expect(TranslateHttpLoader).toBeDefined();
65-
expect(translate.currentLoader).toBeDefined();
66-
expect(translate.currentLoader instanceof TranslateHttpLoader).toBeTruthy();
71+
expect(translate.getCurrentLoader()).toBeDefined();
72+
expect(translate.getCurrentLoader() instanceof TranslateHttpLoader).toBeTruthy();
6773
});
6874

6975
describe("Config", () => {
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
import { ClassProvider, Provider } from "@angular/core";
2+
import {
3+
provideTranslateService,
4+
RootTranslateServiceConfig,
5+
TranslateCompiler,
6+
TranslateLoader,
7+
TranslateService,
8+
} from "@ngx-translate/core";
9+
10+
export class TestableTranslateService extends TranslateService {
11+
public getCurrentLoader(): TranslateLoader {
12+
return this.currentLoader;
13+
}
14+
15+
public getCompiler(): TranslateCompiler {
16+
return this.compiler;
17+
}
18+
}
19+
20+
export function provideTestableTranslateService(
21+
config: RootTranslateServiceConfig = {},
22+
): Provider[] {
23+
const providers: Provider[] = provideTranslateService(config);
24+
const translateServicedProvider: ClassProvider | undefined = providers.find(
25+
(provider) => (provider as ClassProvider).provide === TranslateService,
26+
) as ClassProvider | undefined;
27+
if (translateServicedProvider === undefined)
28+
throw new Error("Could not find TranslateService provider in provided providers");
29+
translateServicedProvider.useClass = TestableTranslateService;
30+
return providers;
31+
}

projects/ngx-translate/src/lib/translate.service.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -179,8 +179,8 @@ export class TranslateService implements ITranslateService {
179179
private _translationRequests: Record<Language, Observable<TranslationObject>> = {};
180180
private lastUseLanguage: Language | null = null;
181181

182-
public currentLoader = inject(TranslateLoader);
183-
public compiler = inject(TranslateCompiler);
182+
protected currentLoader = inject(TranslateLoader);
183+
protected compiler = inject(TranslateCompiler);
184184
private parser = inject(TranslateParser);
185185
private missingTranslationHandler = inject(MissingTranslationHandler);
186186
private store: TranslateStore = inject(TranslateStore);

projects/ngx-translate/src/tests/test-helpers.ts

Lines changed: 32 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,14 @@
1-
import { Injectable } from "@angular/core";
1+
import { ClassProvider, Injectable, Provider } from "@angular/core";
22
import { Observable, of, timer } from "rxjs";
33
import { map } from "rxjs/operators";
4-
import { TranslateLoader, TranslationObject } from "../public-api";
4+
import {
5+
provideTranslateService,
6+
RootTranslateServiceConfig,
7+
TranslateCompiler,
8+
TranslateLoader,
9+
TranslateService,
10+
TranslationObject,
11+
} from "../public-api";
512

613
@Injectable()
714
export class DelayedFakeLoader implements TranslateLoader {
@@ -26,3 +33,26 @@ export class FakeLoader implements TranslateLoader {
2633
return of(translations[lang]);
2734
}
2835
}
36+
37+
export class TestableTranslateService extends TranslateService {
38+
public getCurrentLoader(): TranslateLoader {
39+
return this.currentLoader;
40+
}
41+
42+
public getCompiler(): TranslateCompiler {
43+
return this.compiler;
44+
}
45+
}
46+
47+
export function provideTestableTranslateService(
48+
config: RootTranslateServiceConfig = {},
49+
): Provider[] {
50+
const providers: Provider[] = provideTranslateService(config);
51+
const translateServicedProvider: ClassProvider | undefined = providers.find(
52+
(provider) => (provider as ClassProvider).provide === TranslateService,
53+
) as ClassProvider | undefined;
54+
if (translateServicedProvider === undefined)
55+
throw new Error("Could not find TranslateService provider in provided providers");
56+
translateServicedProvider.useClass = TestableTranslateService;
57+
return providers;
58+
}

projects/ngx-translate/src/tests/translate.compiler.spec.ts

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,10 @@ import {
99
TranslateService,
1010
Translation,
1111
TranslationObject,
12-
provideTranslateService,
1312
provideTranslateLoader,
1413
provideTranslateCompiler,
1514
} from "../public-api";
15+
import { provideTestableTranslateService, TestableTranslateService } from "./test-helpers";
1616

1717
const translations: TranslationObject = { LOAD: "This is a test" };
1818

@@ -25,26 +25,27 @@ class FakeLoader implements TranslateLoader {
2525
}
2626

2727
describe("TranslateCompiler", () => {
28-
let translate: TranslateService;
28+
let translate: TestableTranslateService;
2929

3030
describe("with default TranslateNoOpCompiler", () => {
3131
beforeEach(() => {
3232
TestBed.configureTestingModule({
3333
providers: [
34-
provideTranslateService(),
35-
provideTranslateLoader(FakeLoader),
36-
provideTranslateCompiler(TranslateNoOpCompiler),
34+
provideTestableTranslateService({
35+
loader: provideTranslateLoader(FakeLoader),
36+
compiler: provideTranslateCompiler(TranslateNoOpCompiler),
37+
}),
3738
],
3839
});
39-
translate = TestBed.inject(TranslateService);
40+
translate = TestBed.inject(TranslateService) as TestableTranslateService;
4041

4142
translate.use("en");
4243
});
4344

4445
it("should use the correct compiler", () => {
4546
expect(translate).toBeDefined();
46-
expect(translate.compiler).toBeDefined();
47-
expect(translate.compiler instanceof TranslateNoOpCompiler).toBeTruthy();
47+
expect(translate.getCompiler()).toBeDefined();
48+
expect(translate.getCompiler() instanceof TranslateNoOpCompiler).toBeTruthy();
4849
});
4950

5051
it("should use the compiler on loading translations", () => {
@@ -89,20 +90,21 @@ describe("TranslateCompiler", () => {
8990
beforeEach(() => {
9091
TestBed.configureTestingModule({
9192
providers: [
92-
provideTranslateService({}),
93-
provideTranslateLoader(FakeLoader),
94-
provideTranslateCompiler(CustomCompiler),
93+
provideTestableTranslateService({
94+
loader: provideTranslateLoader(FakeLoader),
95+
compiler: provideTranslateCompiler(CustomCompiler),
96+
}),
9597
],
9698
});
97-
translate = TestBed.inject(TranslateService);
99+
translate = TestBed.inject(TranslateService) as TestableTranslateService;
98100

99101
translate.use("en");
100102
});
101103

102104
it("should use the correct compiler", () => {
103105
expect(translate).toBeDefined();
104-
expect(translate.compiler).toBeDefined();
105-
expect(translate.compiler instanceof CustomCompiler).toBeTruthy();
106+
expect(translate.getCompiler()).toBeDefined();
107+
expect(translate.getCompiler() instanceof CustomCompiler).toBeTruthy();
106108
});
107109

108110
it("should use the compiler on loading translations", () => {

projects/ngx-translate/src/tests/translate.loader.spec.ts

Lines changed: 20 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@ import {
88
TranslateService,
99
Translation,
1010
TranslationObject,
11-
provideTranslateService,
1211
provideTranslateLoader,
1312
} from "../public-api";
13+
import { provideTestableTranslateService, TestableTranslateService } from "./test-helpers";
1414

1515
const translations: TranslationObject = { TEST: "This is a test" };
1616

@@ -22,17 +22,19 @@ class FakeLoader implements TranslateLoader {
2222
}
2323

2424
describe("TranslateLoader", () => {
25-
let translate: TranslateService;
25+
let translate: TestableTranslateService;
2626

2727
it("should be able to provide TranslateStaticLoader", () => {
2828
TestBed.configureTestingModule({
29-
providers: [provideTranslateService({}), provideTranslateLoader(FakeLoader)],
29+
providers: [
30+
provideTestableTranslateService({ loader: provideTranslateLoader(FakeLoader) }),
31+
],
3032
});
31-
translate = TestBed.inject(TranslateService);
33+
translate = TestBed.inject(TranslateService) as TestableTranslateService;
3234

3335
expect(translate).toBeDefined();
34-
expect(translate.currentLoader).toBeDefined();
35-
expect(translate.currentLoader instanceof FakeLoader).toBeTruthy();
36+
expect(translate.getCurrentLoader()).toBeDefined();
37+
expect(translate.getCurrentLoader() instanceof FakeLoader).toBeTruthy();
3638

3739
// the lang to use, if the lang isn't available, it will use the current loader to get them
3840
translate.use("en");
@@ -52,15 +54,14 @@ describe("TranslateLoader", () => {
5254

5355
TestBed.configureTestingModule({
5456
providers: [
55-
provideTranslateService({}),
56-
{ provide: TranslateLoader, useClass: CustomLoader },
57+
provideTestableTranslateService({ loader: provideTranslateLoader(CustomLoader) }),
5758
],
5859
});
59-
translate = TestBed.inject(TranslateService);
60+
translate = TestBed.inject(TranslateService) as TestableTranslateService;
6061

6162
expect(translate).toBeDefined();
62-
expect(translate.currentLoader).toBeDefined();
63-
expect(translate.currentLoader instanceof CustomLoader).toBeTruthy();
63+
expect(translate.getCurrentLoader()).toBeDefined();
64+
expect(translate.getCurrentLoader() instanceof CustomLoader).toBeTruthy();
6465

6566
// the lang to use, if the lang isn't available, it will use the current loader to get them
6667
translate.use("en");
@@ -73,13 +74,17 @@ describe("TranslateLoader", () => {
7374

7475
it("TranslateNoOpLoader should return empty object", () => {
7576
TestBed.configureTestingModule({
76-
providers: [provideTranslateService(), provideTranslateLoader(TranslateNoOpLoader)],
77+
providers: [
78+
provideTestableTranslateService({
79+
loader: provideTranslateLoader(TranslateNoOpLoader),
80+
}),
81+
],
7782
});
78-
translate = TestBed.inject(TranslateService);
83+
translate = TestBed.inject(TranslateService) as TestableTranslateService;
7984

8085
expect(translate).toBeDefined();
81-
expect(translate.currentLoader).toBeDefined();
82-
expect(translate.currentLoader instanceof TranslateNoOpLoader).toBeTruthy();
86+
expect(translate.getCurrentLoader()).toBeDefined();
87+
expect(translate.getCurrentLoader() instanceof TranslateNoOpLoader).toBeTruthy();
8388

8489
translate.use("en").subscribe((res: InterpolatableTranslationObject) => {
8590
expect(res as object).toEqual({});

projects/ngx-translate/src/tests/translate.pipe.spec.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,9 @@ describe("TranslatePipe (unit)", () => {
2323

2424
TestBed.configureTestingModule({
2525
providers: [
26-
provideTranslateService(),
26+
provideTranslateService({
27+
loader: provideTranslateLoader(DelayedFakeLoader),
28+
}),
2729
{
2830
provide: ChangeDetectorRef,
2931
useValue: ref,
@@ -32,7 +34,6 @@ describe("TranslatePipe (unit)", () => {
3234
provide: TranslatePipe,
3335
useClass: TranslatePipe,
3436
},
35-
provideTranslateLoader(DelayedFakeLoader),
3637
],
3738
});
3839

0 commit comments

Comments
 (0)