import './index.js'; describe('Worker', () => { describe('Component vnWorkerTimeControl', () => { let $httpBackend; let $scope; let $element; let controller; beforeEach(ngModule('worker')); beforeEach(angular.mock.inject(($compile, $rootScope, $stateParams, _$httpBackend_) => { $stateParams.id = 1; $httpBackend = _$httpBackend_; $scope = $rootScope.$new(); $element = $compile('')($scope); controller = $element.controller('vnWorkerTimeControl'); })); afterEach(() => { $scope.$destroy(); $element.remove(); }); describe('hours() setter', () => { it(`should set hours data at it's corresponding week day`, () => { let today = new Date(); 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 } ]; 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); }); }); describe('getWorkedHours() ', () => { fit(`should set the week days and the worked hours in today`, () => { let today = new Date(); $httpBackend.whenRoute('GET', 'WorkerTimeControls/filter').respond({}); $httpBackend.whenRoute('GET', 'WorkerCalendars/absences').respond({}); $httpBackend.whenRoute('GET', 'Workers/:id/getWorkedHours') .respond([ {dated: today}, ]); today.setHours(0, 0, 0, 0); let weekOffset = today.getDay() - 1; if (weekOffset < 0) weekOffset = 6; let started = new Date(today.getTime()); started.setDate(started.getDate() - weekOffset); controller.started = started; let ended = new Date(started.getTime()); ended.setHours(23, 59, 59, 59); ended.setDate(ended.getDate() + 6); controller.ended = ended; controller.getWorkedHours(controller.started, controller.ended); $httpBackend.flush(); expect(controller.started).toEqual(started); }); }); 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); 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'); }); }); describe('formatHours() ', () => { it(`should format a passed timestamp to hours and minutes`, () => { const result = controller.formatHours(3600000); expect(result).toEqual('01:00'); }); }); }); });