[Erp5-report] r28989 - /erp5/trunk/products/ERP5/tests/testProject.py

nobody at svn.erp5.org nobody at svn.erp5.org
Fri Sep 11 21:30:13 CEST 2009


Author: rafael
Date: Fri Sep 11 21:30:12 2009
New Revision: 28989

URL: http://svn.erp5.org?rev=28989&view=rev
Log:
Added draft unit test for Project. It only test scripts used for
interface and tabs for now.


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

Added: erp5/trunk/products/ERP5/tests/testProject.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/tests/testProject.py?rev=28989&view=auto
==============================================================================
--- erp5/trunk/products/ERP5/tests/testProject.py (added)
+++ erp5/trunk/products/ERP5/tests/testProject.py [utf8] Fri Sep 11 21:30:12 2009
@@ -1,0 +1,165 @@
+#############################################################################
+#
+# Copyright  2009 Nexedi SA Contributors. All Rights Reserved.
+#             Rafael Monnerat <rafael 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 unittest
+
+from Products.ERP5Type.tests.ERP5TypeTestCase import ERP5TypeTestCase
+import transaction
+from DateTime import DateTime
+
+class TestProject(ERP5TypeTestCase):
+  """ Test for Project API and scripts and forms 
+      used for Project Document.
+  """
+  def getTitle(self):
+    return "Project"
+
+  def getBusinessTemplateList(self):
+    """Returns list of BT to be installed."""
+    return ('erp5_base', 
+            'erp5_pdm', 
+            'erp5_trade', 
+            'erp5_project',)
+
+  def afterSetUp(self):
+    """Setup the fixture.
+    """
+    self.portal = self.getPortal()
+
+    for rule_id in ['default_order_rule', 'default_delivery_rule']:
+      rule = getattr(self.portal.portal_rules, rule_id)
+      if rule.getValidationState() == 'draft':
+        rule.validate()
+
+    # create organisations
+    if not self.portal.organisation_module.has_key('Organisation_1'):
+      org = self.portal.organisation_module.newContent(
+                              title='Organisation_1',
+                              id='Organisation_1')
+
+    # create organisations
+    if not self.portal.organisation_module.has_key('Organisation_2'):
+      org = self.portal.organisation_module.newContent(
+                              title='Organisation_2',
+                              id='Organisation_2')
+    # create project
+    if not self.portal.project_module.has_key('Project_1'):
+      project = self.portal.project_module.newContent(
+                              portal_type='Project',
+                              reference='Project_1',
+                              title='Project_1',
+                              id='Project_1')
+
+    # Create resources
+    module = self.portal.product_module
+    if not module.has_key('development'):
+      product = module.newContent(
+          portal_type='Product',
+          id='development',
+          title='Development',
+          reference='ref 1',
+          quantity_unit='unit'
+          )
+
+    # and all this available to catalog
+    transaction.commit()
+    self.tic()
+
+  def beforeTearDown(self):
+    """Remove all documents.
+    """
+    transaction.abort()
+
+    portal = self.getPortal()
+    portal.task_module.manage_delObjects(
+                      list(portal.task_module.objectIds()))
+    portal.task_report_module.manage_delObjects(
+                      list(portal.task_report_module.objectIds()))
+    portal.portal_simulation.manage_delObjects(
+                      list(portal.portal_simulation.objectIds()))
+
+    transaction.commit()
+    self.tic()
+
+  def testProject_getSourceProjectRelatedTaskReportList(self):
+    """
+     Basic Test if the script behaviour as expected.
+    """
+    # Create Tasks
+    task_module = self.getPortalObject().task_module
+    project = self.getPortalObject().project_module.Project_1
+
+    task = task_module.newContent(portal_type='Task',
+              title='Task 1',
+              task_line_quantity=3,
+              resource='product_module/development',
+              source='organisation_module/Organisation_1',
+              source_section='organisation_module/Organisation_1',
+              destination='organisation_module/Organisation_2',
+              destination_section='organisation_module/Organisation_2',
+              source_project='project_module/Project_1',
+              start_date=DateTime('2009/07/23'),
+              stop_date=DateTime('2009/07/26'),
+              )
+
+    self.stepTic()
+    task.plan()
+    
+    self.stepTic()
+    # Script Used for Task Tab
+    task_line_list = project.Project_getSourceProjectRelatedTaskList()
+    self.assertEquals(1, len(task_line_list))
+    self.assertEquals(task_line_list[0], task.default_task_line)
+ 
+    # Script Used for Task Report Tab
+    # It shows planned tasks also.
+    task_line_list = project.Project_getSourceProjectRelatedTaskReportList()
+    self.assertEquals(1, len(task_line_list))
+    self.assertEquals(task_line_list[0], task.default_task_line)
+
+    task.confirm()
+    self.stepTic()
+
+    # Script Used for Task Tab keep only showing tasks.
+    task_line_list = project.Project_getSourceProjectRelatedTaskList()
+    self.assertEquals(1, len(task_line_list))
+    self.assertEquals(task_line_list[0], task.default_task_line)
+ 
+    # Script Used for Task Report Tab
+    # It shows planned tasks also.
+    task_line_list = project.Project_getSourceProjectRelatedTaskReportList()
+    self.assertEquals(1, len(task_line_list))
+    self.assertNotEquals(task_line_list[0], task.default_task_line)
+    self.assertNotEquals(task_line_list[0].getCausalityRelatedValue(), 
+                           task.default_task_line)
+
+def test_suite():
+  suite = unittest.TestSuite()
+  suite.addTest(unittest.makeSuite(TestProject))
+  return suite




More information about the Erp5-report mailing list