UNPKG

vobject

Version:

iCalendar VObject Manipulation in NodeJS

590 lines (499 loc) 20.4 kB
'use strict'; var assert = require('assert'); var vobject = require('../../index'); var event; beforeEach(function() { event = vobject.event(); }); describe('lib/vobject/event.js', function() { describe('initialize', function() { it('should set name to VEVENT', function() { assert.equal(event.name, 'VEVENT'); }); }); describe('setUID', function() { it('should set UID', function() { event.setUID('value'); assert.equal(event.properties['UID'][0].value, 'value'); }); it('should return reference to itself', function() { var that = event.setUID('value'); assert.equal(that, event); }); }); describe('getUID', function() { it('should return undefined by default', function() { assert.equal(event.getUID(), undefined); }); it('should get UID', function() { event.properties['UID'] = [vobject.property('UID', 'value')]; assert.equal(event.getUID(), 'value'); }); }); describe('setSummary', function() { it('should set SUMMARY', function() { event.setSummary('value'); assert.equal(event.properties['SUMMARY'][0].value, 'value'); }); it('should escape special characters', function() { event.setSummary('\n;,'); assert.equal(event.properties['SUMMARY'][0].value, '\\n\\;\\,'); }); it('should return reference to itself', function() { var that = event.setSummary('value'); assert.equal(that, event); }); }); describe('getSummary', function() { it('should return undefined by default', function() { assert.equal(event.getSummary(), undefined); }); it('should get SUMMARY', function() { event.properties['SUMMARY'] = [vobject.property('SUMMARY', 'value')]; assert.equal(event.getSummary(), 'value'); }); it('should unescape SUMMARY', function() { event.properties['SUMMARY'] = [vobject.property('SUMMARY', '\\n\\;\\,')]; assert.equal(event.getSummary(), '\n;,'); }); }); describe('setDTStart', function() { it('should handle dateTimeValue', function() { event.setDTStart(vobject.dateTimeValue('1986-10-18T13:00:00+02:00')); assert.equal(event.properties['DTSTART'][0].getParameter('VALUE'), undefined); assert.equal(event.properties['DTSTART'][0].getParameter('TZID'), undefined); assert.equal(event.properties['DTSTART'][0].value, '19861018T110000Z'); }); it('should handle floating dateTimeValue', function() { var dateTime = vobject.dateTimeValue('2013-08-16T17:00:00-04:00'); dateTime.setTZID('America/New_York'); event.setDTStart(dateTime); assert.equal(event.properties['DTSTART'][0].getParameter('VALUE'), undefined); assert.equal(event.properties['DTSTART'][0].getParameter('TZID'), 'America/New_York'); assert.equal(event.properties['DTSTART'][0].value, '20130816T170000'); }); it('should handle dateValue', function() { event.setDTStart(vobject.dateValue('1986-10-18')); assert.equal(event.properties['DTSTART'][0].getParameter('VALUE'), 'DATE'); assert.equal(event.properties['DTSTART'][0].getParameter('TZID'), undefined); assert.equal(event.properties['DTSTART'][0].value, '19861018'); }); it('should return reference to itself', function() { var that = event.setDTStart(vobject.dateValue('1986-10-18')); assert.equal(that, event); }); }); describe('getDTStart', function() { it('should return undefined by default', function() { assert.equal(event.getDTStart(), undefined); }); it('should get DTSTART dateValue', function() { var property = vobject.property('DTSTART', '20130826'); property.setParameter('VALUE', 'DATE'); event.properties['DTSTART'] = [property]; assert.equal(event.getDTStart().type, 'dateValue'); assert.equal(event.getDTStart().toICS(), '20130826'); }); it('should get DTSTART dateTimeValue in absolute time', function() { event.properties['DTSTART'] = [vobject.property('DTSTART', '20130813T173000Z')]; assert.equal(event.getDTStart().type, 'dateTimeValue'); assert.equal(event.getDTStart().toDateTime(), '2013-08-13T17:30:00+00:00'); }); it('should get DTSTART dateTimeValue in floating time', function() { var property = vobject.property('DTSTART', '20130813T173000'); property.setParameter('TZID', 'America/New_York'); event.properties['DTSTART'] = [property]; assert.equal(event.getDTStart().type, 'dateTimeValue'); assert.equal(event.getDTStart().getTZID(), 'America/New_York'); assert.equal(event.getDTStart().toDateTime(), '2013-08-13T21:30:00+00:00'); }); }); describe('setDTEnd', function() { it('should handle dateTimeValue', function() { event.setDTEnd(vobject.dateTimeValue('1986-10-18T13:00:00+02:00')); assert.equal(event.properties['DTEND'][0].getParameter('VALUE'), undefined); assert.equal(event.properties['DTEND'][0].getParameter('TZID'), undefined); assert.equal(event.properties['DTEND'][0].value, '19861018T110000Z'); }); it('should handle floating dateTimeValue', function() { var dateTime = vobject.dateTimeValue('2013-08-16T17:00:00-04:00'); dateTime.setTZID('America/New_York'); event.setDTEnd(dateTime); assert.equal(event.properties['DTEND'][0].getParameter('VALUE'), undefined); assert.equal(event.properties['DTEND'][0].getParameter('TZID'), 'America/New_York'); assert.equal(event.properties['DTEND'][0].value, '20130816T170000'); }); it('should handle dateValue', function() { event.setDTEnd(vobject.dateValue('1986-10-18')); assert.equal(event.properties['DTEND'][0].getParameter('VALUE'), 'DATE'); assert.equal(event.properties['DTEND'][0].getParameter('TZID'), undefined); assert.equal(event.properties['DTEND'][0].value, '19861018'); }); it('should return reference to itself', function() { var that = event.setDTEnd(vobject.dateValue('1986-10-18')); assert.equal(that, event); }); }); describe('getDTEnd', function() { it('should be undefined by default', function() { assert.equal(event.getDTEnd(), undefined); }); it('should get DTEND dateValue', function() { var property = vobject.property('DTEND', '20130826'); property.setParameter('VALUE', 'DATE'); event.properties['DTEND'] = [property]; assert.equal(event.getDTEnd().type, 'dateValue'); assert.equal(event.getDTEnd().toICS(), '20130826'); }); it('should get DTEND dateTimeValue in absolute time', function() { event.properties['DTEND'] = [vobject.property('DTEND', '20130813T173000Z')]; assert.equal(event.getDTEnd().type, 'dateTimeValue'); assert.equal(event.getDTEnd().toDateTime(), '2013-08-13T17:30:00+00:00'); }); it('should get DTEND dateTimeValue in floating time', function() { var property = vobject.property('DTEND', '20130813T173000'); property.setParameter('TZID', 'America/New_York'); event.properties['DTEND'] = [property]; assert.equal(event.getDTEnd().type, 'dateTimeValue'); assert.equal(event.getDTEnd().getTZID(), 'America/New_York'); assert.equal(event.getDTEnd().toDateTime(), '2013-08-13T21:30:00+00:00'); }); }); describe('setDescription', function() { it('should set DESCRIPTION', function() { event.setDescription('value'); assert.equal(event.properties['DESCRIPTION'][0].value, 'value'); }); it('should escape special characters', function() { event.setDescription('\n;,'); assert.equal(event.properties['DESCRIPTION'][0].value, '\\n\\;\\,'); }); it('should return reference to itself', function() { var that = event.setDescription('value'); assert.equal(that, event); }); }); describe('getDescription', function() { it('should be undefined by default', function() { assert.equal(event.getDescription(), undefined); }); it('should get DESCRIPTION', function() { event.properties['DESCRIPTION'] = [vobject.property('DESCRIPTION', 'value')]; assert.equal(event.getDescription(), 'value'); }); it('should unescape DESCRIPTION', function() { event.properties['DESCRIPTION'] = [vobject.property('DESCRIPTION', '\\n\\;\\,')]; assert.equal(event.getDescription(), '\n;,'); }); }); describe('setLocation', function() { it('should set LOCATION', function() { event.setLocation('value'); assert.equal(event.properties['LOCATION'][0].value, 'value'); }); it('should escape special characters', function() { event.setLocation('\n;,'); assert.equal(event.properties['LOCATION'][0].value, '\\n\\;\\,'); }); it('should return reference to itself', function() { var that = event.setLocation('value'); assert.equal(that, event); }); }); describe('getLocation', function() { it('should be undefined by default', function() { assert.equal(event.getLocation(), undefined); }); it('should get LOCATION', function() { event.properties['LOCATION'] = [vobject.property('LOCATION', 'value')]; assert.equal(event.getLocation(), 'value'); }); it('should unescape LOCATION', function() { event.properties['LOCATION'] = [vobject.property('LOCATION', '\\n\\;\\,')]; assert.equal(event.getLocation(), '\n;,'); }); }); describe('setStatus', function() { it('should set STATUS', function() { event.setStatus('value'); assert.equal(event.properties['STATUS'][0].value, 'VALUE'); }); it('should return reference to itself', function() { var that = event.setStatus('value'); assert.equal(that, event); }); }); describe('getStatus', function() { it('should be undefined by default', function() { assert.equal(event.getStatus(), undefined); }); it('should get STATUS', function() { event.properties['STATUS'] = [vobject.property('STATUS', 'VALUE')]; assert.equal(event.getStatus(), 'VALUE'); }); }); describe('setDTStamp', function() { it('should (ONLY) handle DateTime', function() { var dateTime = vobject.dateTimeValue(); dateTime.parseDateTime('1986-10-18T13:00:00+02:00'); event.setDTStamp(dateTime); assert.equal(event.getDTStamp(), '19861018T110000Z'); }); it('should return reference to itself', function() { var dateTime = vobject.dateTimeValue(); dateTime.parseDateTime('1986-10-18T13:00:00+02:00'); var that = event.setDTStamp(dateTime); assert.equal(that, event); }); }); describe('getDTStamp', function() { it('should be undefined by default', function() { assert.equal(event.getDTStamp(), undefined); }); it('should get DTSTAMP', function() { var dateTime = vobject.dateTimeValue(); dateTime.parseDateTime('1986-10-18T13:00:00+02:00'); event.setDTStamp(dateTime); assert.equal(event.getDTStamp(), '19861018T110000Z'); }); }); describe('setLastModified', function() { it('should set LAST-MODIFIED', function() { var dateTimeValue = vobject.dateTimeValue('1986-10-18T13:00:00+02:00'); event.setLastModified(dateTimeValue); assert.equal(event.properties['LAST-MODIFIED'][0].value, dateTimeValue.toICS()); }); it('should return reference to itself', function() { var dateTimeValue = vobject.dateTimeValue('1986-10-18T13:00:00+02:00'); var that = event.setLastModified(dateTimeValue); assert.equal(that, event); }); }); describe('getLastModified', function() { it('should be undefined by default', function() { assert.equal(event.getLastModified(), undefined); }); it('should get LAST-MODIFIED', function() { var dateTimeValue = vobject.dateTimeValue('1986-10-18T13:00:00+02:00'); event.properties['LAST-MODIFIED'] = [vobject.property('LAST-MODIFIED', dateTimeValue.toICS())]; assert.equal(event.getLastModified(), dateTimeValue.toICS()); }); }); describe('setSequence', function() { it('should set SEQUENCE', function(done) { event.setProperty = function(property) { assert.equal(property.name, 'SEQUENCE'); assert.equal(property.value, 'value'); done(); }; event.setSequence('value'); }); it('should return reference to itself', function() { var that = event.setSequence('value'); assert.equal(that, event); }); }); describe('getSequence', function() { it('should be undefined by default', function() { assert.equal(event.getSequence(), undefined); }); it('should get SEQUENCE', function() { event.setSequence(11); assert.equal(event.getSequence(), 11); }); }); describe('setCreated', function() { it('should set CREATED', function() { var dateTime = vobject.dateTimeValue(); dateTime.parseDateTime('1986-10-18T13:00:00+02:00'); event.setCreated(dateTime); assert.equal(event.getCreated(), '19861018T110000Z'); }); it('should return reference to itself', function() { var dateTime = vobject.dateTimeValue(); dateTime.parseDateTime('1986-10-18T13:00:00+02:00'); var that = event.setCreated(dateTime); assert.equal(that, event); }); }); describe('getCreated', function() { it('should be undefined by default', function() { assert.equal(event.getCreated(), undefined); }); it('should get CREATED', function() { var dateTime = vobject.dateTimeValue(); dateTime.parseDateTime('1986-10-18T13:00:00+02:00'); event.setCreated(dateTime); assert.equal(event.getCreated(), '19861018T110000Z'); }); }); describe('setOrganizer', function() { it('should set ORGANIZER', function(done) { event.setProperty = function(property) { assert.equal(property, 'value'); done(); }; event.setOrganizer('value'); }); it('should return reference to itself', function() { var organizer = vobject.organizer(); var that = event.setOrganizer(organizer); assert.equal(that, event); }); }); describe('getOrganizer', function() { it('should be undefined by default', function() { assert.equal(event.getOrganizer(), undefined); }); it('should get ORGANIZER', function() { event.getProperty = function(name) { assert.equal(name, 'ORGANIZER'); return 'value'; }; assert.equal(event.getOrganizer(), 'value'); }); }); describe('addAttendee', function() { it('should add ATTENDEE', function(done) { event.pushProperty = function(property) { assert.equal(property, 'value'); done(); }; event.addAttendee('value'); }); it('should return reference to itself', function() { var attendee = vobject.attendee(); var that = event.addAttendee(attendee); assert.equal(that, event); }); }); describe('getAttendees', function() { it('should be [] by default', function() { assert.deepEqual(event.getAttendees(), []); }); it('should get all ATTENDEE', function() { event.getProperties = function(name) { assert.equal(name, 'ATTENDEE'); return 'value'; }; assert.equal(event.getAttendees(), 'value'); }); }); describe('addRRULE', function() { it('should add RRULE ics', function(done) { event.pushProperty = function(property) { assert.equal(property.name, 'RRULE'); assert.equal(property.value, 'FREQ=DAILY'); done(); }; event.addRRULE('RRULE:FREQ=DAILY'); }); it('should return reference to itself', function() { var that = event.addRRULE('RRULE:FREQ=DAILY'); assert.equal(that, event); }); }); describe('getRRULEs', function() { it('should be [] by default', function() { assert.deepEqual(event.getRRULEs(), []); }); it('should get all RRULE', function() { event.getProperties = function(name) { assert.equal(name, 'RRULE'); return 'value'; }; assert.equal(event.getRRULEs(), 'value'); }); }); describe('addEXDATE', function() { it('should add EXDATE ics', function(done) { event.pushProperty = function(property) { assert.equal(property.name, 'EXDATE'); assert.equal(property.getParameter('VALUE'), 'DATE'); assert.equal(property.value, '20140206'); done(); }; event.addEXDATE('EXDATE;VALUE=DATE:20140206'); }); it('should return reference to itself', function() { var that = event.addEXDATE('EXDATE;VALUE=DATE:20140206'); assert.equal(that, event); }); }); describe('getEXDATEs', function() { it('should be [] by default', function() { assert.deepEqual(event.getEXDATEs(), []); }); it('should get all EXDATE', function() { event.getProperties = function(name) { assert.equal(name, 'EXDATE'); return 'value'; }; assert.equal(event.getEXDATEs(), 'value'); }); }); describe('setRecurrenceID', function() { it('should set RECURRENCE-ID property with dateValue', function() { event.setRecurrenceID(vobject.dateValue('2013-08-16')); assert.equal(event.properties['RECURRENCE-ID'][0].getParameter('VALUE'), 'DATE'); assert.equal(event.properties['RECURRENCE-ID'][0].value, '20130816'); }); it('should set RECURRENCE-ID property with dateTimeValue', function() { var dateTimeValue = vobject.dateTimeValue('2013-08-13 21:33:40 -04:00'); dateTimeValue.setTZID('America/New_York'); event.setRecurrenceID(dateTimeValue); assert.equal(event.properties['RECURRENCE-ID'][0].getParameter('TZID'), 'America/New_York'); assert.equal(event.properties['RECURRENCE-ID'][0].value, '20130813T213340'); }); it('should return reference to itself', function() { var dateTimeValue = vobject.dateTimeValue('2013-08-13 21:33:40 -04:00'); dateTimeValue.setTZID('America/New_York'); var that = event.setRecurrenceID(dateTimeValue); assert.equal(that, event); }); }); describe('getRecurrenceID', function() { it('should be undefined by default', function() { assert.equal(event.getRecurrenceID(), undefined); }); it('should get RECURRENCE-ID dateValue', function() { var property = vobject.property('RECURRENCE-ID', '20130826'); property.setParameter('VALUE', 'DATE'); event.properties['RECURRENCE-ID'] = [property]; assert.equal(event.getRecurrenceID().type, 'dateValue'); assert.equal(event.getRecurrenceID().toICS(), '20130826'); }); it('should get RECURRENCE-ID dateTimeValue in absolute time', function() { event.properties['RECURRENCE-ID'] = [vobject.property('RECURRENCE-ID', '20130813T173000Z')]; assert.equal(event.getRecurrenceID().type, 'dateTimeValue'); assert.equal(event.getRecurrenceID().toDateTime(), '2013-08-13T17:30:00+00:00'); }); it('should get RECURRENCE-ID dateTimeValue in floating time', function() { var property = vobject.property('RECURRENCE-ID', '20130813T173000'); property.setParameter('TZID', 'America/New_York'); event.properties['RECURRENCE-ID'] = [property]; assert.equal(event.getRecurrenceID().type, 'dateTimeValue'); assert.equal(event.getRecurrenceID().getTZID(), 'America/New_York'); assert.equal(event.getRecurrenceID().toDateTime(), '2013-08-13T21:30:00+00:00'); }); }); describe('setTransparency', function() { it('should set TRANSP property', function() { event.setTransparency('transparent'); assert.equal(event.properties['TRANSP'][0].value, 'TRANSPARENT'); }); it('should return reference to itself', function() { var that = event.setTransparency('transparent'); assert.equal(that, event); }); }); describe('getTransparency', function() { it('should be undefined by default', function() { assert.equal(event.getTransparency(), undefined); }); it('should get TRANSP property value', function() { event.properties['TRANSP'] = [vobject.property('TRANSP', 'TRANSPARENT')]; assert.equal(event.getTransparency(), 'TRANSPARENT'); }); }); });