import { TestBed } from '@angular/core/testing'; import { ConfigService } from '@arrow/bom/config'; import { TranslateService } from '@ngx-translate/core'; import { Utils } from './utils.service'; describe('UtilsService', () => { let utilsService: Utils; let configServiceSpy: jasmine.SpyObj; let translateServiceSpy: jasmine.SpyObj; beforeEach(() => { const configServiceSpyObj = jasmine.createSpyObj('ConfigService', ['getTarget']); const translateServiceSpyObj = jasmine.createSpyObj('TranslateService', ['instant']); TestBed.configureTestingModule({ providers: [ { provide: ConfigService, useValue: configServiceSpyObj }, { provide: TranslateService, useValue: translateServiceSpyObj }, Utils ] }) }); it('Utils service should be created', () => { utilsService = TestBed.inject(Utils); configServiceSpy = TestBed.inject(ConfigService) as jasmine.SpyObj; translateServiceSpy = TestBed.inject(TranslateService) as jasmine.SpyObj; expect(utilsService).toBeTruthy(); }); // Disabled since it was failing intermittently // it(`translateByKeyWithFallback should return empty for missing parameters`, () => { // expect(utilsService.translateByKeyWithFallback("", "")).toEqual(""); // }); [ { translateKey: "", translatedText: "translated", fallback: "fallback", output: "fallback", useCaseName: "translateByKeyWithFallback returns fallbackStr for missing translationKey" }, { translateKey: null, translatedText: "translated", fallback: "fallback", output: "fallback", useCaseName: "translateByKeyWithFallback returns fallbackStr for translationKey being null" }, { translateKey: "nameId", translatedText: "nameId", fallback: "fallback", output: "fallback", useCaseName: "translateByKeyWithFallback returns fallbackStr for missing translation" }, // Translated text equals key when there is no translation for a key in messages..json { translateKey: "nameId", translatedText: "nameId", fallback: "", output: "nameId", useCaseName: "translateByKeyWithFallback returns translation key for missing translation and fallback" }, // Translated text equals key when there is no translation for a key in messages..json { translateKey: "nameId", translatedText: "nameId", fallback: null, output: "nameId", useCaseName: "translateByKeyWithFallback returns translation key for missing translation and fallback being null" }, // Translated text equals key when there is no translation for a key in messages..json { translateKey: "nameId", translatedText: "translated", fallback: "fallback", output: "translated", useCaseName: "translateByKeyWithFallback returns translation" }, { translateKey: "nameId", translatedText: "translated", fallback: "", output: "translated", useCaseName: "translateByKeyWithFallback returns translation (no fallback available)" }, { translateKey: "nameId", translatedText: "translated", fallback: null, output: "translated", useCaseName: "translateByKeyWithFallback returns translation (fallback is null)" } ].forEach((testCase, index) => { it(`${testCase.useCaseName}`, () => { utilsService = TestBed.inject(Utils); configServiceSpy = TestBed.inject(ConfigService) as jasmine.SpyObj; translateServiceSpy = TestBed.inject(TranslateService) as jasmine.SpyObj; translateServiceSpy.instant.and.returnValue(testCase.translatedText); expect(utilsService.translateByKeyWithFallback(testCase.translateKey, testCase.fallback)).toEqual(testCase.output); }) }); });