From 0e8d2b67023523bccebba05e86777cc5b4d37ee1 Mon Sep 17 00:00:00 2001
From: Romain Courteaud <romain@nexedi.com>
Date: Tue, 23 Oct 2007 17:17:58 +0000
Subject: [PATCH] Check that simulation movement are not merged when building
 task report line.

git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@17141 20353a03-c40f-0410-a6d1-a30d3c3de9de
---
 product/ERP5/tests/testTask.py | 110 ++++++++++++++++++++++++++++-----
 1 file changed, 93 insertions(+), 17 deletions(-)

diff --git a/product/ERP5/tests/testTask.py b/product/ERP5/tests/testTask.py
index f0b3562ac6..44d2114538 100644
--- a/product/ERP5/tests/testTask.py
+++ b/product/ERP5/tests/testTask.py
@@ -72,6 +72,7 @@ class TestTaskMixin:
                        stepCreateSimpleTask \
                        stepFillTaskWithData \
                        stepCreateTaskLine \
+                       stepFillTaskLineWithData \
                        stepConfirmTask \
                        stepTic \
                        stepSetTaskReport '
@@ -170,33 +171,43 @@ class TestTaskMixin:
     task.edit(
       title = "Task",
     )
-    sequence.edit(task = task)
+    sequence.edit(task=task)
 
-  def stepFillTaskWithData(self, sequence=None, sequence_list=None, **kw):
+  def stepSetTaskValues(self, sequence=None, sequence_list=None, **kw):
     """
-      Fill created task with some necessary data.
+    Fill created task with some necessary data.
     """
     task = sequence.get('task')
     project = sequence.get('project')
-    requirement = sequence.get('requirement')
     resource = sequence.get('resource_list')[0]
     organisation_list = sequence.get('organisation_list')
     organisation1 = organisation_list[0]
     organisation2 = organisation_list[1]
     task.edit(source_value=organisation1,
               source_section_value=organisation1,
-              destination_value=organisation1,
+              destination_value=organisation2,
               destination_section_value=organisation2,
               source_project_value=project,
               description=self.task_description % task.getId(),
-              task_line_resource_value = resource,
-              task_line_quantity = self.default_quantity,
-              task_line_price = self.default_price,
-              task_line_requirement_value = requirement,
               start_date = self.datetime + 10,
               stop_date = self.datetime + 20,)
     sequence.edit( task = task)
 
+  def stepFillTaskWithData(self, sequence=None, sequence_list=None, **kw):
+    """
+      Fill created task with some necessary data.
+    """
+    self.stepSetTaskValues(sequence=sequence, 
+                           sequence_list=sequence_list, **kw)
+    task = sequence.get('task')
+    resource = sequence.get('resource_list')[0]
+    requirement = sequence.get('requirement')
+    task.edit(task_line_resource_value = resource,
+              task_line_quantity = self.default_quantity,
+              task_line_price = self.default_price,
+              task_line_requirement_value = requirement,
+    )
+
   def stepCreateSimpleTaskReport(self,sequence=None, sequence_list=None, **kw):
     """
       Create a task report.
@@ -278,19 +289,24 @@ class TestTaskMixin:
     """
       Create task line and fill with dummy data.
     """
-    organisation = sequence.get('organisation_list')[0]
-    resource1 = sequence.get('resource_list')[1]
-    portal = self.getPortal()
     task = sequence.get('task')
     task_line = task.newContent(
         portal_type=self.task_line_portal_type,
-        title='New Task Line',
+        title='New Task Line')
+    sequence.edit(task_line=task_line)
+
+  def stepFillTaskLineWithData(self, sequence=None, sequence_list=None, **kw):
+    """
+    Fill task line with dummy data.
+    """
+    organisation = sequence.get('organisation_list')[0]
+    resource1 = sequence.get('resource_list')[1]
+    task_line = sequence.get('task_line')
+    task_line.edit(
         source_value=organisation,
-        destination_value=organisation,
         resource_value=resource1,
         quantity=self.default_quantity,
         price=self.default_price)
-    sequence.edit(task_line=task_line)
   
   def stepVerifyGeneratedTaskReportLines(self, sequence=None,
                                          sequence_list=None, **kw):
@@ -353,9 +369,41 @@ class TestTaskMixin:
     """
     task = sequence.get('task')
     task_report = task.getCausalityRelatedValueList(
-                                                portal_type = 'Task Report')[0]
-    sequence.edit( task_report = task_report)
+                                                portal_type='Task Report')[0]
+    sequence.edit(task_report=task_report)
 
+  def stepVerifyMergedTaskLine(self, sequence=None,
+                               sequence_list=None, **kw):
+    """
+    Verify that simulation generated report is correct.
+    """
+    task = sequence.get('task')
+    task_report = sequence.get('task_report')
+    self.assertEquals('confirmed', task_report.getSimulationState())
+    self.assertEquals(task.getSource(), task_report.getSource())
+    self.assertEquals(task.getSourceSection(), task_report.getSourceSection())
+    self.assertEquals(task.getSourceProject(), task_report.getSourceProject())
+    self.assertEquals(task.getDestination(), task_report.getDestination())
+    self.assertEquals(task.getDestinationSection(),
+                      task_report.getDestinationSection())
+    self.assertEquals(task.getDestinationDecision(),
+                      task_report.getDestinationDecision())
+    self.assertEquals(task.getTitle(),
+                      task_report.getTitle())
+    self.assertEquals(task.getDescription(),
+                      task_report.getDescription())
+    self.assertEquals(task.getPredecessor(), task_report.getPredecessor())
+    self.assertEquals(task.getDescription(), task_report.getDescription())
+    self.assertEquals(len(task_report.contentValues()), 2)
+    for task_report_line in task_report.contentValues():
+      self.assertEquals(task.contentValues()[0].getResource(), 
+                        task_report_line.getResource())
+      self.assertEquals(task.contentValues()[0].getQuantity(), 
+                        task_report_line.getQuantity())
+      self.assertEquals(task.contentValues()[0].getPrice(), 
+                        task_report_line.getPrice())
+      self.assertEquals(task.contentValues()[0].getRequirement(), 
+                        task_report_line.getRequirement())
 
 class TestTask(TestTaskMixin, ERP5TypeTestCase):
   """
@@ -428,6 +476,34 @@ class TestTask(TestTaskMixin, ERP5TypeTestCase):
     sequence_list.addSequenceString(sequence_string)
     sequence_list.play(self)
 
+  def test_04_checkNotMergedTaskReportLine(self, quiet=0, run=run_all_test):
+    """
+    Check that a task report can not be the created from a merged of multiple
+    task lines.
+    """
+    if not run: return
+    sequence_list = SequenceList()
+    sequence_string = 'stepCreateOrganisation \
+                       stepCreateOrganisation \
+                       stepCreateResource \
+                       stepCreateResource \
+                       stepCreateSimpleTask \
+                       stepSetTaskValues \
+                       stepCreateTaskLine \
+                       stepFillTaskLineWithData \
+                       stepCreateTaskLine \
+                       stepFillTaskLineWithData \
+                       stepConfirmTask \
+                       stepTic \
+                       stepSetTaskReport \
+                       stepVerifyMergedTaskLine \
+                       stepStartTaskReport \
+                       stepFinishTaskReport \
+                       stepCloseTaskReport \
+                       '
+    sequence_list.addSequenceString(sequence_string)
+    sequence_list.play(self)
+
 def test_suite():
   suite = unittest.TestSuite()
   suite.addTest(unittest.makeSuite(TestTask))
-- 
2.30.9