import {inject, TestBed} from '@angular/core/testing'; import {InputComponentManagerService} from './input-component-manager.service'; import {Step} from './step'; describe('InputComponentManagerService', () => { beforeEach(() => { TestBed.configureTestingModule({ providers: [InputComponentManagerService] }); }); it('should be created', inject([InputComponentManagerService], (service: InputComponentManagerService) => { expect(service).toBeTruthy(); })); it('should create a component if requesting the first one', inject([InputComponentManagerService], (service: InputComponentManagerService) => { const firstStep: Step = service.getFirst(); expect(firstStep).toBeTruthy(); expect(service.getFirst()).toBe(firstStep); expect(service.getAllComponents().length).toEqual(1); }) ); it('must not add a null Step', inject([InputComponentManagerService], (service: InputComponentManagerService) => { expect(() => service.register(null)).toThrowError(); expect(service.getAllComponents().length).toEqual(0); })); it('must not add an undefined Step', inject([InputComponentManagerService], (service: InputComponentManagerService) => { expect(() => service.register(undefined)).toThrowError(); expect(service.getAllComponents().length).toEqual(0); })); it('should register new Steps', inject([InputComponentManagerService], (service: InputComponentManagerService) => { service.register(new Step(99)); expect(service.getAllComponents().length).toEqual(1); service.register(new Step(100)); expect(service.getAllComponents().length).toEqual(2); })); it('should return a new step if the next step doesn\'t exist', inject([InputComponentManagerService], (service: InputComponentManagerService) => { // arrange const firstStep: Step = new Step(0); service.register(firstStep); // act const nextStep: Step = service.getNext(firstStep); // assert expect(service.getAllComponents().length).toEqual(2); expect(nextStep.index).toEqual(1); }) ); it('should return the next step if requested', inject([InputComponentManagerService], (service: InputComponentManagerService) => { // arrange const firstStep: Step = new Step(0); const nextStep: Step = new Step(1); service.register(firstStep); service.register(nextStep); // act const requestedStep: Step = service.getNext(firstStep); // assert expect(service.getAllComponents().length).toEqual(2); expect(requestedStep).toEqual(nextStep); })); });