From 56ae9f2acdec4dedeb3e8f6f889c3436be471ccc Mon Sep 17 00:00:00 2001 From: Manuel Friedli Date: Fri, 7 Sep 2018 14:01:58 +0200 Subject: [PATCH] Add specs for InputComponentManagerService --- .../input-component-manager.service.spec.ts | 60 ++++++++++++++++++- src/app/input-component-manager.service.ts | 3 + 2 files changed, 61 insertions(+), 2 deletions(-) diff --git a/src/app/input-component-manager.service.spec.ts b/src/app/input-component-manager.service.spec.ts index b15c3bc..59d3f25 100644 --- a/src/app/input-component-manager.service.spec.ts +++ b/src/app/input-component-manager.service.spec.ts @@ -1,6 +1,7 @@ -import { TestBed, inject } from '@angular/core/testing'; +import {inject, TestBed} from '@angular/core/testing'; -import { InputComponentManagerService } from './input-component-manager.service'; +import {InputComponentManagerService} from './input-component-manager.service'; +import {Step} from './step'; describe('InputComponentManagerService', () => { beforeEach(() => { @@ -12,4 +13,59 @@ describe('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); + })); }); diff --git a/src/app/input-component-manager.service.ts b/src/app/input-component-manager.service.ts index 45e8d02..5e6cc14 100644 --- a/src/app/input-component-manager.service.ts +++ b/src/app/input-component-manager.service.ts @@ -11,6 +11,9 @@ export class InputComponentManagerService { } public register(component: Step): void { + if (!component) { + throw new Error('component to add must not be empty or undefined'); + } this.components.push(component); }