import './multi-check.js'; describe('Component vnMultiCheck', () => { let $componentController; let controller; beforeEach(() => { angular.mock.module('client'); }); beforeEach(angular.mock.inject(_$componentController_ => { $componentController = _$componentController_; controller = $componentController('vnMultiCheck', {}); })); describe('models()', () => { it(`should set controller _models property with the argument received`, () => { let argument = 'I am the model'; controller.models = argument; expect(controller._models).toEqual(argument); }); }); describe('checkAll()', () => { it(`should set controller _checkAll property with the argument received then call switchChecks()`, () => { let argument = 'I am the model'; spyOn(controller, 'switchChecks'); controller.checkAll = argument; expect(controller._checkAll).toEqual(argument); expect(controller.switchChecks).toHaveBeenCalledWith(); }); }); describe('switchChecks()', () => { /* it(`should set checked property inside each existing elemenet when begings with no-`, () => { controller.type = {id: 'no-name'}; controller.models = [ {name: 'name'}, {name: null} ]; expect(controller._models[0].checked).not.toBeDefined(); expect(controller._models[1].checked).not.toBeDefined(); controller._checkAll = 1; controller.switchChecks(); expect(controller._models[0].checked).toBeFalsy(); expect(controller._models[1].checked).toBeTruthy(); }); it(`should set checked property inside each existing elemenet when begings with equal-`, () => { controller.type = {id: 'equal-name', name: 'name'}; controller.models = [ {name: null}, {name: 'name'} ]; expect(controller._models[0].checked).not.toBeDefined(); expect(controller._models[1].checked).not.toBeDefined(); controller._checkAll = 1; controller.switchChecks(); expect(controller._models[0].checked).toBeFalsy(); expect(controller._models[1].checked).toBeTruthy(); }); it(`should set checked property inside each existing elemenet when begings with anything but any, all, no- or equal-`, () => { controller.type = {id: 'name'}; controller.models = [ {name: null}, {name: 'name'} ]; expect(controller._models[0].checked).not.toBeDefined(); expect(controller._models[1].checked).not.toBeDefined(); controller._checkAll = 1; controller.switchChecks(); expect(controller._models[0].checked).toBeFalsy(); expect(controller._models[1].checked).toBeTruthy(); }); */ describe('when id is any', () => { it('should set element checked property based on controller._checkAll', () => { controller.type = {id: 'any'}; controller.models = [ {name: 'name'} ]; expect(controller._models[0].checked).not.toBeDefined(); controller._checkAll = 1; controller.switchChecks(); expect(controller._models[0].checked).toBeTruthy(); controller._checkAll = 0; controller.switchChecks(); expect(controller._models[0].checked).toBeFalsy(); controller._checkAll = 2; controller.switchChecks(); expect(controller._models[0].checked).toBeFalsy(); }); }); describe('when id is all', () => { it('should set element checked property based on controller._checkAll property', () => { controller.type = {id: 'all'}; controller.models = [ {name: 'name'} ]; expect(controller._models[0].checked).not.toBeDefined(); controller._checkAll = 1; controller.switchChecks(); expect(controller._models[0].checked).toBeTruthy(); controller._checkAll = 0; controller.switchChecks(); expect(controller._models[0].checked).toBeFalsy(); controller._checkAll = 2; controller.switchChecks(); expect(controller._models[0].checked).toBeFalsy(); }); }); }); describe('$onChanges()', () => { it('should set controller.type to empty object and checkAll to zero', () => { controller.type = {id: 'all'}; controller._checkAll = 1; controller.$onChanges(); expect(controller.type).toEqual({}); expect(controller._checkAll).toEqual(0); }); }); /* describe('$doCheck()', () => { it('should set controller.type to empty object and checkAll based on controller.type.id', () => { controller.type = {id: 'all'}; controller._checkAll = 0; controller.$doCheck(); expect(controller.type).toEqual({}); expect(controller._checkAll).toEqual(1); controller.type = {id: 'any'}; controller.$doCheck(); expect(controller.type).toEqual({}); expect(controller._checkAll).toEqual(0); controller.type = {id: 'any other id name'}; controller.$doCheck(); expect(controller.type).toEqual({}); expect(controller._checkAll).toEqual(2); }); }); */ });