diff --git a/modules/worker/front/time-control/index.spec.js b/modules/worker/front/time-control/index.spec.js index 8c2c62db96..abfe955806 100644 --- a/modules/worker/front/time-control/index.spec.js +++ b/modules/worker/front/time-control/index.spec.js @@ -1,122 +1,115 @@ import './index.js'; -describe('Worker', () => { - describe('Component vnWorkerTimeControl', () => { - let $httpBackend; - let $scope; - let $element; - let controller; - beforeEach(ngModule('worker')); +describe('Component vnWorkerTimeControl', () => { + let $httpBackend; + let $scope; + let $element; + let controller; - beforeEach(angular.mock.inject(($compile, $rootScope, $stateParams, _$httpBackend_) => { - $stateParams.id = 1; - $httpBackend = _$httpBackend_; - $scope = $rootScope.$new(); - $element = $compile('')($scope); - controller = $element.controller('vnWorkerTimeControl'); - })); + beforeEach(ngModule('worker')); - afterEach(() => { - $scope.$destroy(); - $element.remove(); + beforeEach(angular.mock.inject(($componentController, $compile, $rootScope, $stateParams, _$httpBackend_) => { + $stateParams.id = 1; + $httpBackend = _$httpBackend_; + $scope = $rootScope.$new(); + $element = angular.element(''); + controller = $componentController('vnWorkerTimeControl', {$element, $scope}); + })); + + describe('date() setter', () => { + it(`should set the weekDays, the date in the controller and call fetchHours`, () => { + let today = new Date(); + spyOn(controller, 'fetchHours'); + + controller.date = today; + + expect(controller._date).toEqual(today); + expect(controller.started).toBeDefined(); + expect(controller.ended).toBeDefined(); + expect(controller.weekDays.length).toEqual(7); + expect(controller.fetchHours).toHaveBeenCalledWith(); }); + }); - describe('hours() setter', () => { - it(`should set hours data at it's corresponding week day`, () => { - let today = new Date(); + describe('hours() setter', () => { + it(`should set hours data at it's corresponding week day`, () => { + let today = new Date(); + spyOn(controller, 'fetchHours'); - controller.date = today; + controller.date = today; - let hours = [ - { - id: 1, - timed: controller.started.toJSON(), - userFk: 1 - }, { - id: 2, - timed: today.toJSON(), - userFk: 1 - }, { - id: 3, - timed: today.toJSON(), - userFk: 1 - } - ]; + let hours = [ + { + id: 1, + timed: controller.started.toJSON(), + userFk: 1 + }, { + id: 2, + timed: controller.ended.toJSON(), + userFk: 1 + }, { + id: 3, + timed: controller.ended.toJSON(), + userFk: 1 + } + ]; - controller.hours = hours; + controller.hours = hours; - let todayInWeek = today.getDay() - 1; - - expect(controller.weekDays.length).toEqual(7); - expect(controller.weekDays[0].hours.length).toEqual(1); - expect(controller.weekDays[todayInWeek].hours.length).toEqual(2); - }); + expect(controller.weekDays.length).toEqual(7); + expect(controller.weekDays[0].hours.length).toEqual(1); + expect(controller.weekDays[6].hours.length).toEqual(2); }); + }); - describe('getWorkedHours() ', () => { - fit(`should set the week days and the worked hours in today`, () => { - let today = new Date(); + describe('getWorkedHours() ', () => { + it(`should `, () => { + let today = new Date(); + spyOn(controller, 'fetchHours'); - $httpBackend.whenRoute('GET', 'WorkerTimeControls/filter').respond({}); - $httpBackend.whenRoute('GET', 'WorkerCalendars/absences').respond({}); - $httpBackend.whenRoute('GET', 'Workers/:id/getWorkedHours') - .respond([ - {dated: today}, - ]); + controller.date = today; - today.setHours(0, 0, 0, 0); + let sixHoursInSeconds = 6 * 60 * 60; + let tenHoursInSeconds = 10 * 60 * 60; + let response = [ + { + dated: today, + expectedHours: sixHoursInSeconds, + workedHours: tenHoursInSeconds, - let weekOffset = today.getDay() - 1; - if (weekOffset < 0) weekOffset = 6; + }, + ]; + $httpBackend.whenRoute('GET', 'Workers/:id/getWorkedHours') + .respond(response); - let started = new Date(today.getTime()); - started.setDate(started.getDate() - weekOffset); - controller.started = started; + today.setHours(0, 0, 0, 0); - let ended = new Date(started.getTime()); - ended.setHours(23, 59, 59, 59); - ended.setDate(ended.getDate() + 6); - controller.ended = ended; + let weekOffset = today.getDay() - 1; + if (weekOffset < 0) weekOffset = 6; - controller.getWorkedHours(controller.started, controller.ended); + let started = new Date(today.getTime()); + started.setDate(started.getDate() - weekOffset); + controller.started = started; - $httpBackend.flush(); + let ended = new Date(started.getTime()); + ended.setHours(23, 59, 59, 59); + ended.setDate(ended.getDate() + 6); + controller.ended = ended; - expect(controller.started).toEqual(started); - }); - }); + controller.getWorkedHours(controller.started, controller.ended); - describe('weekTotalHours() ', () => { - it(`should return a total worked hours from a week`, () => { - const hourOne = new Date(); - hourOne.setHours(7, 0, 0, 0); - const hourTwo = new Date(); - hourTwo.setHours(10, 0, 0, 0); - const hourThree = new Date(); - hourThree.setHours(10, 20, 0, 0); - const hourFour = new Date(); - hourFour.setHours(15, 0, 0, 0); + $httpBackend.flush(); - const weekday = {hours: [ - {id: 1, timed: hourOne}, - {id: 2, timed: hourTwo}, - {id: 3, timed: hourThree}, - {id: 4, timed: hourFour} - ]}; - controller.weekDays = [weekday]; - - const weekdayHours = controller.getWeekdayTotalHours(weekday); - const weekHours = controller.weekTotalHours; - - expect(weekdayHours).toEqual('08:00'); - expect(weekHours).toEqual('08:00'); - }); + expect(controller.weekDays.length).toEqual(7); + expect(controller.weekDays[weekOffset].expectedHours).toEqual(response[0].expectedHours); + expect(controller.weekDays[weekOffset].workedHours).toEqual(response[0].workedHours); + expect(controller.weekTotalHours).toEqual('10:00'); }); describe('formatHours() ', () => { it(`should format a passed timestamp to hours and minutes`, () => { - const result = controller.formatHours(3600000); + const result = controller.formatHours(3600); expect(result).toEqual('01:00'); });