import './step-control.js'; describe('Component vnStepControl', () => { let controller; let $state; beforeEach(angular.mock.module('vnCore', $translateProvider => { $translateProvider.translations('en', {}); })); beforeEach(angular.mock.inject(($componentController, _$state_) => { $state = _$state_; spyOn($state, 'go'); controller = $componentController('vnStepControl', {$state: $state}); })); describe('steps()', () => { it(`should do nothing if called without args`, () => { controller.steps = undefined; expect(controller._steps).not.toEqual(null); }); it(`should set _steps property in the controller and call state.go()`, () => { controller.$state.current.name = 'test'; controller.steps = [{state: 'nothing'}, {state: 'test'}]; expect(controller._steps).toEqual([{state: 'nothing'}, {state: 'test'}]); expect(controller.currentStepIndex).toEqual(1); expect(controller.$state.go).toHaveBeenCalledWith('nothing'); }); }); describe('currentState()', () => { it(`should call the go method if the's no onStepChange`, () => { controller.currentState = 'hello state!'; expect(controller.$state.go).toHaveBeenCalledWith('hello state!'); }); it(`should call the onStepChange method then return false and never call the go method`, () => { controller.onStepChange = jasmine.createSpy(controller, 'onStepChange').and.returnValue(false); controller.currentState = 'something'; expect(controller.onStepChange).toHaveBeenCalledWith({state: 'something'}); expect(controller.$state.go).not.toHaveBeenCalledWith('something'); }); it(`should call the onStepChange method then return true and finally call the go method`, () => { controller.onStepChange = jasmine.createSpy(controller, 'onStepChange').and.returnValue(true); controller.currentState = 'something'; expect(controller.onStepChange).toHaveBeenCalledWith({state: 'something'}); expect(controller.$state.go).toHaveBeenCalledWith('something'); }); }); describe('currentStepIndex()', () => { it('should get the current state index from an Array of states', () => { controller.$state.current.name = 'iam_a_current_state'; controller.steps = [{state: 'iam_not_current_state'}, {state: 'iam_a_current_state'}]; let result = controller.currentStepIndex; expect(result).toEqual(1); }); }); });