import { BaseRequestOptions, ConnectionBackend, Http, Response, ResponseOptions } from '@angular/http'; import { inject, TestBed } from '@angular/core/testing'; import { MockBackend } from '@angular/http/testing'; import { Observable } from 'rxjs/Observable'; import { ConfigData } from './config.modal'; import { IConfigurationService } from './config.interface'; import { ConfigService } from './config.service'; describe('ConfigService Service', () => { let configService: IConfigurationService; let mockBackend: MockBackend; beforeEach(() => { TestBed.configureTestingModule({ providers: [ { provide: ConfigService, useValue: new MockConfigService()}, MockBackend, BaseRequestOptions, { provide: Http, useFactory: (backend: ConnectionBackend, options: BaseRequestOptions) => new Http(backend, options), deps: [MockBackend, BaseRequestOptions] } ] }); }); it('should return an Observable when get called', () => { expect(TestBed.get(ConfigService).get()).toEqual(jasmine.any(Observable)); }); it('should resolve to default endpoints when get called', () => { let configurationService = TestBed.get(ConfigService); expect(configurationService).not.toBeNull(); configurationService.get().subscribe((data: ConfigData) => { expect(data.aemEndPoint).toBe(''); expect(data.componentsVisibilityFlags['search']).toBe(true, 'Search Value was not set.'); }); }); }); class MockConfigService { returnValue: ConfigData; constructor() { this.initialize(); } private initialize(): void { this.returnValue = JSON.parse(` { "aemEndPoint":"", "healthSafeIdEndPoint": "", "branding": { "logo": "", "secondaryLogo": "", "fontType": "", "gradientColors": [], "graphicOutlineColor": "" }, "componentsVisibilityFlags": { "search": true, "help": true, "multiLingual": true, "messages": true, "profile": true, "cart": true } } `); } get(): Observable { return Observable.create((observer: any) => { observer.next(this.returnValue); observer.complete(); }); } }