| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264 |
- describe('updateEvent', function() {
- describe('when changing an event\'s ID', function() {
- pushOptions({
- defaultView: 'month',
- now: '2017-07-14',
- events: [
- { id: '2', start: '2017-07-14', end: '2017-07-19' }
- ]
- });
- it('reflects the ID change on the event object', function(done) {
- var allRenderCnt = 0;
- initCalendar({
- eventAfterAllRender: function() {
- var eventObjs;
- var eventObj;
- allRenderCnt++;
- if (allRenderCnt === 1) {
- eventObjs = currentCalendar.clientEvents();
- expect(eventObjs.length).toBe(1);
- eventObj = eventObjs[0];
- eventObj.id = '3';
- currentCalendar.updateEvent(eventObj);
- eventObjs = currentCalendar.clientEvents();
- expect(eventObjs.length).toBe(1);
- eventObj = eventObjs[0];
- expect(eventObj.id).toBe('3');
- done();
- }
- }
- });
- });
- it('reflects the ID change during event rendering', function(done) {
- var allRenderCnt = 0;
- var renderCnt = 0;
- initCalendar({
- eventRender: function(eventObj) {
- if (allRenderCnt === 1) {
- expect(eventObj.id).toBe('3');
- renderCnt++;
- }
- },
- eventAfterAllRender: function() {
- var eventObjs;
- var eventObj;
- allRenderCnt++;
- if (allRenderCnt === 1) {
- eventObjs = currentCalendar.clientEvents();
- expect(eventObjs.length).toBe(1);
- eventObj = eventObjs[0];
- eventObj.id = '3';
- currentCalendar.updateEvent(eventObj);
- }
- else if (allRenderCnt === 2) {
- expect(renderCnt).toBe(2);
- done();
- }
- }
- });
- });
- });
- describe('when changing an event from timed to all-day', function() {
- pushOptions({
- defaultView: 'month',
- now: '2017-07-14',
- events: [
- { id: '2', start: '2017-07-14T08:00:00Z', end: '2017-07-14T12:00:00Z' }
- ]
- });
- it('reflects the change on the event object', function(done) {
- var allRenderCnt = 0;
- initCalendar({
- eventAfterAllRender: function() {
- var eventObj;
- allRenderCnt++;
- if (allRenderCnt === 1) {
- eventObj = currentCalendar.clientEvents('2')[0];
- expect(eventObj.allDay).toBe(false);
- eventObj.allDay = true;
- eventObj.start = '2017-07-14';
- eventObj.end = '2017-07-15';
- currentCalendar.updateEvent(eventObj);
- eventObj = currentCalendar.clientEvents('2')[0];
- expect(eventObj.allDay).toBe(true);
- expect(eventObj.start.format()).toBe('2017-07-14');
- expect(eventObj.end.format()).toBe('2017-07-15');
- done();
- }
- }
- });
- });
- });
- describe('when changing an event from all-day to timed', function() {
- it('accepts all new properties as-is', function() {
- var event;
- initCalendar({
- defaultView: 'month',
- defaultDate: '2016-04-29',
- events: [
- {
- title: 'Test event',
- start: '2016-04-29'
- }
- ]
- });
- event = currentCalendar.clientEvents()[0];
- event.allDay = false;
- event.start = '2016-04-29T12:00:00'; // 12 noon
- event.end = '2016-04-29T14:00:00'; // 2pm
- currentCalendar.updateEvent(event);
- event = currentCalendar.clientEvents()[0];
- expect(event.allDay).toBe(false);
- expect(moment.isMoment(event.start)).toBe(true);
- expect(moment.isMoment(event.end)).toBe(true);
- expect(event.start).toEqualMoment('2016-04-29T12:00:00');
- expect(event.end).toEqualMoment('2016-04-29T14:00:00');
- });
- });
- describe('when adding a new misc object property', function() {
- it('accepts the new property', function() {
- var event;
- initCalendar({
- now: '2017-10-05',
- events: [
- { title: 'event 0', start: '2017-10-05' }
- ]
- });
- event = currentCalendar.clientEvents()[0];
- event.user = { fname: 'Adam' };
- currentCalendar.updateEvent(event);
- event = currentCalendar.clientEvents()[0];
- expect(typeof event.user).toBe('object');
- expect(event.user.fname).toBe('Adam');
- })
- });
- describe('when modifying an existing misc object property', function() {
- it('accepts the new property', function() {
- var event;
- initCalendar({
- now: '2017-10-05',
- events: [
- { title: 'event 0', start: '2017-10-05', user: { fname: 'Adam' } }
- ]
- });
- event = currentCalendar.clientEvents()[0];
- expect(typeof event.user).toBe('object');
- expect(event.user.fname).toBe('Adam');
- event.user = { fname: 'John' };
- currentCalendar.updateEvent(event);
- event = currentCalendar.clientEvents()[0];
- expect(typeof event.user).toBe('object');
- expect(event.user.fname).toBe('John');
- })
- });
- describe('with className', function() {
- describe('when not modified', function() {
- it('maintains classNames for individual event defs', function() {
- var eventA, eventB;
- initCalendar({
- now: '2017-10-05',
- events: [
- { id: '1', title: 'event1', start: '2017-10-05', otherId: 'a', customProp: 'asdf', className: 'myclassA' },
- { id: '1', title: 'event1', start: '2017-10-12', otherId: 'b', customProp: 'asdf', className: 'myclassB' }
- ]
- });
- eventA = currentCalendar.clientEvents(function(eventDef) {
- return eventDef.otherId === 'a';
- })[0];
- eventA.customProp = 'qwer';
- currentCalendar.updateEvent(eventA);
- eventA = currentCalendar.clientEvents(function(eventDef) {
- return eventDef.otherId === 'a';
- })[0];
- eventB = currentCalendar.clientEvents(function(eventDef) {
- return eventDef.otherId === 'b';
- })[0];
- expect(eventA.customProp).toBe('qwer');
- expect(eventA.className).toEqual([ 'myclassA' ]);
- expect(eventB.customProp).toBe('qwer');
- expect(eventB.className).toEqual([ 'myclassB' ]);
- });
- });
- describe('when modified', function() {
- it('changes classNames for all similar event defs', function() {
- var eventA, eventB;
- initCalendar({
- now: '2017-10-05',
- events: [
- { id: '1', title: 'event1', start: '2017-10-05', otherId: 'a', className: 'myclassA' },
- { id: '1', title: 'event1', start: '2017-10-12', otherId: 'b', className: 'myclassB' }
- ]
- });
- eventA = currentCalendar.clientEvents(function(eventDef) {
- return eventDef.otherId === 'a';
- })[0];
- eventA.className = [ 'otherClass' ];
- currentCalendar.updateEvent(eventA);
- eventA = currentCalendar.clientEvents(function(eventDef) {
- return eventDef.otherId === 'a';
- })[0];
- eventB = currentCalendar.clientEvents(function(eventDef) {
- return eventDef.otherId === 'b';
- })[0];
- expect(eventA.className).toEqual([ 'otherClass' ]);
- expect(eventB.className).toEqual([ 'otherClass' ]);
- });
- });
- });
- });
|