[Erp5-report] r17100 - /erp5/trunk/products/ERP5/tests/testCalendar.py

nobody at svn.erp5.org nobody at svn.erp5.org
Mon Oct 22 17:50:28 CEST 2007


Author: romain
Date: Mon Oct 22 17:50:28 2007
New Revision: 17100

URL: http://svn.erp5.org?rev=17100&view=rev
Log:
First test for erp5_calendar.

Added:
    erp5/trunk/products/ERP5/tests/testCalendar.py

Added: erp5/trunk/products/ERP5/tests/testCalendar.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/tests/testCalendar.py?rev=17100&view=auto
==============================================================================
--- erp5/trunk/products/ERP5/tests/testCalendar.py (added)
+++ erp5/trunk/products/ERP5/tests/testCalendar.py Mon Oct 22 17:50:28 2007
@@ -1,0 +1,747 @@
+##############################################################################
+#
+# Copyright (c) 2007 Nexedi SA and Contributors. All Rights Reserved.
+#          Romain Courteaud <romain at nexedi.com>
+#
+# WARNING: This program as such is intended to be used by professional
+# programmers who take the whole responsability of assessing all potential
+# consequences resulting from its eventual inadequacies and bugs
+# End users who are looking for a ready-to-use solution with commercial
+# garantees and support are strongly adviced to contract a Free Software
+# Service Company
+#
+# This program is Free Software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+##############################################################################
+import os, sys
+if __name__ == '__main__':
+  execfile(os.path.join(sys.path[0], 'framework.py'))
+
+# Needed in order to have a log file inside the current folder
+os.environ['EVENT_LOG_FILE'] = os.path.join(os.getcwd(), 'zLOG.log')
+os.environ['EVENT_LOG_SEVERITY'] = '-300'
+
+from Products.ERP5Type.tests.ERP5TypeTestCase import ERP5TypeTestCase
+from AccessControl.SecurityManagement import newSecurityManager, \
+                                             noSecurityManager
+from Products.ERP5Type.tests.Sequence import Sequence, SequenceList
+from Products.ERP5Type.tests.utils import createZODBPythonScript
+from Products.ERP5Type.tests.utils import removeZODBPythonScript
+from DateTime import DateTime
+
+class TestCalendar(ERP5TypeTestCase):
+
+  run_all_test = 1
+  person_portal_type = "Person"
+  group_calendar_portal_type = "Group Calendar"
+  leave_request_portal_type = "Leave Request"
+  group_presence_period_portal_type = "Group Presence Period"
+  leave_request_period_portal_type = "Leave Request Period"
+  start_date = DateTime()
+  stop_date = start_date + 0.5
+  middle_date = start_date + 0.25
+  periodicity_stop_date = start_date + 2
+
+  def getTitle(self):
+    return "Calendar"
+
+  def getBusinessTemplateList(self):
+    """
+    """
+    return ('erp5_base', 'erp5_calendar')
+
+  def login(self, quiet=0, run=run_all_test):
+    uf = self.getPortal().acl_users
+    uf._doAddUser('rc', '', ['Manager', 'Author', 'Assignor', 
+                             'Assignee', 'Auditor'], [])
+    user = uf.getUserById('rc').__of__(uf)
+    newSecurityManager(None, user)
+
+  def enableLightInstall(self):
+    """
+    You can override this. 
+    Return if we should do a light install (1) or not (0)
+    """
+    return 1
+
+  def enableActivityTool(self):
+    """
+    You can override this.
+    Return if we should create (1) or not (0) an activity tool.
+    """
+    return 1
+
+  def createCategories(self):
+    """
+      Light install create only base categories, so we create
+      some categories for testing them
+    """
+    cal_type_category_list = ['type1']
+    if len(self.category_tool.calendar_period_type.contentValues()) == 0 :
+      for category_id in cal_type_category_list:
+        o = self.category_tool.calendar_period_type.newContent(
+                         portal_type='Category',
+                         id=category_id)
+
+  def stepTic(self,**kw):
+    self.tic()
+
+  def afterSetUp(self, quiet=1, run=0):
+    """
+    Fake after setup
+    """
+    self.category_tool = self.getCategoryTool()
+    self.createCategories()
+
+  def stepCreatePerson(self, sequence=None, sequence_list=None, **kw):
+    """
+    Create an person
+    """
+    portal = self.getPortal()
+    module = portal.getDefaultModule(self.person_portal_type)
+    person = module.newContent(portal_type=self.person_portal_type)
+    sequence.edit(
+        person=person,
+    )
+
+  def stepGetLastCreatedPerson(self, sequence=None, sequence_list=None, **kw):
+    """
+    Create an person
+    """
+    portal = self.getPortal()
+    module = portal.getDefaultModule(self.person_portal_type)
+    id_list = module.contentIds()
+    # More than last, random...
+    person = getattr(module, id_list[-1])
+    sequence.edit(
+        person=person,
+    )
+
+  def stepCreateGroupCalendar(self, sequence=None, 
+                                 sequence_list=None, **kw):
+    """
+    Create an personal calendar
+    """
+    portal = self.getPortal()
+    module = portal.getDefaultModule(self.group_calendar_portal_type)
+    pc = module.newContent(portal_type=self.group_calendar_portal_type)
+    sequence.edit(
+        group_calendar=pc,
+    )
+
+  def stepSetGroupCalendarSource(self, sequence=None, 
+                                    sequence_list=None, **kw):
+    """
+    Set the source
+    """
+    group_calendar = sequence.get('group_calendar')
+    person = sequence.get('person')
+    assignment_list = person.contentValues(portal_type='Assignment')
+    if len(assignment_list) != 0:
+      assignment = assignment_list[0]
+    else:
+      assignment = person.newContent( 
+        portal_type = 'Assignment',
+      )
+    assignment.setCalendarList(
+        assignment.getCalendarList()+[group_calendar.getRelativeUrl()])
+
+  def stepCreateGroupPresencePeriod(self, sequence=None, 
+                                      sequence_list=None, **kw):
+    """
+    Create an personal calendar period
+    """
+    group_calendar = sequence.get('group_calendar')
+    group_presence_period = group_calendar.newContent(
+        portal_type=self.group_presence_period_portal_type,
+        resource='calendar_period_type/type1',
+    )
+    sequence.edit(
+        group_presence_period=group_presence_period,
+    )
+
+  def stepSetGroupPresencePeriodValues(self, sequence=None, 
+                                         sequence_list=None, **kw):
+    """
+    Set values on personal calendar period
+    """
+    group_presence_period = sequence.get('group_presence_period')
+
+  def stepSetGroupPresencePeriodDates(self, sequence=None, 
+                                        sequence_list=None, **kw):
+    """
+    Set values on personal calendar period
+    """
+    group_presence_period = sequence.get('group_presence_period')
+    group_presence_period.edit(
+      start_date=self.start_date,
+      stop_date=self.stop_date,
+    )
+
+  def stepSetGroupPresencePeriodPerStopDate(self, sequence=None, 
+                                        sequence_list=None, **kw):
+    """
+    Set values on personal calendar period
+    """
+    group_presence_period = sequence.get('group_presence_period')
+    group_presence_period.edit(
+      periodicity_stop_date=self.periodicity_stop_date,
+    )
+
+  def stepSetGroupPresencePeriodToCheck(self, sequence=None, 
+                                          sequence_list=None, **kw):
+    """
+    Set personal calendar period to check
+    """
+    group_presence_period = sequence.get('group_presence_period')
+    sequence.edit(obj_to_check=group_presence_period)
+
+  def stepSetGroupCalendarEventPerStopDate(self, sequence=None, 
+                                        sequence_list=None, **kw):
+    """
+    Set values on personal calendar event
+    """
+    group_calendar_event = sequence.get('group_calendar_event')
+    group_calendar_event.edit(
+      periodicity_stop_date=self.periodicity_stop_date,
+    )
+
+  def stepConfirmGroupCalendar(self, sequence=None, 
+                               sequence_list=None, **kw):
+    """
+    Confirm group calendar
+    """
+    group_calendar = sequence.get('group_calendar')
+    self.portal.portal_workflow.doActionFor(
+                          group_calendar,
+                          'confirm_action',
+                          'group_calendar_workflow')
+
+
+  def stepCreateLeaveRequest(self, sequence=None, 
+                                 sequence_list=None, **kw):
+    """
+    Create a personal calendar
+    """
+    portal = self.getPortal()
+    module = portal.getDefaultModule(self.leave_request_portal_type)
+    pc = module.newContent(portal_type=self.leave_request_portal_type)
+    sequence.edit(
+        leave_request=pc,
+    )
+
+  def stepSetLeaveRequestDestination(self, sequence=None, 
+                                         sequence_list=None, **kw):
+    """
+    Set the destination
+    """
+    leave_request = sequence.get('leave_request')
+    person = sequence.get('person')
+    leave_request.setDestinationValue(person)
+
+  def stepCreatePersonalLeavePeriod(self, sequence=None, 
+                                    sequence_list=None, **kw):
+    """
+    Create an personal calendar period
+    """
+    leave_request = sequence.get('leave_request')
+    personal_leave_period = leave_request.newContent(
+        portal_type=self.leave_request_period_portal_type,
+        resource='calendar_period_type/type1',
+    )
+    sequence.edit(
+        personal_leave_period=personal_leave_period,
+    )
+
+  def stepSetPersonalLeavePeriodToCheck(self, sequence=None, 
+                                        sequence_list=None, **kw):
+    """
+    Set personal leave period to check
+    """
+    personal_leave_period = sequence.get('personal_leave_period')
+    sequence.edit(obj_to_check=personal_leave_period)
+
+  def stepSetPersonalLeavePeriodValues(self, sequence=None, 
+                                       sequence_list=None, **kw):
+    """
+    Set values on personal calendar event
+    """
+    personal_leave_period = sequence.get('personal_leave_period')
+
+  def stepSetPersonalLeavePeriodDates(self, sequence=None, 
+                                      sequence_list=None, **kw):
+    """
+    Set values on personal calendar
+    """
+    personal_leave_period = sequence.get('personal_leave_period')
+    personal_leave_period.edit(
+      start_date=self.start_date,
+      stop_date=self.stop_date,
+    )
+
+  def stepSetPersonalLeavePeriodPerStopDate(self, sequence=None, 
+                                            sequence_list=None, **kw):
+    """
+    Set values on personal calendar event
+    """
+    personal_leave_period = sequence.get('personal_leave_period')
+    personal_leave_period.edit(
+      periodicity_stop_date=self.periodicity_stop_date,
+    )
+
+  def stepPlanLeaveRequest(self, sequence=None, 
+                               sequence_list=None, **kw):
+    """
+    Plan personal calendar
+    """
+    leave_request = sequence.get('leave_request')
+    self.portal.portal_workflow.doActionFor(
+                          leave_request,
+                          'plan_action',
+                          'leave_request_workflow')
+
+  def stepConfirmLeaveRequest(self, sequence=None, 
+                               sequence_list=None, **kw):
+    """
+    Confirm personal calendar
+    """
+    leave_request = sequence.get('leave_request')
+    self.portal.portal_workflow.doActionFor(
+                          leave_request,
+                          'confirm_action',
+                          'leave_request_workflow')
+
+  def getSqlUidList(self):
+    """
+    Give the full list of path in the catalog
+    """
+    sql_connection = self.getSQLConnection()
+    sql = 'select uid from stock'
+    result = sql_connection.manage_test(sql)
+    uid_list = [x.uid for x in result]
+    return uid_list
+
+  def getSqlMovementUidList(self):
+    """
+    Give the full list of path in the catalog
+    """
+    sql_connection = self.getSQLConnection()
+    sql = 'select uid from movement'
+    result = sql_connection.manage_test(sql)
+    uid_list = [x.uid for x in result]
+    return uid_list
+
+  def stepCheckNotCatalogued(self, sequence=None, 
+                             sequence_list=None, **kw):
+    """
+    Create an personal calendar period
+    """
+    uid_list = self.getSqlUidList()
+    obj_to_check = sequence.get('obj_to_check')
+    self.assertFalse(obj_to_check.getUid() in uid_list)
+
+  def stepCheckCatalogued(self, sequence=None, 
+                          sequence_list=None, **kw):
+    """
+    Create an personal calendar period
+    """
+    uid_list = self.getSqlUidList()
+    obj_to_check = sequence.get('obj_to_check')
+    self.assertTrue(obj_to_check.getUid() in uid_list)
+
+#     self.assertEquals(len(obj_to_check.getDatePeriodList()),
+#                       uid_list.count(obj_to_check.getUid()))
+
+  def stepCheckCataloguedAsMovement(self, sequence=None, 
+                                    sequence_list=None, **kw):
+    """
+    Create an personal calendar period
+    """
+    uid_list = self.getSqlMovementUidList()
+    obj_to_check = sequence.get('obj_to_check')
+    self.assertTrue(obj_to_check.getUid() in uid_list)
+#     self.assertEquals(len(obj_to_check.getDatePeriodList()),
+#                       uid_list.count(obj_to_check.getUid()))
+
+  def test_01_CatalogCalendarPeriod(self, quiet=0, run=run_all_test):
+    """
+    Test indexing
+    """
+    if not run: return
+    
+    sequence_list = SequenceList()
+    sequence_string = '\
+              CreatePerson \
+              CreateGroupCalendar \
+              SetGroupCalendarSource \
+              CreateGroupPresencePeriod \
+              SetGroupPresencePeriodValues \
+              Tic \
+              SetGroupPresencePeriodToCheck \
+              CheckNotCatalogued \
+              ConfirmGroupCalendar \
+              Tic \
+              CheckNotCatalogued \
+              SetGroupPresencePeriodDates \
+              Tic \
+              CheckCatalogued \
+              SetGroupPresencePeriodPerStopDate \
+              Tic \
+              CheckCatalogued \
+              '
+    sequence_list.addSequenceString(sequence_string)
+    sequence_list.play(self)
+
+  def test_02_CatalogLeaveRequest(self, quiet=0, run=run_all_test):
+    """
+    Test indexing
+    """
+    if not run: return
+    
+    sequence_list = SequenceList()
+    sequence_string = '\
+              CreatePerson \
+              CreateLeaveRequest \
+              SetLeaveRequestDestination \
+              CreatePersonalLeavePeriod \
+              SetPersonalLeavePeriodValues \
+              Tic \
+              SetPersonalLeavePeriodToCheck \
+              CheckNotCatalogued \
+              PlanLeaveRequest \
+              ConfirmLeaveRequest \
+              Tic \
+              CheckNotCatalogued \
+              SetPersonalLeavePeriodDates \
+              Tic \
+              CheckCatalogued \
+              SetPersonalLeavePeriodPerStopDate \
+              Tic \
+              CheckCatalogued \
+              '
+    sequence_list.addSequenceString(sequence_string)
+    sequence_list.play(self)
+
+  def stepCheckGetTimeAvailability(self, sequence=None, 
+                                   sequence_list=None, **kw):
+    """
+    Check getTimeAvailability
+    """
+    obj_to_check = sequence.get('obj_to_check')
+    person = sequence.get('person')
+    start_date = self.start_date
+    stop_date = self.stop_date
+    second_availability = int(stop_date) - int(start_date)
+    date_period_list = obj_to_check._getDatePeriodList()
+
+    # Check 1 period
+    self.assertEquals(second_availability,
+                      person.getAvailableTime(from_date=start_date, 
+                                              to_date=stop_date))
+    self.assertEquals(second_availability,
+                      person.getAvailableTime(from_date=start_date, 
+                                              to_date=stop_date))
+    self.assertEquals(second_availability / 2,
+                      person.getAvailableTime(from_date=start_date, 
+                                              to_date=self.middle_date))
+    self.assertEquals(second_availability / 2,
+                      person.getAvailableTime(from_date=self.middle_date, 
+                                                     to_date=stop_date))
+    # Check 2 periods
+    self.assertEquals(2 * second_availability,
+                      person.getAvailableTime(
+                                         from_date=start_date, 
+                                         to_date=date_period_list[1][1]))
+#     # Check all periods
+#     self.assertEquals(len(date_period_list) * second_availability,
+#                       person.getAvailableTime())
+
+  def stepCheckDoubleGetTimeAvailability(self, sequence=None, 
+                                         sequence_list=None, **kw):
+    """
+    Check getTimeAvailability
+    """
+    obj_to_check = sequence.get('obj_to_check')
+    person = sequence.get('person')
+    start_date = self.start_date
+    stop_date = self.stop_date
+    second_availability = int(stop_date) - int(start_date)
+    # Hop, here is the trick
+    second_availability = 2 * second_availability
+    date_period_list = obj_to_check._getDatePeriodList()
+
+    # Check 1 period
+    self.assertEquals(second_availability,
+                      person.getAvailableTime(from_date=start_date, 
+                                                 to_date=stop_date))
+    # Check 2 periods
+    self.assertEquals(2 * second_availability,
+                      person.getAvailableTime(
+                                         from_date=start_date, 
+                                         to_date=date_period_list[1][1]))
+#     # Check all periods
+#     self.assertEquals(len(date_period_list) * second_availability,
+#                       person.getAvailableTime())
+
+  def stepCheckPersonalTimeAvailability(self, sequence=None, 
+                                   sequence_list=None, **kw):
+    """
+    Check getTimeAvailability
+    """
+    obj_to_check = sequence.get('obj_to_check')
+    person = sequence.get('person')
+    start_date = self.start_date
+    stop_date = self.stop_date
+    second_availability = 0
+    date_period_list = obj_to_check._getDatePeriodList()
+
+    # Check 1 period
+    self.assertEquals(second_availability,
+                      person.getAvailableTime(from_date=start_date, 
+                                              to_date=stop_date))
+    self.assertEquals(second_availability,
+                      person.getAvailableTime(from_date=start_date, 
+                                              to_date=stop_date))
+    self.assertEquals(second_availability / 2,
+                      person.getAvailableTime(from_date=start_date, 
+                                              to_date=self.middle_date))
+    self.assertEquals(second_availability / 2,
+                      person.getAvailableTime(from_date=self.middle_date, 
+                                                     to_date=stop_date))
+    # Check 2 periods
+    self.assertEquals(2 * second_availability,
+                      person.getAvailableTime(
+                                         from_date=start_date, 
+                                         to_date=date_period_list[1][1]))
+#     # Check all periods
+#     self.assertEquals(len(date_period_list) * second_availability,
+#                       person.getAvailableTime())
+
+  def stepCheckCumulativeTimeAvailability(self, sequence=None, 
+                                          sequence_list=None, **kw):
+    """
+    Check getTimeAvailability
+    """
+    obj_to_check = sequence.get('obj_to_check')
+    person = sequence.get('person')
+    start_date = self.start_date
+    stop_date = self.stop_date
+    second_availability = int(stop_date) - int(start_date)
+    date_period_list = obj_to_check._getDatePeriodList()
+
+    # Check 1 period
+    self.assertEquals(0,
+                      person.getAvailableTime(from_date=start_date, 
+                                              to_date=stop_date))
+    # Check 2 periods
+    self.assertEquals(second_availability,
+                      person.getAvailableTime(
+                                         from_date=start_date, 
+                                         to_date=date_period_list[1][1]))
+#     # Check all periods
+#     self.assertEquals(len(date_period_list) * second_availability,
+#                       person.getAvailableTime())
+
+  def test_03_getAvailableTime(self, quiet=0, run=run_all_test):
+    """
+    Test indexing
+    """
+    if not run: return
+    
+    # Test that calendar group increase time availability
+    sequence_list = SequenceList()
+    sequence_string = '\
+              CreatePerson \
+              CreateGroupCalendar \
+              SetGroupCalendarSource \
+              CreateGroupPresencePeriod \
+              SetGroupPresencePeriodValues \
+              Tic \
+              SetGroupPresencePeriodToCheck \
+              ConfirmGroupCalendar \
+              SetGroupPresencePeriodDates \
+              SetGroupPresencePeriodPerStopDate \
+              Tic \
+              CheckCatalogued \
+              CheckGetTimeAvailability \
+              '
+    sequence_list.addSequenceString(sequence_string)
+    
+    # Test getTimeAvailability does not interfere with other documents
+    sequence_list = SequenceList()
+    sequence_string = '\
+              CreatePerson \
+              CreateGroupCalendar \
+              SetGroupCalendarSource \
+              CreateGroupPresencePeriod \
+              SetGroupPresencePeriodValues \
+              Tic \
+              SetGroupPresencePeriodToCheck \
+              ConfirmGroupCalendar \
+              SetGroupPresencePeriodDates \
+              SetGroupPresencePeriodPerStopDate \
+              Tic \
+              CheckCatalogued \
+              CheckGetTimeAvailability \
+              '
+    sequence_list.addSequenceString(sequence_string)
+    sequence_list.play(self)
+    
+    # Test getTimeAvailability is cumulative
+    sequence_list = SequenceList()
+    sequence_string = '\
+              GetLastCreatedPerson \
+              CreateGroupCalendar \
+              SetGroupCalendarSource \
+              CreateGroupPresencePeriod \
+              SetGroupPresencePeriodValues \
+              Tic \
+              SetGroupPresencePeriodToCheck \
+              PlanGroupCalendar \
+              ConfirmGroupCalendar \
+              SetGroupPresencePeriodDates \
+              SetGroupPresencePeriodPerStopDate \
+              Tic \
+              CheckCatalogued \
+              CheckDoubleGetTimeAvailability \
+              '
+    sequence_list.addSequenceString(sequence_string)
+    
+    # Test that leave period decrease time availability
+    sequence_list = SequenceList()
+    sequence_string = '\
+              CreatePerson \
+              CreateLeaveRequest \
+              SetLeaveRequestDestination \
+              CreatePersonalLeavePeriod \
+              SetPersonalLeavePeriodValues \
+              Tic \
+              SetPersonalLeavePeriodToCheck \
+              PlanLeaveRequest \
+              ConfirmLeaveRequest \
+              SetPersonalLeavePeriodDates\
+              SetPersonalLeavePeriodPerStopDate\
+              Tic \
+              CheckCatalogued \
+              CheckPersonalTimeAvailability \
+              '
+    sequence_list.addSequenceString(sequence_string)
+    
+    # Combine object
+    sequence_list = SequenceList()
+    sequence_string = '\
+              CreatePerson \
+              CreateGroupCalendar \
+              SetGroupCalendarSource \
+              CreateGroupPresencePeriod \
+              SetGroupPresencePeriodValues \
+              Tic \
+              SetGroupPresencePeriodToCheck \
+              ConfirmGroupCalendar \
+              SetGroupPresencePeriodDates \
+              SetGroupPresencePeriodPerStopDate \
+              Tic \
+              CheckCatalogued \
+              CheckGetTimeAvailability \
+              \
+              CreateLeaveRequest \
+              SetLeaveRequestDestination \
+              CreatePersonalLeavePeriod \
+              SetPersonalLeavePeriodValues \
+              Tic \
+              PlanLeaveRequest \
+              ConfirmLeaveRequest \
+              SetPersonalLeavePeriodDates\
+              Tic \
+              CheckCumulativeTimeAvailability \
+              '
+    sequence_list.addSequenceString(sequence_string)
+
+    sequence_list.play(self)
+
+  def test_04_getCapacityAvailability(self, quiet=0, run=0):
+    """
+    Test getCapacityAvailability
+    """
+    if not run: return
+    raise "NotImplementedYet"
+    
+    # Test that calendar group increase time availability
+    sequence_list = SequenceList()
+    sequence_string = '\
+              CreatePerson \
+              CreateGroupCalendar \
+              SetGroupCalendarSource \
+              CreateGroupPresencePeriod \
+              SetGroupPresencePeriodValues \
+              Tic \
+              SetGroupPresencePeriodToCheck \
+              ConfirmGroupCalendar \
+              SetGroupPresencePeriodDates \
+              SetGroupPresencePeriodPerStopDate \
+              Tic \
+              CheckCatalogued \
+              CheckGetTimeAvailability \
+              '
+    sequence_list.addSequenceString(sequence_string)
+    
+    # Test getTimeAvailability does not interfere with other documents
+    sequence_list = SequenceList()
+    sequence_string = '\
+              CreatePerson \
+              CreateGroupCalendar \
+              SetGroupCalendarSource \
+              CreateGroupPresencePeriod \
+              SetGroupPresencePeriodValues \
+              Tic \
+              SetGroupPresencePeriodToCheck \
+              ConfirmGroupCalendar \
+              SetGroupPresencePeriodDates \
+              SetGroupPresencePeriodPerStopDate \
+              Tic \
+              CheckCatalogued \
+              CheckGetTimeAvailability \
+              '
+    sequence_list.addSequenceString(sequence_string)
+    sequence_list.play(self)
+    
+    # Test getTimeAvailability is cumulative
+    sequence_list = SequenceList()
+    sequence_string = '\
+              GetLastCreatedPerson \
+              CreateGroupCalendar \
+              SetGroupCalendarSource \
+              CreateGroupPresencePeriod \
+              SetGroupPresencePeriodValues \
+              Tic \
+              SetGroupPresencePeriodToCheck \
+              ConfirmGroupCalendar \
+              SetGroupPresencePeriodDates \
+              SetGroupPresencePeriodPerStopDate \
+              Tic \
+              CheckCatalogued \
+              CheckDoubleGetTimeAvailability \
+              '
+    sequence_list.addSequenceString(sequence_string)
+    sequence_list.play(self)
+
+if __name__ == '__main__':
+  framework()
+else:
+  import unittest
+  def test_suite():
+    suite = unittest.TestSuite()
+    suite.addTest(unittest.makeSuite(TestCalendar))
+    return suite




More information about the Erp5-report mailing list