Commit 70becd666510bf463fe558fbd32d183afd9e5704

Authored by Victor Costa
1 parent 1963fbdd

Add tests to translator service

src/app/components/translator/translator.service.spec.ts
@@ -17,14 +17,18 @@ describe("Services", () => { @@ -17,14 +17,18 @@ describe("Services", () => {
17 $q = _$q_; 17 $q = _$q_;
18 })); 18 }));
19 19
20 - it("set available languages when change language", (done) => {  
21 - let component: TranslatorService = new TranslatorService( 20 + function createComponent() {
  21 + return new TranslatorService(
22 <any>helpers.mocks.$translate, 22 <any>helpers.mocks.$translate,
23 <any>helpers.mocks.tmhDynamicLocale, 23 <any>helpers.mocks.tmhDynamicLocale,
24 <any>helpers.mocks.amMoment, 24 <any>helpers.mocks.amMoment,
25 <any>helpers.mocks.angularLoad, 25 <any>helpers.mocks.angularLoad,
26 - helpers.mocks.scopeWithEvents 26 + $rootScope
27 ); 27 );
  28 + }
  29 +
  30 + it("set available languages when change language", (done) => {
  31 + let component: TranslatorService = createComponent();
28 component.availableLanguages = null; 32 component.availableLanguages = null;
29 expect(component.availableLanguages).toBeNull(); 33 expect(component.availableLanguages).toBeNull();
30 component.changeLanguage('en'); 34 component.changeLanguage('en');
@@ -33,13 +37,7 @@ describe(&quot;Services&quot;, () =&gt; { @@ -33,13 +37,7 @@ describe(&quot;Services&quot;, () =&gt; {
33 }); 37 });
34 38
35 it("change the language", (done) => { 39 it("change the language", (done) => {
36 - let component: TranslatorService = new TranslatorService(  
37 - <any>helpers.mocks.$translate,  
38 - <any>helpers.mocks.tmhDynamicLocale,  
39 - <any>helpers.mocks.amMoment,  
40 - <any>helpers.mocks.angularLoad,  
41 - helpers.mocks.scopeWithEvents  
42 - ); 40 + let component: TranslatorService = createComponent();
43 let loadScripPromise = $q.defer(); 41 let loadScripPromise = $q.defer();
44 loadScripPromise.resolve(); 42 loadScripPromise.resolve();
45 component["angularLoad"].loadScript = jasmine.createSpy("loadScript").and.returnValue(loadScripPromise.promise); 43 component["angularLoad"].loadScript = jasmine.createSpy("loadScript").and.returnValue(loadScripPromise.promise);
@@ -57,5 +55,54 @@ describe(&quot;Services&quot;, () =&gt; { @@ -57,5 +55,54 @@ describe(&quot;Services&quot;, () =&gt; {
57 done(); 55 done();
58 }); 56 });
59 57
  58 + it("do nothing when call change language with null", (done) => {
  59 + let component: TranslatorService = createComponent();
  60 + component["angularLoad"].loadScript = jasmine.createSpy("loadScript");
  61 + component["tmhDynamicLocale"].set = jasmine.createSpy("set");
  62 + component["$translate"].use = jasmine.createSpy("use");
  63 +
  64 + component.changeLanguage(null);
  65 +
  66 + expect(component["angularLoad"].loadScript).not.toHaveBeenCalled();
  67 + expect(component["tmhDynamicLocale"].set).not.toHaveBeenCalled();
  68 + expect(component["$translate"].use).not.toHaveBeenCalled();
  69 + done();
  70 + });
  71 +
  72 + it("return the current language used by the translator", (done) => {
  73 + let component: TranslatorService = createComponent();
  74 + component["$translate"].use = jasmine.createSpy("use").and.returnValue("en");
  75 + expect(component.currentLanguage()).toEqual("en");
  76 + expect(component["$translate"].use).toHaveBeenCalled();
  77 + done();
  78 + });
  79 +
  80 + it("call translate service when translate a text", (done) => {
  81 + let component: TranslatorService = createComponent();
  82 + component["$translate"].instant = jasmine.createSpy("instant");
  83 + component.translate("text");
  84 + expect(component["$translate"].instant).toHaveBeenCalledWith("text");
  85 + done();
  86 + });
  87 +
  88 + it("change the language when receive an event", (done) => {
  89 + let component: TranslatorService = createComponent();
  90 + component.changeLanguage = jasmine.createSpy("changeLanguage");
  91 + $rootScope.$emit("$localeChangeSuccess");
  92 + expect(component.changeLanguage).toHaveBeenCalled();
  93 + done();
  94 + });
  95 +
  96 + it("use the translate language when receive a change language event and there is no language previously selected", (done) => {
  97 + let component: TranslatorService = createComponent();
  98 + component.changeLanguage = jasmine.createSpy("changeLanguage");
  99 + component["tmhDynamicLocale"].get = jasmine.createSpy("get").and.returnValue(null);
  100 + component["$translate"].use = jasmine.createSpy("use").and.returnValue("en");
  101 +
  102 + $rootScope.$emit("$localeChangeSuccess");
  103 + expect(component["$translate"].use).toHaveBeenCalled();
  104 + expect(component.changeLanguage).toHaveBeenCalledWith("en");
  105 + done();
  106 + });
60 }); 107 });
61 }); 108 });