From 636d2dd195db6e6d455babed7078fb6394e1bb1b Mon Sep 17 00:00:00 2001 From: Adam Shaw Date: Mon, 26 May 2014 18:23:46 -0700 Subject: [PATCH] tests for select callback --- tests/automated/select-callback.js | 187 +++++++++++++++++++++++++++++ 1 file changed, 187 insertions(+) create mode 100644 tests/automated/select-callback.js diff --git a/tests/automated/select-callback.js b/tests/automated/select-callback.js new file mode 100644 index 0000000..68c7cdb --- /dev/null +++ b/tests/automated/select-callback.js @@ -0,0 +1,187 @@ +describe('select callback', function() { + + var options; + + beforeEach(function() { + affix('#cal'); + options = { + defaultDate: '2014-05-25', + selectable: true + }; + }); + + afterEach(function() { + $('#cal').fullCalendar('destroy'); + }); + + [ false, true ].forEach(function(isRTL) { + describe('when isRTL is ' + isRTL, function() { + beforeEach(function() { + options.isRTL = isRTL; + }); + describe('when in month view', function() { + beforeEach(function() { + options.defaultView = 'month'; + }); + it('gets fired correctly when the user selects cells', function(done) { + options.select = function(start, end, jsEvent, view) { + expect(moment.isMoment(start)).toEqual(true); + expect(moment.isMoment(end)).toEqual(true); + expect(typeof jsEvent).toEqual('object'); // TODO: more descrimination + expect(typeof view).toEqual('object'); // " + expect(start.hasTime()).toEqual(false); + expect(end.hasTime()).toEqual(false); + expect(start).toEqualMoment('2014-04-28'); + expect(end).toEqualMoment('2014-05-07'); + }; + spyOn(options, 'select').and.callThrough(); + $('#cal').fullCalendar(options); + $('.fc-day[data-date="2014-04-28"]').simulate('drag-n-drop', { + dropTarget: '.fc-day[data-date="2014-05-06"]', + interpolation: { + stepCount: 10, + duration: 100 + }, + callback: function() { + expect(options.select).toHaveBeenCalled(); + done(); + } + }); + }); + it('gets fired correctly when the user selects just one cell', function(done) { + options.select = function(start, end, jsEvent, view) { + expect(moment.isMoment(start)).toEqual(true); + expect(moment.isMoment(end)).toEqual(true); + expect(typeof jsEvent).toEqual('object'); // TODO: more descrimination + expect(typeof view).toEqual('object'); // " + expect(start.hasTime()).toEqual(false); + expect(end.hasTime()).toEqual(false); + expect(start).toEqualMoment('2014-04-28'); + expect(end).toEqualMoment('2014-04-29'); + }; + spyOn(options, 'select').and.callThrough(); + $('#cal').fullCalendar(options); + $('.fc-day[data-date="2014-04-28"]').simulate('drag-n-drop', { + dropTarget: '.fc-day[data-date="2014-04-28"]', + interpolation: { + stepCount: 10, + duration: 100 + }, + callback: function() { + expect(options.select).toHaveBeenCalled(); + done(); + } + }); + }); + }); + + describe('when in agendaWeek view', function() { + beforeEach(function() { + options.defaultView = 'agendaWeek'; + }); + describe('when selecting all-day slots', function() { + it('gets fired correctly when the user selects cells', function(done) { + options.select = function(start, end, jsEvent, view) { + expect(moment.isMoment(start)).toEqual(true); + expect(moment.isMoment(end)).toEqual(true); + expect(typeof jsEvent).toEqual('object'); // TODO: more descrimination + expect(typeof view).toEqual('object'); // " + expect(start.hasTime()).toEqual(false); + expect(end.hasTime()).toEqual(false); + expect(start).toEqualMoment('2014-05-28'); + expect(end).toEqualMoment('2014-05-30'); + }; + spyOn(options, 'select').and.callThrough(); + $('#cal').fullCalendar(options); + $('.fc-agenda-allday .fc-day-content').simulate('drag-n-drop', { // middle will be 2014-05-28 + dx: $('.fc-sun').outerWidth() * (isRTL ? -1 : 1), // the width of one column + interpolation: { + stepCount: 10, + duration: 100 + }, + callback: function() { + expect(options.select).toHaveBeenCalled(); + done(); + } + }); + }); + it('gets fired correctly when the user selects a single cell', function(done) { + options.select = function(start, end, jsEvent, view) { + expect(moment.isMoment(start)).toEqual(true); + expect(moment.isMoment(end)).toEqual(true); + expect(typeof jsEvent).toEqual('object'); // TODO: more descrimination + expect(typeof view).toEqual('object'); // " + expect(start.hasTime()).toEqual(false); + expect(end.hasTime()).toEqual(false); + expect(start).toEqualMoment('2014-05-28'); + expect(end).toEqualMoment('2014-05-29'); + }; + spyOn(options, 'select').and.callThrough(); + $('#cal').fullCalendar(options); + $('.fc-agenda-allday .fc-day-content').simulate('drag-n-drop', { // middle will be 2014-05-28 + interpolation: { + stepCount: 10, + duration: 100 + }, + callback: function() { + expect(options.select).toHaveBeenCalled(); + done(); + } + }); + }); + }); + describe('when selecting timed slots', function(done) { + it('gets fired correctly when the user selects slots', function(done) { + options.select = function(start, end, jsEvent, view) { + expect(moment.isMoment(start)).toEqual(true); + expect(moment.isMoment(end)).toEqual(true); + expect(typeof jsEvent).toEqual('object'); // TODO: more descrimination + expect(typeof view).toEqual('object'); // " + expect(start.hasTime()).toEqual(true); + expect(end.hasTime()).toEqual(true); + expect(start).toEqualMoment('2014-05-28T09:00:00'); + expect(end).toEqualMoment('2014-05-28T10:30:00'); + }; + spyOn(options, 'select').and.callThrough(); + $('#cal').fullCalendar(options); + $('tr.fc-slot18 td').simulate('drag-n-drop', { // middle will be 2014-05-28T09:00:00 + dy: $('tr.fc-slot18 td').outerHeight() * 2, // move down two slots + interpolation: { + stepCount: 10, + duration: 100 + }, + callback: function() { + expect(options.select).toHaveBeenCalled(); + done(); + } + }); + }); + it('gets fired correctly when the user selects a single slot', function(done) { + options.select = function(start, end, jsEvent, view) { + expect(moment.isMoment(start)).toEqual(true); + expect(moment.isMoment(end)).toEqual(true); + expect(typeof jsEvent).toEqual('object'); // TODO: more descrimination + expect(typeof view).toEqual('object'); // " + expect(start.hasTime()).toEqual(true); + expect(end.hasTime()).toEqual(true); + expect(start).toEqualMoment('2014-05-28T09:00:00'); + expect(end).toEqualMoment('2014-05-28T09:30:00'); + }; + spyOn(options, 'select').and.callThrough(); + $('#cal').fullCalendar(options); + $('tr.fc-slot18 td').simulate('drag-n-drop', { // middle will be 2014-05-28T09:00:00 + interpolation: { + stepCount: 10, + duration: 100 + }, + callback: function() { + expect(options.select).toHaveBeenCalled(); + done(); + } + }); + }); + }); + }); + }); + }); +}); \ No newline at end of file