From b097cbd4e381eeb23610d5852bcb067b2cb5c260 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=C5=81ukasz=20Nowak?= <luke@nexedi.com>
Date: Thu, 8 Jul 2010 14:56:34 +0000
Subject: [PATCH]  - deliver helper method _testSubContentReindexing and reuse
 it to test various types

git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@36991 20353a03-c40f-0410-a6d1-a30d3c3de9de
---
 product/ERP5/tests/testOrder.py       | 70 ++++++++++-----------
 product/ERP5/tests/testPackingList.py | 88 ++++++---------------------
 2 files changed, 56 insertions(+), 102 deletions(-)

diff --git a/product/ERP5/tests/testOrder.py b/product/ERP5/tests/testOrder.py
index d5c8f90313..a638b5e4f8 100644
--- a/product/ERP5/tests/testOrder.py
+++ b/product/ERP5/tests/testOrder.py
@@ -87,6 +87,33 @@ class TestOrderMixin:
   def unwrap_catalogObjectList(self):
     Catalog.catalogObjectList = self.original_catalogObjectList
 
+  def _testSubContentReindexing(self, parent_document, children_document_list):
+    """Helper method which shall be called *before* tic or commit"""
+    self.portal.catalogged_object_path_dict = PersistentMapping()
+    transaction.commit()
+    expected_path_list = [q.getPath() for q in children_document_list +
+        [parent_document]]
+    try:
+      # wrap call to catalogObjectList
+      self.wrap_catalogObjectList()
+      self.stepTic()
+      self.assertSameSet(
+        self.portal.catalogged_object_path_dict.keys(),
+        expected_path_list
+      )
+      # do real assertions
+      self.portal.catalogged_object_path_dict = PersistentMapping()
+      transaction.commit()
+      parent_document.reindexObject()
+      self.stepTic()
+      self.assertSameSet(
+        self.portal.catalogged_object_path_dict.keys(),
+        expected_path_list
+      )
+    finally:
+      # unwrap catalogObjectList
+      self.unwrap_catalogObjectList()
+
   def setUpPreferences(self):
     #create apparel variation preferences
     portal_preferences = self.getPreferenceTool()
@@ -2861,40 +2888,15 @@ class TestOrder(TestOrderMixin, ERP5TypeTestCase):
   def test_subcontent_reindexing(self):
     """Tests, that modification on Order are propagated to lines and cells
     during reindxation"""
-    self.portal.catalogged_object_path_dict = PersistentMapping()
-    transaction.commit()
-    try:
-      # wrap call to catalogObjectList
-      self.wrap_catalogObjectList()
-      # prepare test data
-      order = self.portal.getDefaultModule(self.order_portal_type).newContent(
-                                portal_type=self.order_portal_type)
-      order_line = order.newContent(portal_type=self.order_line_portal_type)
-      inner_order_line = order.newContent(
-          portal_type=self.order_line_portal_type).newContent(
-              portal_type=self.order_line_portal_type)
-      order_cell = order_line.newContent(
-          portal_type=self.order_cell_portal_type)
-      expected_path_list = [order.getPath(), order_line.getPath(),
-          inner_order_line.getPath(), order_cell.getPath()]
-      self.stepTic()
-      # check that all would be catalogged
-      self.assertSameSet(
-        self.portal.catalogged_object_path_dict.keys(),
-        expected_path_list
-      )
-      # do real assertions
-      self.portal.catalogged_object_path_dict = PersistentMapping()
-      transaction.commit()
-      order.reindexObject()
-      self.stepTic()
-      self.assertSameSet(
-        self.portal.catalogged_object_path_dict.keys(),
-        expected_path_list
-      )
-    finally:
-      # unwrap catalogObjectList
-      self.unwrap_catalogObjectList()
+    order = self.portal.getDefaultModule(self.order_portal_type).newContent(
+                              portal_type=self.order_portal_type)
+    order_line = order.newContent(portal_type=self.order_line_portal_type)
+    inner_order_line = order_line.newContent(
+            portal_type=self.order_line_portal_type)
+    order_cell = order_line.newContent(
+        portal_type=self.order_cell_portal_type)
+    self._testSubContentReindexing(order, [order_line, inner_order_line,
+      order_cell])
 
 def test_suite():
   suite = unittest.TestSuite()
