110 lines
3.9 KiB
JavaScript
110 lines
3.9 KiB
JavaScript
import './index';
|
|
|
|
describe('Worker', () => {
|
|
describe('Component vnWorkerCalendar', () => {
|
|
let $httpBackend;
|
|
let $scope;
|
|
let $element;
|
|
let controller;
|
|
let year = new Date().getFullYear();
|
|
|
|
beforeEach(ngModule('worker'));
|
|
|
|
beforeEach(angular.mock.inject(($componentController, $rootScope, _$httpBackend_) => {
|
|
$scope = $rootScope.$new();
|
|
$httpBackend = _$httpBackend_;
|
|
$element = angular.element('<div></div>');
|
|
controller = $componentController('vnWorkerCalendar', {$element, $scope});
|
|
}));
|
|
|
|
afterEach(() => {
|
|
$element.remove();
|
|
$scope.$destroy();
|
|
});
|
|
|
|
describe('started property', () => {
|
|
it(`should return first day and month of current year`, () => {
|
|
let started = new Date(year, 0, 1);
|
|
|
|
expect(controller.started).toEqual(started);
|
|
});
|
|
});
|
|
|
|
describe('ended property', () => {
|
|
it(`should return last day and month of current year`, () => {
|
|
let ended = new Date(year, 11, 31);
|
|
|
|
expect(controller.ended).toEqual(ended);
|
|
});
|
|
});
|
|
|
|
describe('months property', () => {
|
|
it(`should return an array of twelve months length`, () => {
|
|
const ended = new Date(year, 11, 1);
|
|
|
|
expect(controller.months.length).toEqual(12);
|
|
expect(controller.months[0]).toEqual(controller.started);
|
|
expect(controller.months[11]).toEqual(ended);
|
|
});
|
|
});
|
|
|
|
describe('worker() setter', () => {
|
|
it(`should perform a get query and set the reponse data on the model`, () => {
|
|
let today = new Date();
|
|
|
|
let tomorrow = new Date(today.getTime());
|
|
tomorrow.setDate(tomorrow.getDate() + 1);
|
|
|
|
let yesterday = new Date(today.getTime());
|
|
yesterday.setDate(yesterday.getDate() - 1);
|
|
|
|
$httpBackend.whenRoute('GET', 'WorkerCalendars/absences')
|
|
.respond({
|
|
holidays: [
|
|
{dated: today, detail: {description: 'New year'}},
|
|
{dated: tomorrow, detail: {description: 'Easter'}}
|
|
],
|
|
absences: [
|
|
{dated: today, absenceType: {name: 'Holiday', rgb: '#aaa'}},
|
|
{dated: yesterday, absenceType: {name: 'Leave', rgb: '#bbb'}}
|
|
]
|
|
});
|
|
|
|
controller.worker = {id: 1};
|
|
$httpBackend.flush();
|
|
|
|
let events = controller.events;
|
|
|
|
expect(events[today.getTime()].name).toEqual('Holiday');
|
|
expect(events[tomorrow.getTime()].name).toEqual('Easter');
|
|
expect(events[yesterday.getTime()].name).toEqual('Leave');
|
|
expect(events[yesterday.getTime()].color).toEqual('#bbb');
|
|
});
|
|
});
|
|
|
|
describe('formatDay()', () => {
|
|
it(`should set the day element style`, () => {
|
|
let today = new Date();
|
|
|
|
$httpBackend.whenRoute('GET', 'WorkerCalendars/absences')
|
|
.respond({
|
|
absences: [
|
|
{dated: today, absenceType: {name: 'Holiday', rgb: '#000'}}
|
|
]
|
|
});
|
|
|
|
controller.worker = {id: 1};
|
|
$httpBackend.flush();
|
|
|
|
let dayElement = angular.element('<div><section></section></div>')[0];
|
|
let dayNumber = dayElement.firstElementChild;
|
|
|
|
controller.formatDay(today, dayElement);
|
|
|
|
expect(dayNumber.title).toEqual('Holiday');
|
|
expect(dayNumber.style.backgroundColor).toEqual('rgb(0, 0, 0)');
|
|
});
|
|
});
|
|
});
|
|
});
|