[CMF-checkins] CVS: CMF/CMFCalendar/tests - test_Calendar.py:1.2 test_all.py:1.5
Chris Withers
chrisw@nipltd.com
Fri, 10 May 2002 11:46:18 -0400
Update of /cvs-repository/CMF/CMFCalendar/tests
In directory cvs.zope.org:/tmp/cvs-serv7824/CMFCalendar/tests
Modified Files:
test_all.py
Added Files:
test_Calendar.py
Log Message:
Merging CMF Calendar work from branch.
=== CMF/CMFCalendar/tests/test_Calendar.py 1.1 => 1.2 ===
+from unittest import TestCase, TestSuite, main, makeSuite
+from Testing.makerequest import makerequest
+from Products.CMFCalendar import CalendarTool
+from DateTime import DateTime
+from AccessControl.SecurityManagement import newSecurityManager
+from AccessControl.User import UnrestrictedUser
+from Products.ExternalMethod.ExternalMethod import manage_addExternalMethod
+
+class TestCalendar(TestCase):
+
+ def setUp(self):
+ get_transaction().begin()
+
+ self.app = makerequest(Zope.app())
+ # Log in as a god :-)
+ newSecurityManager(None, UnrestrictedUser('god',
+ 'god',
+ [],
+ ''))
+ app = self.app
+
+ app.REQUEST.set('URL1','http://foo/sorcerertest/test')
+
+ try: app._delObject('CalendarTest')
+ except AttributeError: pass
+ app.manage_addProduct['CMFDefault'].manage_addCMFSite('CalendarTest')
+
+ self.Site = app.CalendarTest
+
+ manage_addExternalMethod(app.CalendarTest,
+ id='install_events',
+ title="Install Events",
+ module="CMFCalendar.Install",
+ function="install")
+
+ ExMethod = app.restrictedTraverse('/CalendarTest/install_events')
+ ExMethod()
+
+ self.Tool = app.restrictedTraverse('/CalendarTest/portal_calendar')
+
+ # sessioning bodge until we find out how to do this properly
+
+ session = app.unrestrictedTraverse('/session_data_manager').getSessionData
+ app.REQUEST.set_lazy('SESSION', session)
+
+ # bodge us a URL1
+
+ def _testURL(self,url,params=None):
+ Site = self.Site
+ obj = Site.restrictedTraverse(url)
+ if params is None:
+ params=(obj, Site.REQUEST)
+ apply(obj,params)
+
+ def tearDown(self):
+ get_transaction().abort()
+ self.app._p_jar.close()
+
+
+ def test_new(self):
+ tool = CalendarTool.CalendarTool()
+ self.assertEqual(tool.getId(),'portal_calendar')
+
+ def test_types(self):
+ self.assertEqual(self.Tool.getCalendarTypes(),['Event'])
+
+ self.Tool.edit_configuration(show_types=['Event','Party'], use_session="True")
+ self.assertEqual(self.Tool.getCalendarTypes(),['Event', 'Party'])
+
+ def test_Days(self):
+ assert self.Tool.getDays() == ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa']
+
+ def test_sessions(self):
+ self.Tool.edit_configuration(show_types=['Event'], use_session="True")
+
+ self._testURL('/CalendarTest/calendarBox', ())
+
+ self.assertNotEqual(self.app.REQUEST.SESSION.get('calendar_year',None),None)
+
+ def test_noSessions(self):
+ self.Tool.edit_configuration(show_types=['Event'], use_session="")
+
+ self._testURL('/CalendarTest/calendarBox', ())
+
+ self.assertEqual(self.app.REQUEST.SESSION.get('calendar_year',None),None)
+
+ def test_simpleCalendarRendering(self):
+ data = [
+ [
+ {'day': 0, 'event': 0, 'eventslist':[]},
+ {'day': 0, 'event': 0, 'eventslist':[]},
+ {'day': 1, 'event': 0, 'eventslist':[]},
+ {'day': 2, 'event': 0, 'eventslist':[]},
+ {'day': 3, 'event': 0, 'eventslist':[]},
+ {'day': 4, 'event': 0, 'eventslist':[]},
+ {'day': 5, 'event': 0, 'eventslist':[]}
+ ],
+ [
+ {'day': 6, 'event': 0, 'eventslist':[]},
+ {'day': 7, 'event': 0, 'eventslist':[]},
+ {'day': 8, 'event': 0, 'eventslist':[]},
+ {'day': 9, 'event': 0, 'eventslist':[]},
+ {'day':10, 'event': 0, 'eventslist':[]},
+ {'day':11, 'event': 0, 'eventslist':[]},
+ {'day':12, 'event': 0, 'eventslist':[]}
+ ],
+ [
+ {'day':13, 'event': 0, 'eventslist':[]},
+ {'day':14, 'event': 0, 'eventslist':[]},
+ {'day':15, 'event': 0, 'eventslist':[]},
+ {'day':16, 'event': 0, 'eventslist':[]},
+ {'day':17, 'event': 0, 'eventslist':[]},
+ {'day':18, 'event': 0, 'eventslist':[]},
+ {'day':19, 'event': 0, 'eventslist':[]}
+ ],
+ [
+ {'day':20, 'event': 0, 'eventslist':[]},
+ {'day':21, 'event': 0, 'eventslist':[]},
+ {'day':22, 'event': 0, 'eventslist':[]},
+ {'day':23, 'event': 0, 'eventslist':[]},
+ {'day':24, 'event': 0, 'eventslist':[]},
+ {'day':25, 'event': 0, 'eventslist':[]},
+ {'day':26, 'event': 0, 'eventslist':[]}
+ ],
+ [
+ {'day':27, 'event': 0, 'eventslist':[]},
+ {'day':28, 'event': 0, 'eventslist':[]},
+ {'day':29, 'event': 0, 'eventslist':[]},
+ {'day':30, 'event': 0, 'eventslist':[]},
+ {'day':31, 'event': 0, 'eventslist':[]},
+ {'day': 0, 'event': 0, 'eventslist':[]},
+ {'day': 0, 'event': 0, 'eventslist':[]}
+ ]
+ ]
+ assert self.Tool.getEventsForCalendar(month='1', year='2002') == data, self.Tool.getEventsForCalendar(month='1', year='2002')
+
+ def test_singleEventCalendarRendering(self):
+
+ self.Site.Members.folder_factories.invokeFactory(type_name="Event",id='Event1')
+ event = self.app.restrictedTraverse('/CalendarTest/Members/Event1')
+ event.edit( title='title'
+ , description='description'
+ , eventType=( 'eventType', )
+ , effectiveDay=1
+ , effectiveMo=1
+ , effectiveYear=2002
+ , expirationDay=1
+ , expirationMo=1
+ , expirationYear=2002
+ , start_time="00:00"
+ , startAMPM="AM"
+ , stop_time="11:59"
+ , stopAMPM="PM"
+ )
+ self.Site.portal_workflow.doActionFor(
+ event,
+ 'publish',
+ comment='testing')
+
+ data = [
+ [
+ {'day': 0, 'event': 0, 'eventslist':[]},
+ {'day': 0, 'event': 0, 'eventslist':[]},
+ {'day': 1, 'event': 1, 'eventslist':[{'title': 'title', 'end': '23:59:00', 'start': '00:00:00'}]},
+ {'day': 2, 'event': 0, 'eventslist':[]},
+ {'day': 3, 'event': 0, 'eventslist':[]},
+ {'day': 4, 'event': 0, 'eventslist':[]},
+ {'day': 5, 'event': 0, 'eventslist':[]}
+ ],
+ [
+ {'day': 6, 'event': 0, 'eventslist':[]},
+ {'day': 7, 'event': 0, 'eventslist':[]},
+ {'day': 8, 'event': 0, 'eventslist':[]},
+ {'day': 9, 'event': 0, 'eventslist':[]},
+ {'day':10, 'event': 0, 'eventslist':[]},
+ {'day':11, 'event': 0, 'eventslist':[]},
+ {'day':12, 'event': 0, 'eventslist':[]}
+ ],
+ [
+ {'day':13, 'event': 0, 'eventslist':[]},
+ {'day':14, 'event': 0, 'eventslist':[]},
+ {'day':15, 'event': 0, 'eventslist':[]},
+ {'day':16, 'event': 0, 'eventslist':[]},
+ {'day':17, 'event': 0, 'eventslist':[]},
+ {'day':18, 'event': 0, 'eventslist':[]},
+ {'day':19, 'event': 0, 'eventslist':[]}
+ ],
+ [
+ {'day':20, 'event': 0, 'eventslist':[]},
+ {'day':21, 'event': 0, 'eventslist':[]},
+ {'day':22, 'event': 0, 'eventslist':[]},
+ {'day':23, 'event': 0, 'eventslist':[]},
+ {'day':24, 'event': 0, 'eventslist':[]},
+ {'day':25, 'event': 0, 'eventslist':[]},
+ {'day':26, 'event': 0, 'eventslist':[]}
+ ],
+ [
+ {'day':27, 'event': 0, 'eventslist':[]},
+ {'day':28, 'event': 0, 'eventslist':[]},
+ {'day':29, 'event': 0, 'eventslist':[]},
+ {'day':30, 'event': 0, 'eventslist':[]},
+ {'day':31, 'event': 0, 'eventslist':[]},
+ {'day': 0, 'event': 0, 'eventslist':[]},
+ {'day': 0, 'event': 0, 'eventslist':[]}
+ ]
+ ]
+ assert self.Tool.getEventsForCalendar(month='1', year='2002') == data, self.Tool.getEventsForCalendar(month='1', year='2002')
+
+ def test_spanningEventCalendarRendering(self):
+
+ self.Site.Members.folder_factories.invokeFactory(type_name="Event",id='Event1')
+ event = self.app.restrictedTraverse('/CalendarTest/Members/Event1')
+ event.edit( title='title'
+ , description='description'
+ , eventType=( 'eventType', )
+ , effectiveDay=1
+ , effectiveMo=1
+ , effectiveYear=2002
+ , expirationDay=31
+ , expirationMo=1
+ , expirationYear=2002
+ , start_time="00:00"
+ , startAMPM="AM"
+ , stop_time="11:59"
+ , stopAMPM="PM"
+ )
+ self.Site.portal_workflow.doActionFor(
+ event,
+ 'publish',
+ comment='testing')
+
+ data = [
+ [
+ {'day': 0, 'event': 0, 'eventslist':[]},
+ {'day': 0, 'event': 0, 'eventslist':[]},
+ {'day': 1, 'event': 1, 'eventslist':[{'title': 'title', 'end': None, 'start': '00:00:00'}]},
+ {'day': 2, 'event': 1, 'eventslist':[{'title': 'title', 'end': None, 'start': None}]},
+ {'day': 3, 'event': 1, 'eventslist':[{'title': 'title', 'end': None, 'start': None}]},
+ {'day': 4, 'event': 1, 'eventslist':[{'title': 'title', 'end': None, 'start': None}]},
+ {'day': 5, 'event': 1, 'eventslist':[{'title': 'title', 'end': None, 'start': None}]}
+ ],
+ [
+ {'day': 6, 'event': 1, 'eventslist':[{'title': 'title', 'end': None, 'start': None}]},
+ {'day': 7, 'event': 1, 'eventslist':[{'title': 'title', 'end': None, 'start': None}]},
+ {'day': 8, 'event': 1, 'eventslist':[{'title': 'title', 'end': None, 'start': None}]},
+ {'day': 9, 'event': 1, 'eventslist':[{'title': 'title', 'end': None, 'start': None}]},
+ {'day':10, 'event': 1, 'eventslist':[{'title': 'title', 'end': None, 'start': None}]},
+ {'day':11, 'event': 1, 'eventslist':[{'title': 'title', 'end': None, 'start': None}]},
+ {'day':12, 'event': 1, 'eventslist':[{'title': 'title', 'end': None, 'start': None}]}
+ ],
+ [
+ {'day':13, 'event': 1, 'eventslist':[{'title': 'title', 'end': None, 'start': None}]},
+ {'day':14, 'event': 1, 'eventslist':[{'title': 'title', 'end': None, 'start': None}]},
+ {'day':15, 'event': 1, 'eventslist':[{'title': 'title', 'end': None, 'start': None}]},
+ {'day':16, 'event': 1, 'eventslist':[{'title': 'title', 'end': None, 'start': None}]},
+ {'day':17, 'event': 1, 'eventslist':[{'title': 'title', 'end': None, 'start': None}]},
+ {'day':18, 'event': 1, 'eventslist':[{'title': 'title', 'end': None, 'start': None}]},
+ {'day':19, 'event': 1, 'eventslist':[{'title': 'title', 'end': None, 'start': None}]}
+ ],
+ [
+ {'day':20, 'event': 1, 'eventslist':[{'title': 'title', 'end': None, 'start': None}]},
+ {'day':21, 'event': 1, 'eventslist':[{'title': 'title', 'end': None, 'start': None}]},
+ {'day':22, 'event': 1, 'eventslist':[{'title': 'title', 'end': None, 'start': None}]},
+ {'day':23, 'event': 1, 'eventslist':[{'title': 'title', 'end': None, 'start': None}]},
+ {'day':24, 'event': 1, 'eventslist':[{'title': 'title', 'end': None, 'start': None}]},
+ {'day':25, 'event': 1, 'eventslist':[{'title': 'title', 'end': None, 'start': None}]},
+ {'day':26, 'event': 1, 'eventslist':[{'title': 'title', 'end': None, 'start': None}]}
+ ],
+ [
+ {'day':27, 'event': 1, 'eventslist':[{'title': 'title', 'end': None, 'start': None}]},
+ {'day':28, 'event': 1, 'eventslist':[{'title': 'title', 'end': None, 'start': None}]},
+ {'day':29, 'event': 1, 'eventslist':[{'title': 'title', 'end': None, 'start': None}]},
+ {'day':30, 'event': 1, 'eventslist':[{'title': 'title', 'end': None, 'start': None}]},
+ {'day':31, 'event': 1, 'eventslist':[{'title': 'title', 'end': '23:59:00', 'start': None}]},
+ {'day': 0, 'event': 0, 'eventslist':[]},
+ {'day': 0, 'event': 0, 'eventslist':[]}
+ ]
+ ]
+ assert self.Tool.getEventsForCalendar(month='1', year='2002') == data, self.Tool.getEventsForCalendar(month='1', year='2002')
+
+ def test_getPreviousMonth(self):
+ assert self.Tool.getPreviousMonth(2,2002) == DateTime('1/1/2002')
+ assert self.Tool.getPreviousMonth(1,2002) == DateTime('12/1/2001')
+
+ def test_getNextMonth(self):
+ assert self.Tool.getNextMonth(12,2001) == DateTime('1/1/2002')
+ assert self.Tool.getNextMonth(1,2002) == DateTime('2/1/2002')
+
+ def test_getBeginAndEndTimes(self):
+ assert self.Tool.getBeginAndEndTimes(1,12,2001) == (DateTime('12/1/2001 12:00:00AM'),DateTime('12/1/2001 11:59:59PM'))
+
+ def test_singleDayRendering(self):
+
+ self.Site.Members.folder_factories.invokeFactory(type_name="Event",id='Event1')
+ event = self.app.restrictedTraverse('/CalendarTest/Members/Event1')
+ event.edit( title='title'
+ , description='description'
+ , eventType=( 'eventType', )
+ , effectiveDay=1
+ , effectiveMo=1
+ , effectiveYear=2002
+ , expirationDay=31
+ , expirationMo=1
+ , expirationYear=2002
+ , start_time="00:00"
+ , startAMPM="AM"
+ , stop_time="11:59"
+ , stopAMPM="PM"
+ )
+ self.Site.portal_workflow.doActionFor(
+ event,
+ 'publish',
+ comment='testing')
+
+ assert len(self.Site.portal_calendar.getEventsForThisDay(thisDay=DateTime('1/1/2002'))) == 1
+
+ self.Site.Members.folder_factories.invokeFactory(type_name="Event",id='Event2')
+ event = self.app.restrictedTraverse('/CalendarTest/Members/Event2')
+ event.edit( title='title'
+ , description='description'
+ , eventType=( 'eventType', )
+ , effectiveDay=1
+ , effectiveMo=1
+ , effectiveYear=2002
+ , expirationDay=1
+ , expirationMo=1
+ , expirationYear=2002
+ , start_time="00:00"
+ , startAMPM="AM"
+ , stop_time="11:59"
+ , stopAMPM="PM"
+ )
+ self.Site.portal_workflow.doActionFor(
+ event,
+ 'publish',
+ comment='testing')
+
+ assert len(self.Site.portal_calendar.getEventsForThisDay(thisDay=DateTime('1/1/2002'))) == 2
+
+ self.Site.Members.folder_factories.invokeFactory(type_name="Event",id='Event3')
+ event = self.app.restrictedTraverse('/CalendarTest/Members/Event3')
+ event.edit( title='title'
+ , description='description'
+ , eventType=( 'eventType', )
+ , effectiveDay=12
+ , effectiveMo=12
+ , effectiveYear=2001
+ , expirationDay=1
+ , expirationMo=1
+ , expirationYear=2002
+ , start_time="00:00"
+ , startAMPM="AM"
+ , stop_time="11:59"
+ , stopAMPM="PM"
+ )
+ self.Site.portal_workflow.doActionFor(
+ event,
+ 'publish',
+ comment='testing')
+
+ assert len(self.Site.portal_calendar.getEventsForThisDay(thisDay=DateTime('1/1/2002'))) == 3
+
+ self.Site.Members.folder_factories.invokeFactory(type_name="Event",id='Event4')
+ event = self.app.restrictedTraverse('/CalendarTest/Members/Event4')
+ event.edit( title='title'
+ , description='description'
+ , eventType=( 'eventType', )
+ , effectiveDay=12
+ , effectiveMo=12
+ , effectiveYear=2001
+ , expirationDay=31
+ , expirationMo=1
+ , expirationYear=2002
+ , start_time="00:00"
+ , startAMPM="AM"
+ , stop_time="11:59"
+ , stopAMPM="PM"
+ )
+ self.Site.portal_workflow.doActionFor(
+ event,
+ 'publish',
+ comment='testing')
+
+ assert len(self.Site.portal_calendar.getEventsForThisDay(thisDay=DateTime('1/1/2002'))) == 4
+
+ self.Site.Members.folder_factories.invokeFactory(type_name="Event",id='Event5')
+ event = self.app.restrictedTraverse('/CalendarTest/Members/Event5')
+ event.edit( title='title'
+ , description='description'
+ , eventType=( 'eventType', )
+ , effectiveDay=31
+ , effectiveMo=1
+ , effectiveYear=2002
+ , expirationDay=31
+ , expirationMo=1
+ , expirationYear=2002
+ , start_time="00:00"
+ , startAMPM="AM"
+ , stop_time="11:59"
+ , stopAMPM="PM"
+ )
+ self.Site.portal_workflow.doActionFor(
+ event,
+ 'publish',
+ comment='testing')
+
+ assert len(self.Site.portal_calendar.getEventsForThisDay(thisDay=DateTime('1/1/2002'))) == 4
+
+def test_suite():
+ return TestSuite((
+ makeSuite( TestCalendar ),
+ ))
+
+if __name__ == '__main__':
+ main(defaultTest='test_suite')
=== CMF/CMFCalendar/tests/test_all.py 1.4 => 1.5 ===
def test_suite():
- return build_test_suite('Products.CMFCalendar.tests',['test_Event'])
+ return build_test_suite('Products.CMFCalendar.tests',
+ ['test_Event',
+ 'test_Calendar'])
if __name__ == '__main__':
main(defaultTest='test_suite')