[Erp5-report] r9369 - /erp5/trunk/products/ERP5/tests/testDms.py
nobody at svn.erp5.org
nobody at svn.erp5.org
Wed Aug 23 20:50:39 CEST 2006
Author: bartek
Date: Wed Aug 23 20:50:37 2006
New Revision: 9369
URL: http://svn.erp5.org?rev=9369&view=rev
Log:
first draft
Added:
erp5/trunk/products/ERP5/tests/testDms.py
Added: erp5/trunk/products/ERP5/tests/testDms.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/tests/testDms.py?rev=9369&view=auto
==============================================================================
--- erp5/trunk/products/ERP5/tests/testDms.py (added)
+++ erp5/trunk/products/ERP5/tests/testDms.py Wed Aug 23 20:50:37 2006
@@ -1,0 +1,460 @@
+##############################################################################
+#
+# Copyright (c) 2004 Nexedi SARL and Contributors. All Rights Reserved.
+# Sebastien Robin <seb 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.
+#
+##############################################################################
+
+
+
+#
+# Skeleton ZopeTestCase
+#
+
+from random import randint
+
+import os, sys
+if __name__ == '__main__':
+ execfile(os.path.join(sys.path[0], 'framework.py'))
+
+
+class FileObject(file):
+ filename=''
+
+# 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 Testing import ZopeTestCase
+from Products.ERP5Type.tests.ERP5TypeTestCase import ERP5TypeTestCase
+from AccessControl.SecurityManagement import newSecurityManager, noSecurityManager
+from DateTime import DateTime
+from Acquisition import aq_base, aq_inner
+from zLOG import LOG
+#from Products.ERP5Type.DateUtils import addToDate
+#import time
+import os
+from Products.ERP5Type import product_path
+#from DateTime import DateTime
+
+class TestDms(ERP5TypeTestCase):
+ """
+ """
+
+ # Different variables used for this test
+ run_all_test = 1
+ #source_company_id = 'Nexedi'
+ #destination_company_id = 'Coramy'
+ #component_id = 'brick'
+ #sales_order_id = '1'
+ #quantity = 10
+ #base_price = 0.7832
+
+ def getTitle(self):
+ return "DMS"
+
+ #def populate(self, quiet=1, run=1):
+ def afterSetUp(self, quiet=1, run=1):
+ self.createCategories()
+ self.login()
+ portal = self.getPortal()
+ #catalog_tool = self.getCatalogTool()
+ # XXX This does not works
+ #catalog_tool.reindexObject(portal)
+
+ # First reindex
+ #LOG('afterSetup',0,'portal.portal_categories.immediateReindexObject')
+ #portal.portal_categories.immediateReindexObject()
+ #LOG('afterSetup',0,'portal.portal_simulation.immediateReindexObject')
+ #portal.portal_simulation.immediateReindexObject()
+
+ def getDocumentModule(self):
+ return getattr(self.getPortal(),'document_module')
+
+ def getBusinessTemplateList(self):
+ return ('erp5_base','erp5_trade','erp5_project','erp5_dms')
+
+ def getNeededCategoryList(self):
+ return ('function/publication/reviewer','function/project/director','function/hq')
+
+ def createCategories(self):
+ """Create the categories for our test. """
+ # create categories
+ for cat_string in self.getNeededCategoryList():
+ base_cat = cat_string.split("/")[0]
+ path = self.getPortal().portal_categories[base_cat]
+ for cat in cat_string.split("/")[1:]:
+ if not cat in path.objectIds():
+ path = path.newContent(
+ portal_type='Category',
+ id=cat,
+ immediate_reindex=1)
+ else:
+ path = path[cat]
+
+ def createObjects(self):
+ p1=self.getPortal().person_module.newContent(portal_type='Person',id='1',first_name='John',last_name='McCartney')
+
+ def login(self, quiet=0, run=run_all_test):
+ uf = self.getPortal().acl_users
+ uf._doAddUser('seb', '', ['Manager'], [])
+ user = uf.getUserById('seb').__of__(uf)
+ newSecurityManager(None, user)
+
+ def test_01_HasEverything(self, quiet=0, run=run_all_test):
+ # Test if portal_synchronizations was created
+ if not run: return
+ if not quiet:
+ ZopeTestCase._print('\nTest Has Everything ')
+ LOG('Testing... ',0,'testHasEverything')
+ self.failUnless(self.getCategoryTool()!=None)
+ self.failUnless(self.getSimulationTool()!=None)
+ self.failUnless(self.getTypeTool()!=None)
+ self.failUnless(self.getSqlConnection()!=None)
+ self.failUnless(self.getCatalogTool()!=None)
+
+ def _addRoleToDoc(self,doc):
+ role=doc.newContent(portal_type='Role Definition',id='1')
+ role._edit(agent='person_module/1',role_name='Assignor')
+
+ def printAndCheck(self,doc):
+ #ZopeTestCase._print(str(doc.__ac_local_roles__.get('hq','')))
+ #ZopeTestCase._print(str(doc.__ac_local_roles__))
+ self.assert_(u'Auditor' in doc.__ac_local_roles__.get('hq',[]))
+
+ def test_02_ObjectCreation(self,quiet=0,run=run_all_test):
+ if not quiet:
+ ZopeTestCase._print('\nTest Object Creation')
+ LOG('Testing... ',0,'test_02_ObjectCreation')
+ dm=self.getPortal().document_module
+ doctext=dm.newContent(portal_type='Text')
+ roletext=self._addRoleToDoc(doctext)
+ self.printAndCheck(doctext)
+ docspread=dm.newContent(portal_type='Spreadsheet')
+ rolespread=self._addRoleToDoc(docspread)
+ self.printAndCheck(docspread)
+ docpres=dm.newContent(portal_type='Presentation')
+ rolepres=self._addRoleToDoc(docpres)
+ self.printAndCheck(docpres)
+ docgraph=dm.newContent(portal_type='Graphic')
+ rolegraph=self._addRoleToDoc(docgraph)
+ self.printAndCheck(docgraph)
+
+ def test_03_BasicConversion(self,quiet=0,run=run_all_test):
+ if not quiet:
+ ZopeTestCase._print('\nTest Basic Conversion')
+ LOG('Testing... ',0,'test_03_BasicConversion')
+ dm=self.getPortal().document_module
+ doctext=dm.newContent(portal_type='Text')
+ doctext._getServerCoordinates=lambda:('127.0.0.1',8080)
+ f=FileObject('/var/lib/zope/Products/ERP5/tests/test.doc')
+ f.filename='test.doc'
+ doctext._edit(file=f)
+ f.close()
+ self.assert_(doctext.isFileUploaded())
+ self.assert_(not doctext.hasOOfile())
+ ZopeTestCase._print('\n originalloaded '+str(doctext.getOriginalFilename()))
+ ZopeTestCase._print('\n isFileUploaded '+str(doctext.isFileUploaded()))
+ ZopeTestCase._print('\n hasOOfile '+str(doctext.hasOOfile()))
+ doctext.convert()
+ self.assert_(not doctext.isFileUploaded())
+ self.assert_(doctext.hasOOfile())
+ ZopeTestCase._print('\n isFileUploaded '+str(doctext.isFileUploaded()))
+ ZopeTestCase._print('\n hasOOfile '+str(doctext.hasOOfile()))
+ ZopeTestCase._print('\n'+str(doctext.getTargetFormatItemList()))
+
+
+##########################################################
+# USEFUL EXAMPLES THAT WE DON'T RUN #
+##########################################################
+
+ def newAlarm(self):
+ """
+ Create an empty alarm
+ """
+ a_tool = self.getAlarmTool()
+ return a_tool.newContent()
+
+ def _test_02_Initialization(self, quiet=0, run=run_all_test):
+ """
+ Test some basic things right after the creation
+ """
+ if not run: return
+ if not quiet:
+ message = 'Test Initialization'
+ ZopeTestCase._print('\n%s ' % message)
+ LOG('Testing... ',0,message)
+ alarm = self.newAlarm()
+ now = DateTime()
+ date = addToDate(now,day=1)
+ alarm.setPeriodicityStartDate(date)
+ self.assertEquals(alarm.getAlarmDate(),date)
+ alarm.setNextAlarmDate(current_date=now) # This should not do change the alarm date
+ self.assertEquals(alarm.getAlarmDate(),date)
+
+ def _test_03_EveryHour(self, quiet=0, run=run_all_test):
+ if not run: return
+ if not quiet:
+ message = 'Test Every Hour'
+ ZopeTestCase._print('\n%s ' % message)
+ LOG('Testing... ',0,message)
+ alarm = self.newAlarm()
+ now = DateTime()
+ date = addToDate(now,day=2)
+ alarm.setPeriodicityStartDate(date)
+ alarm.setPeriodicityHourFrequency(1)
+ alarm.setNextAlarmDate(current_date=now)
+ self.assertEquals(alarm.getAlarmDate(),date)
+ LOG(message + ' now :',0,now)
+ now = addToDate(now,day=2)
+ LOG(message + ' now :',0,now)
+ alarm.setNextAlarmDate(current_date=now)
+ next_date = addToDate(date,hour=1)
+ self.assertEquals(alarm.getAlarmDate(),next_date)
+ now = addToDate(now,hour=1,minute=5)
+ alarm.setNextAlarmDate(current_date=now)
+ next_date = addToDate(next_date,hour=1)
+ self.assertEquals(alarm.getAlarmDate(),next_date)
+
+ def _test_04_Every3Hours(self, quiet=0, run=run_all_test):
+ if not run: return
+ if not quiet:
+ message = 'Test Every 3 Hours'
+ ZopeTestCase._print('\n%s ' % message)
+ LOG('Testing... ',0,message)
+ alarm = self.newAlarm()
+ now = DateTime()
+ hour_to_remove = now.hour() % 3
+ now = addToDate(now,hour=-hour_to_remove)
+ date = addToDate(now,day=2)
+ alarm.setPeriodicityStartDate(date)
+ alarm.setPeriodicityHourFrequency(3)
+ alarm.setNextAlarmDate(current_date=now)
+ self.assertEquals(alarm.getAlarmDate(),date)
+ LOG(message + ' now :',0,now)
+ now = addToDate(now,day=2)
+ LOG(message + ' now :',0,now)
+ alarm.setNextAlarmDate(current_date=now)
+ next_date = addToDate(date,hour=3)
+ self.assertEquals(alarm.getAlarmDate(),next_date)
+ now = addToDate(now,hour=3,minute=7,second=4)
+ alarm.setNextAlarmDate(current_date=now)
+ next_date = addToDate(next_date,hour=3)
+ self.assertEquals(alarm.getAlarmDate(),next_date)
+
+ def _test_05_SomeHours(self, quiet=0, run=run_all_test):
+ if not run: return
+ if not quiet:
+ message = 'Test Some Hours'
+ ZopeTestCase._print('\n%s ' % message)
+ LOG('Testing... ',0,message)
+ # year/month/day hour:minute:second
+ right_first_date = DateTime('%i/%i/%i %i:%i:%d' % (2004,10,6,15,00,00))
+ now = DateTime('%i/%i/%i %i:%i:%d' % (2004,10,6,15,00,00))
+ right_second_date = DateTime('%i/%i/%i %i:%i:%d' % (2004,10,6,21,00,00))
+ right_third_date = DateTime('%i/%i/%i %i:%i:%d' % (2004,10,7,06,00,00))
+ right_fourth_date = DateTime('%i/%i/%i %i:%i:%d' % (2004,10,7,10,00,00))
+ alarm = self.newAlarm()
+ hour_list = (6,10,15,21)
+ alarm.setPeriodicityStartDate(now)
+ alarm.setPeriodicityHourList(hour_list)
+ self.assertEquals(alarm.getAlarmDate(),right_first_date)
+ alarm.setNextAlarmDate(current_date=right_first_date)
+ self.assertEquals(alarm.getAlarmDate(),right_second_date)
+ alarm.setNextAlarmDate(current_date=right_second_date)
+ self.assertEquals(alarm.getAlarmDate(),right_third_date)
+ alarm.setNextAlarmDate(current_date=right_third_date)
+ self.assertEquals(alarm.getAlarmDate(),right_fourth_date)
+
+ def _test_06_EveryDayOnce(self, quiet=0, run=run_all_test):
+ if not run: return
+ if not quiet:
+ message = 'Every Day Once'
+ ZopeTestCase._print('\n%s ' % message)
+ LOG('Testing... ',0,message)
+ # year/month/day hour:minute:second
+ now = DateTime('%i/%i/%i %i:%i:%d' % (2004,10,6,10,00,00))
+ right_first_date = DateTime('%i/%i/%i %i:%i:%d' % (2004,10,6,10,00,00))
+ right_second_date = DateTime('%i/%i/%i %i:%i:%d' % (2004,10,7,10,00,00))
+ right_third_date = DateTime('%i/%i/%i %i:%i:%d' % (2004,10,8,10,00,00))
+ alarm = self.newAlarm()
+ alarm.setPeriodicityStartDate(now)
+ alarm.setPeriodicityDayFrequency(1)
+ alarm.setPeriodicityHourList((10,))
+ self.assertEquals(alarm.getAlarmDate(),right_first_date)
+ alarm.setNextAlarmDate(current_date=right_first_date)
+ self.assertEquals(alarm.getAlarmDate(),right_second_date)
+ alarm.setNextAlarmDate(current_date=right_second_date)
+ self.assertEquals(alarm.getAlarmDate(),right_third_date)
+
+ def _test_07_Every3DaysSomeHours(self, quiet=0, run=run_all_test):
+ """- every 3 days at 14 and 15 and 17"""
+ if not run: return
+ if not quiet:
+ message = 'Every 3 Days Some Hours'
+ ZopeTestCase._print('\n%s ' % message)
+ LOG('Testing... ',0,message)
+ # year/month/day hour:minute:second
+ right_first_date = DateTime('%i/%i/%i %i:%i:%d' % (2004,10,6,14,00,00))
+ right_second_date = DateTime('%i/%i/%i %i:%i:%d' % (2004,10,6,15,00,00))
+ right_third_date = DateTime('%i/%i/%i %i:%i:%d' % (2004,10,6,17,00,00))
+ right_fourth_date = DateTime('%i/%i/%i %i:%i:%d' % (2004,10,9,14,00,00))
+ alarm = self.newAlarm()
+ alarm.setPeriodicityStartDate(right_first_date)
+ alarm.setPeriodicityDayFrequency(3)
+ alarm.setPeriodicityHourList((14,15,17))
+ self.assertEquals(alarm.getAlarmDate(),right_first_date)
+ alarm.setNextAlarmDate(current_date=right_first_date)
+ self.assertEquals(alarm.getAlarmDate(),right_second_date)
+ alarm.setNextAlarmDate(current_date=right_second_date)
+ self.assertEquals(alarm.getAlarmDate(),right_third_date)
+ alarm.setNextAlarmDate(current_date=right_third_date)
+ self.assertEquals(alarm.getAlarmDate(),right_fourth_date)
+
+ def _test_08_SomeWeekDaysSomeHours(self, quiet=0, run=run_all_test):
+ """- every monday and friday, at 6 and 15"""
+ if not run: return
+ if not quiet:
+ message = 'Some Week Days Some Hours'
+ ZopeTestCase._print('\n%s ' % message)
+ LOG('Testing... ',0,message)
+ # year/month/day hour:minute:second
+ right_first_date = DateTime('%i/%i/%i %i:%i:%d' % (2004,9,27,6,00,00))
+ right_second_date = DateTime('%i/%i/%i %i:%i:%d' % (2004,9,27,15,00,00))
+ right_third_date = DateTime('%i/%i/%i %i:%i:%d' % (2004,10,1,6,00,00))
+ right_fourth_date = DateTime('%i/%i/%i %i:%i:%d' % (2004,10,1,15,00,00))
+ alarm = self.newAlarm()
+ alarm.setPeriodicityStartDate(right_first_date)
+ alarm.setPeriodicityWeekDayList(('Monday','Friday'))
+ alarm.setPeriodicityHourList((6,15))
+ self.checkDate(alarm, right_first_date, right_second_date, right_third_date, right_fourth_date)
+ #self.assertEquals(alarm.getAlarmDate(),right_first_date)
+ #alarm.setNextAlarmDate(current_date=right_first_date)
+ #self.assertEquals(alarm.getAlarmDate(),right_second_date)
+ #alarm.setNextAlarmDate(current_date=right_second_date)
+ #self.assertEquals(alarm.getAlarmDate(),right_third_date)
+ #alarm.setNextAlarmDate(current_date=right_third_date)
+ #self.assertEquals(alarm.getAlarmDate(),right_fourth_date)
+
+
+ def checkDate(self,alarm,*args):
+ """
+ the basic test
+ """
+ for date in args[:-1]:
+ LOG('checkDate, checking date...:',0,date)
+ self.assertEquals(alarm.getAlarmDate(),date)
+ alarm.setNextAlarmDate(current_date=date)
+ self.assertEquals(alarm.getAlarmDate(),args[-1])
+
+ def _test_09_SomeMonthDaysSomeHours(self, quiet=0, run=run_all_test):
+ """- every 1st and 15th every month, at 12 and 14"""
+ if not run: return
+ if not quiet:
+ message = 'Some Month Days Some Hours'
+ ZopeTestCase._print('\n%s ' % message)
+ LOG('Testing... ',0,message)
+ # year/month/day hour:minute:second
+ right_first_date = DateTime('%i/%i/%i %i:%i:%d' % (2004,10,01,12,00,00))
+ right_second_date = DateTime('%i/%i/%i %i:%i:%d' % (2004,10,01,14,00,00))
+ right_third_date = DateTime('%i/%i/%i %i:%i:%d' % (2004,10,15,12,00,00))
+ right_fourth_date = DateTime('%i/%i/%i %i:%i:%d' % (2004,10,15,14,00,00))
+ alarm = self.newAlarm()
+ alarm.setPeriodicityStartDate(right_first_date)
+ alarm.setPeriodicityMonthDayList((1,15))
+ alarm.setPeriodicityHourList((12,14))
+ self.checkDate(alarm, right_first_date, right_second_date, right_third_date, right_fourth_date)
+
+ def _test_10_OnceEvery2Month(self, quiet=0, run=run_all_test):
+ """- every 1st day of every 2 month, at 6"""
+ if not run: return
+ if not quiet:
+ message = 'Once Every 2 Month'
+ ZopeTestCase._print('\n%s ' % message)
+ LOG('Testing... ',0,message)
+ # year/month/day hour:minute:second
+ right_first_date = DateTime('%i/%i/%i %i:%i:%d' % (2004,10,01,6,00,00))
+ right_second_date = DateTime('%i/%i/%i %i:%i:%d' % (2004,12,01,6,00,00))
+ right_third_date = DateTime('%i/%i/%i %i:%i:%d' % (2005,2,01,6,00,00))
+ alarm = self.newAlarm()
+ alarm.setPeriodicityStartDate(right_first_date)
+ alarm.setPeriodicityMonthDayList((1,))
+ alarm.setPeriodicityMonthFrequency(2)
+ alarm.setPeriodicityHourList((6,))
+ self.checkDate(alarm, right_first_date, right_second_date, right_third_date)
+
+ def _test_11_EveryDayOnceWeek41And42(self, quiet=0, run=run_all_test):
+ if not run: return
+ if not quiet:
+ message = 'Every Day Once Week 41 And 43'
+ ZopeTestCase._print('\n%s ' % message)
+ LOG('Testing... ',0,message)
+ # year/month/day hour:minute:second
+ right_first_date = DateTime('%i/%i/%i %i:%i:%d' % (2004,10,10,6,00,00))
+ right_second_date = DateTime('%i/%i/%i %i:%i:%d' % (2004,10,18,6,00,00))
+ right_third_date = DateTime('%i/%i/%i %i:%i:%d' % (2004,10,19,6,00,00))
+ right_fourth_date = DateTime('%i/%i/%i %i:%i:%d' % (2004,10,20,6,00,00))
+ alarm = self.newAlarm()
+ alarm.setPeriodicityStartDate(right_first_date)
+ alarm.setPeriodicityHourList((6,))
+ alarm.setPeriodicityWeekList((41,43))
+ self.checkDate(alarm, right_first_date, right_second_date, right_third_date,right_fourth_date)
+
+ def _test_12_Every5Minutes(self, quiet=0, run=run_all_test):
+ if not run: return
+ if not quiet:
+ message = 'Test Every 5 Minutes'
+ ZopeTestCase._print('\n%s ' % message)
+ LOG('Testing... ',0,message)
+ alarm = self.newAlarm()
+ now = DateTime()
+ minute_to_remove = now.minute() % 5
+ now = addToDate(now,minute=-minute_to_remove)
+ date = addToDate(now,day=2)
+ alarm.setPeriodicityStartDate(date)
+ alarm.setPeriodicityMinuteFrequency(5)
+ alarm.setNextAlarmDate(current_date=now)
+ self.assertEquals(alarm.getAlarmDate(),date)
+ LOG(message + ' now :',0,now)
+ now = addToDate(now,day=2)
+ LOG(message + ' now :',0,now)
+ alarm.setNextAlarmDate(current_date=now)
+ next_date = addToDate(date,minute=5)
+ self.assertEquals(alarm.getAlarmDate(),next_date)
+ now = addToDate(now,minute=5,second=14)
+ alarm.setNextAlarmDate(current_date=now)
+ next_date = addToDate(next_date,minute=5)
+ self.assertEquals(alarm.getAlarmDate(),next_date)
+
+if __name__ == '__main__':
+ framework()
+else:
+ import unittest
+ def test_suite():
+ suite = unittest.TestSuite()
+ suite.addTest(unittest.makeSuite(TestDms))
+ return suite
+
+
+# vim: syntax=python shiftwidth=2
More information about the Erp5-report
mailing list