import { TestBed } from '@angular/core/testing'; import { ExternalSoftwareDefinitionService } from './external-software-definition.service'; import { PlatformService } from './platform.service'; import Spy = jasmine.Spy; class PlatformServiceMock { platform: string; isWindows() { return this.platform == 'windows'; } isLinux() { return this.platform == 'linux'; } isDarwin() { return this.platform == 'darwin'; } } describe('ExternalSoftwareDefinitionService', () => { let platformServiceMock: PlatformServiceMock; let service: ExternalSoftwareDefinitionService; beforeEach(() => { platformServiceMock = new PlatformServiceMock(); }); beforeEach(() => TestBed.configureTestingModule({ providers: [ ExternalSoftwareDefinitionService, { provide: PlatformService, useValue: platformServiceMock} ] })); beforeEach(() => { service = TestBed.get(ExternalSoftwareDefinitionService); }) it('should be created', () => { expect(service).toBeTruthy(); }); it('should return list for windows', () => { let software = service.getForWindows(); expect(software.length).toEqual(1); }); it('should return list for linux', () => { let software = service.getForLinux(); expect(software.length).toEqual(0); }); it('should return list for darwin', () => { let software = service.getForDarwin(); expect(software.length).toEqual(0); }); describe('ExternalSoftwareDefinitionService.get', () => { let windowsSpy: Spy; let darwinSpy: Spy; let linuxSpy: Spy; beforeEach(() => { windowsSpy = spyOn(service, 'getForWindows').and.callThrough(); darwinSpy = spyOn(service, 'getForDarwin').and.callThrough(); linuxSpy = spyOn(service, 'getForLinux').and.callThrough(); }); it('should return list when on windows', () => { platformServiceMock.platform = 'windows'; expect(service.get()).toBeDefined(); expect(windowsSpy).toHaveBeenCalled(); expect(darwinSpy).not.toHaveBeenCalled(); expect(linuxSpy).not.toHaveBeenCalled(); }); it('should return list when on linux', () => { platformServiceMock.platform = 'linux'; expect(service.get()).toBeDefined(); expect(windowsSpy).not.toHaveBeenCalled(); expect(darwinSpy).not.toHaveBeenCalled(); expect(linuxSpy).toHaveBeenCalled(); }); it('should return list when on darwin', () => { platformServiceMock.platform = 'darwin'; expect(service.get()).toBeDefined(); expect(windowsSpy).not.toHaveBeenCalled(); expect(darwinSpy).toHaveBeenCalled(); expect(linuxSpy).not.toHaveBeenCalled(); }); }) });