diff --git a/client/core/src/watcher/watcher.spec.js b/client/core/src/watcher/watcher.spec.js new file mode 100644 index 000000000..d47a7523a --- /dev/null +++ b/client/core/src/watcher/watcher.spec.js @@ -0,0 +1,69 @@ +import './watcher.js'; + +describe('Component vnWatcher', () => { + let $componentController; + let $scope; + let $element; + let $state; + let $transitions; + let $httpBackend; + let vnApp; + let $translate; + + beforeEach(() => { + angular.mock.module('client'); + }); + + beforeEach(angular.mock.inject((_$componentController_, $rootScope, _$state_, _$transitions_, _$httpBackend_, _vnApp_, _$translate_) => { + $componentController = _$componentController_; + $scope = $rootScope.$new(); + $element = angular.element('
'); + $state = _$state_; + vnApp = _vnApp_; + $transitions = _$transitions_; + $httpBackend = _$httpBackend_; + $translate = _$translate_; + })); + + describe('$onInit() ', () => { + it(`should call fetchData() if controllers get and url properties are defined`, () => { + let controller = $componentController('vnWatcher', {$scope, $element, $state, vnApp, $transitions, $httpBackend, $translate}); + controller.get = () => {}; + controller.url = 'test.com'; + spyOn(controller, 'fetchData'); + controller.$onInit(); + + expect(controller.fetchData).toHaveBeenCalledWith(); + }); + + it(`should throw an error if $onInit is called without url defined`, () => { + let controller = $componentController('vnWatcher', {$scope, $element, $state, vnApp, $transitions, $httpBackend, $translate}); + controller.get = () => {}; + + expect(function() { + controller.$onInit(); + }).toThrow(new Error('Error: Parameter url ommitted')); + }); + }); + + describe('$onChanges() ', () => { + it(`should call updateOriginalData() if controllers data is defined`, () => { + let controller = $componentController('vnWatcher', {$scope, $element, $state, vnApp, $transitions, $httpBackend, $translate}); + controller.data = []; + spyOn(controller, 'updateOriginalData'); + controller.$onChanges(); + + expect(controller.updateOriginalData).toHaveBeenCalledWith(); + }); + }); + + describe('$onDestroy() ', () => { + it(`should allways call deregisterCallback()`, () => { + let controller = $componentController('vnWatcher', {$scope, $element, $state, vnApp, $transitions, $httpBackend, $translate}); + spyOn(controller, 'deregisterCallback'); + controller.$onDestroy(); + + expect(controller.deregisterCallback).toHaveBeenCalledWith(); + }); + }); +});