forked from fullcalendar/fullcalendar
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
2 changed files
with
511 additions
and
28 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,32 +1,322 @@ | ||
describe('eventDrop', function() { | ||
|
||
// can't do event dragging yet. | ||
// need to work out how fullCalendar is intercepting events. | ||
/* | ||
xdescribe('when event is dragged from one cell to another', function() { | ||
it('should move to the new cell', function() { | ||
var eventName = 'xyzAllDayEvent'; | ||
$('#calendar').fullCalendar({ | ||
var options; | ||
|
||
beforeEach(function() { | ||
options = { | ||
defaultDate: '2014-06-11', | ||
editable: true | ||
}); | ||
$('#calendar').fullCalendar('addEventSource', { | ||
events: [ | ||
{ | ||
title: eventName, | ||
start: new Date() | ||
} | ||
] | ||
}); | ||
var el = $('div .fc-event'); | ||
var offsetBefore = el.offset(); | ||
dump(offsetBefore); | ||
var options = { | ||
dx: 200, | ||
dy: 0, | ||
moves: 10, | ||
handle: 'corner' | ||
}; | ||
el.simulate('drag', options); | ||
dump(el.offset()); | ||
affix('#cal'); | ||
}); | ||
|
||
afterEach(function() { | ||
$('#cal').fullCalendar('destroy'); | ||
}); | ||
|
||
describe('when in month view', function() { | ||
beforeEach(function() { | ||
options.defaultView = 'month'; | ||
}); | ||
|
||
describe('when dragging an all-day event to another day', function() { | ||
it('should be given correct arguments, with whole-day delta', function(done) { | ||
options.events = [ { | ||
title: 'all-day event', | ||
start: '2014-06-11', | ||
allDay: true | ||
} ]; | ||
var called = false; | ||
options.eventAfterAllRender = function() { | ||
if (!called) { // because event rerendering will happen upon drop | ||
$('.fc-event') | ||
.simulate('mouseover') // for our dumb optimization | ||
.simulate('drag-n-drop', { | ||
dx: $('.fc-day').width() * 2, | ||
dy: $('.fc-day').height(), | ||
interpolation: { | ||
stepCount: 10, | ||
duration: 100 | ||
} | ||
}); | ||
called = true; | ||
} | ||
}; | ||
options.eventDrop = function(event, delta, revertFunc, jsEvent, uiEvent, view) { | ||
// only type-check arguments for basic view once here | ||
expect(typeof event).toBe('object'); // TODO: discriminate more | ||
expect(moment.isDuration(delta)).toBe(true); | ||
expect(typeof revertFunc).toBe('function'); | ||
expect(typeof jsEvent).toBe('object'); // TODO: discriminate more | ||
expect(typeof uiEvent).toBe('object'); // " | ||
expect(typeof view).toBe('object'); // " | ||
|
||
expect(delta.asDays()).toBe(9); | ||
expect(delta.hours()).toBe(0); | ||
expect(delta.minutes()).toBe(0); | ||
expect(delta.seconds()).toBe(0); | ||
expect(delta.milliseconds()).toBe(0); | ||
|
||
expect(event.start).toEqualMoment('2014-06-20'); | ||
expect(event.end).toBeNull(); | ||
revertFunc(); | ||
expect(event.start).toEqualMoment('2014-06-11'); | ||
expect(event.end).toBeNull(); | ||
|
||
done(); | ||
}; | ||
$('#cal').fullCalendar(options); | ||
}); | ||
}); | ||
|
||
describe('when gragging a timed event to another day', function() { | ||
it('should be given correct arguments, with whole-day delta', function(done) { | ||
options.events = [ { | ||
title: 'timed event', | ||
start: '2014-06-11T06:00:00', | ||
allDay: false | ||
} ]; | ||
var called = false; | ||
options.eventAfterAllRender = function() { | ||
if (!called) { // because event rerendering will happen upon drop | ||
$('.fc-event') | ||
.simulate('mouseover') // for our dumb optimization | ||
.simulate('drag-n-drop', { | ||
dx: $('.fc-day').width() * -2, | ||
dy: $('.fc-day').height(), | ||
interpolation: { | ||
stepCount: 10, | ||
duration: 100 | ||
} | ||
}); | ||
called = true; | ||
} | ||
}; | ||
options.eventDrop = function(event, delta, revertFunc, jsEvent, uiEvent, view) { | ||
expect(delta.asDays()).toBe(5); | ||
expect(delta.hours()).toBe(0); | ||
expect(delta.minutes()).toBe(0); | ||
expect(delta.seconds()).toBe(0); | ||
expect(delta.milliseconds()).toBe(0); | ||
|
||
expect(event.start).toEqualMoment('2014-06-16T06:00:00'); | ||
expect(event.end).toBeNull(); | ||
revertFunc(); | ||
expect(event.start).toEqualMoment('2014-06-11T06:00:00'); | ||
expect(event.end).toBeNull(); | ||
|
||
done(); | ||
}; | ||
$('#cal').fullCalendar(options); | ||
}); | ||
}); | ||
}); | ||
|
||
describe('when in agenda view', function() { | ||
beforeEach(function() { | ||
options.defaultView = 'agendaWeek'; | ||
}); | ||
|
||
describe('when dragging a timed event to another time on a different day', function() { | ||
it('should be given correct arguments and delta with days/time', function(done) { | ||
options.events = [ { | ||
title: 'timed event', | ||
start: '2014-06-11T06:00:00', | ||
allDay: false | ||
} ]; | ||
var called = false; | ||
options.eventAfterAllRender = function() { | ||
if (!called) { // because event rerendering will happen upon drop | ||
$('.fc-event') | ||
.simulate('mouseover') // for our dumb optimization | ||
.simulate('drag-n-drop', { | ||
dx: $('th.fc-wed').width(), // 1 day | ||
dy: $('tr.fc-slot1').height() * 3, // 1.5 hours | ||
interpolation: { | ||
stepCount: 10, | ||
duration: 100 | ||
} | ||
}); | ||
called = true; | ||
} | ||
}; | ||
options.eventDrop = function(event, delta, revertFunc, jsEvent, uiEvent, view) { | ||
// only type-check arguments for agenda view once here | ||
expect(typeof event).toBe('object'); // TODO: discriminate more | ||
expect(moment.isDuration(delta)).toBe(true); | ||
expect(typeof revertFunc).toBe('function'); | ||
expect(typeof jsEvent).toBe('object'); // TODO: discriminate more | ||
expect(typeof uiEvent).toBe('object'); // " | ||
expect(typeof view).toBe('object'); // " | ||
|
||
expect(delta.days()).toBe(1); | ||
expect(delta.hours()).toBe(1); | ||
expect(delta.minutes()).toBe(30); | ||
expect(delta.seconds()).toBe(0); | ||
expect(delta.milliseconds()).toBe(0); | ||
|
||
expect(event.start).toEqualMoment('2014-06-12T07:30:00'); | ||
expect(event.end).toBeNull(); | ||
revertFunc(); | ||
expect(event.start).toEqualMoment('2014-06-11T06:00:00'); | ||
expect(event.end).toBeNull(); | ||
|
||
done(); | ||
}; | ||
$('#cal').fullCalendar(options); | ||
}); | ||
}); | ||
|
||
describe('when dragging an all-day event to another all-day', function() { | ||
it('should be given correct arguments, with whole-day delta', function(done) { | ||
options.events = [ { | ||
title: 'all-day event', | ||
start: '2014-06-11', | ||
allDay: true | ||
} ]; | ||
var called = false; | ||
options.eventAfterAllRender = function() { | ||
if (!called) { // because event rerendering will happen upon drop | ||
$('.fc-event') | ||
.simulate('mouseover') // for our dumb optimization | ||
.simulate('drag-n-drop', { | ||
dx: $('th.fc-wed').width() * 2, // 2 days | ||
interpolation: { | ||
stepCount: 10, | ||
duration: 100 | ||
} | ||
}); | ||
called = true; | ||
} | ||
}; | ||
options.eventDrop = function(event, delta, revertFunc, jsEvent, uiEvent, view) { | ||
expect(delta.days()).toBe(2); | ||
expect(delta.hours()).toBe(0); | ||
expect(delta.minutes()).toBe(0); | ||
expect(delta.seconds()).toBe(0); | ||
expect(delta.milliseconds()).toBe(0); | ||
|
||
expect(event.start).toEqualMoment('2014-06-13'); | ||
expect(event.end).toBeNull(); | ||
revertFunc(); | ||
expect(event.start).toEqualMoment('2014-06-11'); | ||
expect(event.end).toBeNull(); | ||
|
||
done(); | ||
}; | ||
$('#cal').fullCalendar(options); | ||
}); | ||
}); | ||
|
||
describe('when dragging an all-day event to a time slot on a different day', function() { | ||
it('should be given correct arguments and delta with days/time', function(done) { | ||
options.scrollTime = '01:00:00'; | ||
options.events = [ { | ||
title: 'all-day event', | ||
start: '2014-06-11', | ||
allDay: true | ||
} ]; | ||
var called = false; | ||
options.eventAfterAllRender = function() { | ||
if (!called) { // because event rerendering will happen upon drop | ||
$('.fc-event') | ||
.simulate('mouseover') // for our dumb optimization | ||
.simulate('drag-n-drop', { | ||
dx: $('th.fc-wed').width() * -1, | ||
dy: $('.fc-agenda-allday').outerHeight() + $('.fc-agenda-divider').outerHeight(), | ||
interpolation: { | ||
stepCount: 10, | ||
duration: 100 | ||
} | ||
}); | ||
called = true; | ||
} | ||
}; | ||
options.eventDrop = function(event, delta, revertFunc, jsEvent, uiEvent, view) { | ||
expect(delta.days()).toBe(-1); | ||
expect(delta.hours()).toBe(1); | ||
expect(delta.minutes()).toBe(0); | ||
expect(delta.seconds()).toBe(0); | ||
expect(delta.milliseconds()).toBe(0); | ||
|
||
expect(event.start).toEqualMoment('2014-06-10T01:00:00'); | ||
expect(event.end).toBeNull(); | ||
expect(event.allDay).toBe(false); | ||
revertFunc(); | ||
expect(event.start).toEqualMoment('2014-06-11'); | ||
expect(event.end).toBeNull(); | ||
expect(event.allDay).toBe(true); | ||
|
||
done(); | ||
}; | ||
setTimeout(function() { // hack. scroll state was messed up or something | ||
$('#cal').fullCalendar(options); | ||
},0); | ||
}); | ||
}); | ||
|
||
describe('when dragging a timed event to an all-day slot on a different day', function() { | ||
it('should be given correct arguments, with whole-day delta', function(done) { | ||
options.scrollTime = '01:00:00'; | ||
options.events = [ { | ||
title: 'timed event', | ||
start: '2014-06-11T01:00:00', | ||
allDay: false | ||
} ]; | ||
var called = false; | ||
var eventElm; | ||
options.eventAfterAllRender = function() { | ||
if (!called) { // because event rerendering will happen upon drop | ||
eventElm = $('.fc-event') | ||
.simulate('mouseover') // for our dumb optimization | ||
.simulate('drag', { | ||
dx: $('th.fc-wed').width() * -1, | ||
dy: -$('.fc-agenda-allday').outerHeight(), | ||
interpolation: { | ||
stepCount: 10, | ||
duration: 100 | ||
}, | ||
callback: function() { | ||
// the all day slot works off of mouse-moving coordinates | ||
var offset = eventElm.offset(); | ||
$('.fc-agenda-allday .fc-day-content') | ||
.simulate('mouseover', { | ||
clientX: offset.left + 10, | ||
clientY: offset.top + 10 | ||
}) | ||
.simulate('mousemove', { | ||
clientX: offset.left + 10, | ||
clientY: offset.top + 10 | ||
}); | ||
setTimeout(function() { | ||
eventElm.simulate('drop'); | ||
}, 100); | ||
} | ||
}); | ||
called = true; | ||
} | ||
}; | ||
options.eventDrop = function(event, delta, revertFunc, jsEvent, uiEvent, view) { | ||
expect(delta.days()).toBe(-1); | ||
expect(delta.hours()).toBe(0); | ||
expect(delta.minutes()).toBe(0); | ||
expect(delta.seconds()).toBe(0); | ||
expect(delta.milliseconds()).toBe(0); | ||
|
||
expect(event.start).toEqualMoment('2014-06-10'); | ||
expect(event.end).toBeNull(); | ||
expect(event.allDay).toBe(true); | ||
revertFunc(); | ||
expect(event.start).toEqualMoment('2014-06-11T01:00:00'); | ||
expect(event.end).toBeNull(); | ||
expect(event.allDay).toBe(false); | ||
|
||
done(); | ||
}; | ||
setTimeout(function() { // hack. scroll state was messed up or something | ||
$('#cal').fullCalendar(options); | ||
},0); | ||
}); | ||
}); | ||
}); | ||
}); | ||
*/ | ||
}); |
Oops, something went wrong.