119 lines
3.8 KiB
JavaScript
119 lines
3.8 KiB
JavaScript
describe('Component vnCalendar', () => {
|
|
let controller;
|
|
let $element;
|
|
|
|
beforeEach(ngModule('vnCore'));
|
|
|
|
beforeEach(inject(($compile, $rootScope) => {
|
|
$element = $compile(`<vn-calendar></vn-calendar`)($rootScope);
|
|
controller = $element.controller('vnCalendar');
|
|
controller.defaultDate = new Date();
|
|
}));
|
|
|
|
afterEach(() => {
|
|
$element.remove();
|
|
});
|
|
|
|
describe('data() setter', () => {
|
|
it(`should set an array of events and convert string dates to string object, then call repaint() method`, () => {
|
|
spyOn(controller, 'repaint');
|
|
|
|
let currentDate = new Date().toString();
|
|
controller.data = [
|
|
{dated: currentDate, name: 'Event 1'},
|
|
{dated: currentDate, name: 'Event 2'},
|
|
];
|
|
|
|
expect(controller.events[0].dated instanceof Object).toBeTruthy();
|
|
expect(controller.repaint).toHaveBeenCalledWith();
|
|
});
|
|
});
|
|
|
|
describe('addEvent()', () => {
|
|
it(`should add an event to an array of events`, () => {
|
|
controller.events = [];
|
|
controller.addEvent({
|
|
dated: new Date(),
|
|
name: 'My event'
|
|
});
|
|
const firstEvent = controller.events[0];
|
|
|
|
expect(firstEvent.name).toEqual('My event');
|
|
expect(firstEvent.isRemovable).toBeDefined();
|
|
expect(firstEvent.isRemovable).toBeTruthy();
|
|
});
|
|
|
|
it(`should not repeat an event for the same date`, () => {
|
|
const curDate = new Date();
|
|
curDate.setHours(0, 0, 0, 0);
|
|
|
|
controller.events = [{
|
|
dated: curDate,
|
|
name: 'My event 1'
|
|
}];
|
|
controller.addEvent({
|
|
dated: curDate,
|
|
name: 'My event 2'
|
|
});
|
|
|
|
const firstEvent = controller.events[0];
|
|
|
|
expect(controller.events.length).toEqual(2);
|
|
expect(firstEvent.name).toEqual('My event 1');
|
|
});
|
|
});
|
|
|
|
describe('removeEvent()', () => {
|
|
it(`should remove an event from an array of events`, () => {
|
|
const curDate = new Date();
|
|
controller._events = [{
|
|
dated: curDate,
|
|
name: 'My event 1',
|
|
className: 'color'
|
|
}];
|
|
controller.removeEvent(curDate);
|
|
|
|
expect(controller.events.length).toEqual(0);
|
|
});
|
|
});
|
|
|
|
describe('moveNext()', () => {
|
|
it(`should shift to the next n months, then emit a 'moveNext' event`, () => {
|
|
spyOn(controller, 'emit');
|
|
const currentMonth = controller.defaultDate.getMonth();
|
|
let nextMonth = currentMonth + 1;
|
|
|
|
controller.moveNext(1);
|
|
|
|
expect(controller.defaultDate.getMonth()).toEqual(nextMonth);
|
|
expect(controller.emit).toHaveBeenCalledWith('moveNext');
|
|
});
|
|
});
|
|
|
|
describe('movePrevious()', () => {
|
|
it(`should shift to the previous n months, then emit a 'movePrevious' event`, () => {
|
|
spyOn(controller, 'emit');
|
|
const currentMonth = controller.defaultDate.getMonth();
|
|
let previousMonth = currentMonth - 1;
|
|
|
|
controller.movePrevious(1);
|
|
|
|
expect(controller.defaultDate.getMonth()).toEqual(previousMonth);
|
|
expect(controller.emit).toHaveBeenCalledWith('movePrevious');
|
|
});
|
|
});
|
|
|
|
describe('select()', () => {
|
|
it(`should return the selected element, then emit a 'selection' event`, () => {
|
|
spyOn(controller, 'emit');
|
|
const days = [{dated: new Date()}];
|
|
controller.days = days;
|
|
|
|
controller.select(0);
|
|
|
|
expect(controller.emit).toHaveBeenCalledWith('selection', {values: days});
|
|
});
|
|
});
|
|
});
|
|
|