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

nobody at svn.erp5.org nobody at svn.erp5.org
Thu Aug 28 14:46:35 CEST 2008


Author: jerome
Date: Thu Aug 28 14:46:30 2008
New Revision: 23229

URL: http://svn.erp5.org?rev=23229&view=rev
Log:
test for new leave request report

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

Modified: erp5/trunk/products/ERP5/tests/testCalendar.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/tests/testCalendar.py?rev=23229&r1=23228&r2=23229&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/tests/testCalendar.py (original)
+++ erp5/trunk/products/ERP5/tests/testCalendar.py Thu Aug 28 14:46:30 2008
@@ -26,7 +26,7 @@
 #
 ##############################################################################
 
-from Products.ERP5Type.tests.ERP5TypeTestCase import ERP5TypeTestCase
+from Products.ERP5Type.tests.ERP5TypeTestCase import ERP5ReportTestCase
 from Products.ERP5Type.Base import _aq_reset
 from AccessControl.SecurityManagement import newSecurityManager, \
                                              noSecurityManager
@@ -35,7 +35,7 @@
 from Products.ERP5Type.tests.utils import removeZODBPythonScript
 from DateTime import DateTime
 
-class TestCalendar(ERP5TypeTestCase):
+class TestCalendar(ERP5ReportTestCase):
 
   run_all_test = 1
   person_portal_type = "Person"
@@ -68,12 +68,17 @@
       Light install create only base categories, so we create
       some categories for testing them
     """
-    cal_type_category_list = ['type1']
+    cal_type_category_list = ['type1', 'type2', 'type3']
     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)
+
+    if 'my_group' not in self.category_tool.group.contentIds():
+      self.category_tool.group.newContent(portal_type='Category',
+                                          id='my_group')
+
 
   def stepTic(self,**kw):
     self.tic()
@@ -1359,6 +1364,107 @@
                         available_time_movement_list])
 
 
+  def test_PersonModule_viewLeaveRequestReport(self):
+    # in this test, type1 is the type for presences, type2 & type3 are types
+    # for leaves.
+    organisation = self.portal.organisation_module.newContent(
+                                portal_type='Organisation',
+                                group='my_group')
+
+    group_calendar = self.portal.group_calendar_module.newContent(
+                                  portal_type='Group Calendar')
+    group_calendar_period = group_calendar.newContent(
+                                  portal_type='Group Presence Period')
+    group_calendar_period.setStartDate('2008/01/01 08:00')
+    group_calendar_period.setStopDate('2008/01/01 18:00')
+    group_calendar_period.setResourceValue(
+          self.portal.portal_categories.calendar_period_type.type1)
+    group_calendar.confirm()
+
+    person1 = self.portal.person_module.newContent(
+                                portal_type='Person',
+                                title='Person 1',
+                                career_reference='1',
+                                subordination_value=organisation)
+    assignment = person1.newContent(portal_type='Assignment',
+                                    calendar_value=group_calendar)
+    leave_request1 = self.portal.leave_request_module.newContent(
+                                  portal_type='Leave Request',
+                                  destination_value=person1)
+    leave_request1_period = leave_request1.newContent(
+                                  portal_type='Leave Request Period')
+    leave_request1_period.setStartDate('2008/01/01 09:00')
+    leave_request1_period.setStopDate('2008/01/01 10:00')
+    leave_request1_period.setResourceValue(
+          self.portal.portal_categories.calendar_period_type.type2)
+    leave_request1.confirm()
+
+    person2 = self.portal.person_module.newContent(
+                                portal_type='Person',
+                                title='Person 2',
+                                career_reference='2',
+                                subordination_value=organisation)
+    assignment = person2.newContent(portal_type='Assignment',
+                                    calendar_value=group_calendar)
+    leave_request2 = self.portal.leave_request_module.newContent(
+                                  portal_type='Leave Request',
+                                  destination_value=person2)
+    leave_request2_period1 = leave_request2.newContent(
+                                  portal_type='Leave Request Period')
+    leave_request2_period1.setStartDate('2008/01/01 09:00')
+    leave_request2_period1.setStopDate('2008/01/01 10:00')
+    leave_request2_period1.setResourceValue(
+          self.portal.portal_categories.calendar_period_type.type2)
+    leave_request2_period2 = leave_request2.newContent(
+                                  portal_type='Leave Request Period')
+    leave_request2_period2.setStartDate('2008/01/01 10:00')
+    leave_request2_period2.setStopDate('2008/01/01 11:30')
+    leave_request2_period2.setResourceValue(
+          self.portal.portal_categories.calendar_period_type.type3)
+    leave_request2.confirm()
+
+    get_transaction().commit()
+    self.tic()
+
+    # set request variables and render                 
+    request_form = self.portal.REQUEST
+    request_form['from_date'] = DateTime(2008, 1, 1)
+    request_form['to_date'] = DateTime(2009, 1, 1)
+    request_form['node_category'] = 'group/my_group'
+    
+    report_section_list = self.getReportSectionList(
+                             self.portal.person_module,
+                             'PersonModule_viewLeaveRequestReport')
+    self.assertEquals(1, len(report_section_list))
+      
+    line_list = self.getListBoxLineList(report_section_list[0])
+    data_line_list = [l for l in line_list if l.isDataLine()]
+    self.assertEquals(2, len(data_line_list))
+
+    self.assertEquals(data_line_list[0].column_id_list,
+        ['person_career_reference', 'person_title',
+         'calendar_period_type/type2', 'calendar_period_type/type3', 'total'])
+
+    self.checkLineProperties(data_line_list[0],
+                             person_career_reference='1',
+                             person_title='Person 1',
+                             total=1.0,
+                             **{'calendar_period_type/type2': 1.0,})
+    self.checkLineProperties(data_line_list[1],
+                             person_career_reference='2',
+                             person_title='Person 2',
+                             total=2.5,
+                             **{'calendar_period_type/type2': 1.0,
+                                'calendar_period_type/type3': 1.5,})
+
+    self.failUnless(line_list[-1].isStatLine())
+    self.checkLineProperties(line_list[-1],
+                             total=3.5,
+                             **{'calendar_period_type/type2': 2.0,
+                                'calendar_period_type/type3': 1.5,})
+                             
+
+
 import unittest
 def test_suite():
   suite = unittest.TestSuite()




More information about the Erp5-report mailing list