diff --git a/ng2-components/ng2-alfresco-core/src/services/AlfrescoTranslation.service.spec.ts b/ng2-components/ng2-alfresco-core/src/services/AlfrescoTranslation.service.spec.ts new file mode 100644 index 0000000000..4ae34e2822 --- /dev/null +++ b/ng2-components/ng2-alfresco-core/src/services/AlfrescoTranslation.service.spec.ts @@ -0,0 +1,64 @@ +/*! + * @license + * Copyright 2016 Alfresco Software, Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { AlfrescoTranslationService } from '../services/AlfrescoTranslation.service'; +import { Injector } from '@angular/core'; +import { ResponseOptions, Response, XHRBackend, HttpModule } from '@angular/http'; +import { MockBackend, MockConnection } from '@angular/http/testing'; +import { + TranslateModule +} from 'ng2-translate/ng2-translate'; +import {getTestBed, TestBed} from '@angular/core/testing'; + +const mockBackendResponse = (connection: MockConnection, response: string) => { + connection.mockRespond(new Response(new ResponseOptions({body: response}))); +}; + +describe('AlfrescoTranslationService', () => { + let injector: Injector; + let backend: MockBackend; + let alfrescoTranslationService: AlfrescoTranslationService; + let connection: MockConnection; // this will be set when a new connection is emitted from the backend. + + beforeEach(() => { + TestBed.configureTestingModule({ + imports: [HttpModule, TranslateModule.forRoot()], + providers: [ + AlfrescoTranslationService, + {provide: XHRBackend, useClass: MockBackend} + ] + }); + injector = getTestBed(); + backend = injector.get(XHRBackend); + alfrescoTranslationService = injector.get(AlfrescoTranslationService); + backend.connections.subscribe((c: MockConnection) => connection = c); + }); + + it('is defined', () => { + expect(AlfrescoTranslationService).toBeDefined(); + expect(alfrescoTranslationService instanceof AlfrescoTranslationService).toBeTruthy(); + }); + + it('should be able to get translations', () => { + alfrescoTranslationService.use('en'); + alfrescoTranslationService.get('TEST').subscribe((res: string) => { + expect(res).toEqual('This is a test'); + }); + + mockBackendResponse(connection, '{"TEST": "This is a test", "TEST2": "This is another test"}'); + }); +}); diff --git a/ng2-components/ng2-alfresco-core/src/services/AlfrescoTranslation.service.ts b/ng2-components/ng2-alfresco-core/src/services/AlfrescoTranslation.service.ts index 5313ec20fc..71cef189b6 100644 --- a/ng2-components/ng2-alfresco-core/src/services/AlfrescoTranslation.service.ts +++ b/ng2-components/ng2-alfresco-core/src/services/AlfrescoTranslation.service.ts @@ -22,9 +22,9 @@ import { AlfrescoTranslationLoader } from './AlfrescoTranslationLoader.service'; @Injectable() export class AlfrescoTranslationService { - userLang: string = 'en' ; + userLang: string = 'en'; - constructor(private translate: TranslateService) { + constructor(public translate: TranslateService) { this.userLang = translate.getBrowserLang() || 'en'; translate.setDefaultLang(this.userLang); } diff --git a/ng2-components/ng2-alfresco-core/src/services/AlfrescoTranslationLoader.service.spec.ts b/ng2-components/ng2-alfresco-core/src/services/AlfrescoTranslationLoader.service.spec.ts new file mode 100644 index 0000000000..a31feec6b3 --- /dev/null +++ b/ng2-components/ng2-alfresco-core/src/services/AlfrescoTranslationLoader.service.spec.ts @@ -0,0 +1,57 @@ +/*! + * @license + * Copyright 2016 Alfresco Software, Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { TranslateLoader } from 'ng2-translate/ng2-translate'; +import { AlfrescoTranslationLoader } from '../services/AlfrescoTranslationLoader.service'; +import { AlfrescoTranslationService } from '../services/AlfrescoTranslation.service'; +import { Injector } from '@angular/core'; +import { XHRBackend, HttpModule } from '@angular/http'; +import { MockBackend, MockConnection } from '@angular/http/testing'; +import { + TranslateModule +} from 'ng2-translate/ng2-translate'; +import {getTestBed, TestBed} from '@angular/core/testing'; + +describe('TranslateLoader', () => { + let injector: Injector; + let backend: MockBackend; + let alfrescoTranslationService: AlfrescoTranslationService; + let connection: MockConnection; // this will be set when a new connection is emitted from the backend. + + beforeEach(() => { + TestBed.configureTestingModule({ + imports: [HttpModule, TranslateModule.forRoot({ + provide: TranslateLoader, + useClass: AlfrescoTranslationLoader + })], + providers: [ + AlfrescoTranslationService, + {provide: XHRBackend, useClass: MockBackend} + ] + }); + injector = getTestBed(); + backend = injector.get(XHRBackend); + alfrescoTranslationService = injector.get(AlfrescoTranslationService); + backend.connections.subscribe((c: MockConnection) => connection = c); + }); + + it('should be able to provide any TranslateLoader', () => { + expect(alfrescoTranslationService).toBeDefined(); + expect(alfrescoTranslationService.translate.currentLoader).toBeDefined(); + expect(alfrescoTranslationService.translate.currentLoader instanceof AlfrescoTranslationLoader).toBeTruthy(); + }); +});