diff --git a/product/ERP5/tests/testPackingList.py b/product/ERP5/tests/testPackingList.py
index 13650a0475..9e32dd188c 100644
--- a/product/ERP5/tests/testPackingList.py
+++ b/product/ERP5/tests/testPackingList.py
@@ -1576,78 +1576,30 @@ class TestPackingList(TestPackingListMixin, ERP5TypeTestCase) :
   def test_subcontent_reindexing_packing_list_line_cell(self):
     """Tests, that indexation of Packing List are propagated to subobjects
     during reindxation"""
-    self.portal.catalogged_object_path_dict = PersistentMapping()
-    transaction.commit()
-    try:
-      # wrap call to catalogObjectList
-      self.wrap_catalogObjectList()
-      # prepare test data
-      packing_list = self.portal.getDefaultModule(
-          self.packing_list_portal_type).newContent(
-              portal_type=self.packing_list_portal_type)
-      packing_list_line = packing_list.newContent(
-          portal_type=self.packing_list_line_portal_type)
-      packing_list_cell = packing_list_line.newContent(
-          portal_type=self.packing_list_cell_portal_type)
-      expected_path_list = [packing_list.getPath(),
-          packing_list_line.getPath(), packing_list_cell.getPath()]
-      self.stepTic()
-      # check that all would be catalogged
-      self.assertSameSet(
-        self.portal.catalogged_object_path_dict.keys(),
-        expected_path_list
-      )
-      # do real assertions
-      self.portal.catalogged_object_path_dict = PersistentMapping()
-      transaction.commit()
-      packing_list.reindexObject()
-      self.stepTic()
-      self.assertSameSet(
-        self.portal.catalogged_object_path_dict.keys(),
-        expected_path_list
-      )
-    finally:
-      # unwrap catalogObjectList
-      self.unwrap_catalogObjectList()
+    packing_list = self.portal.getDefaultModule(
+        self.packing_list_portal_type).newContent(
+            portal_type=self.packing_list_portal_type)
+    packing_list_line = packing_list.newContent(
+        portal_type=self.packing_list_line_portal_type)
+    packing_list_cell = packing_list_line.newContent(
+        portal_type=self.packing_list_cell_portal_type)
+    self._testSubContentReindexing(packing_list, [packing_list_line,
+      packing_list_cell])
 
   def test_subcontent_reindexing_packing_list_container_line_cell(self):
     """Tests, that indexation of Packing List are propagated to subobjects
     during reindxation, for Container, Container Line and Container Cell"""
-    self.portal.catalogged_object_path_dict = PersistentMapping()
-    transaction.commit()
-    try:
-      # wrap call to catalogObjectList
-      self.wrap_catalogObjectList()
-      # prepare test data
-      packing_list = self.portal.getDefaultModule(
-          self.packing_list_portal_type).newContent(
-              portal_type=self.packing_list_portal_type)
-      container = packing_list.newContent(
-          portal_type=self.container_portal_type)
-      container_line = container.newContent(
-          portal_type=self.container_line_portal_type)
-      container_cell = container_line.newContent(
-          portal_type=self.container_cell_portal_type)
-      expected_path_list = [packing_list.getPath(), container.getPath(),
-          container_line.getPath(), container_cell]
-      self.stepTic()
-      # check that all would be catalogged
-      self.assertSameSet(
-        self.portal.catalogged_object_path_dict.keys(),
-        expected_path_list
-      )
-      # do real assertions
-      self.portal.catalogged_object_path_dict = PersistentMapping()
-      transaction.commit()
-      packing_list.reindexObject()
-      self.stepTic()
-      self.assertSameSet(
-        self.portal.catalogged_object_path_dict.keys(),
-        expected_path_list
-      )
-    finally:
-      # unwrap catalogObjectList
-      self.unwrap_catalogObjectList()
+    packing_list = self.portal.getDefaultModule(
+        self.packing_list_portal_type).newContent(
+            portal_type=self.packing_list_portal_type)
+    container = packing_list.newContent(
+        portal_type=self.container_portal_type)
+    container_line = container.newContent(
+        portal_type=self.container_line_portal_type)
+    container_cell = container_line.newContent(
+        portal_type=self.container_cell_portal_type)
+    self._testSubContentReindexing(packing_list, [container, container_line,
+      container_cell])
 
 class TestAutomaticSolvingPackingList(TestPackingListMixin, ERP5TypeTestCase):
   quiet = 0
-- 
2.30.9