From c441db2c1c7a081f51bb42d638b432d22255b13e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=A9rome=20Perrin?= <jerome@nexedi.com>
Date: Mon, 23 May 2016 05:38:02 +0000
Subject: [PATCH] testERP5Web; test website traversal hook for websites and
 also websections

---
 product/ERP5/tests/testERP5Web.py | 76 +++++++++++++++++++++----------
 1 file changed, 51 insertions(+), 25 deletions(-)

diff --git a/product/ERP5/tests/testERP5Web.py b/product/ERP5/tests/testERP5Web.py
index c3598c8e75..41a906aeaa 100644
--- a/product/ERP5/tests/testERP5Web.py
+++ b/product/ERP5/tests/testERP5Web.py
@@ -43,6 +43,55 @@ HTTP_OK = 200
 MOVED_TEMPORARILY = 302
 
 
+class WebTraversalHookTestMixin(object):
+  """Mixin class to test the WebSiteTraversalHook on both websection and website.
+  """
+  def getBusinessTemplateList(self):
+    return ('erp5_base', 'erp5_web', )
+
+  def test_TraversalHook_on_newContent(self):
+    """a WebSiteTraversalHook is added on websections and websites automatically.
+    """
+    self.assertEquals(1, len(self.web_section.__before_traverse__))
+    self.assertIsInstance(
+      self.web_section.__before_traverse__.values()[0],
+      self.traversal_hook_class)
+
+  def test_TraversalHook_on_clone(self):
+    """a WebSiteTraversalHook is correctly updated after cloning a websection/website.
+    """
+    cloned_web_section = self.web_section.Base_createCloneDocument(batch_mode=True)
+    self.assertEquals(1, len(cloned_web_section.__before_traverse__))
+
+  def test_TraversalHook_on_change_id(self):
+    """a TraversalHook is correctly updated after changing websection id.
+    """
+    self.tic()
+    self.web_section.setId("new_id")
+    self.assertEquals(1, len(self.web_section.__before_traverse__))
+
+class TestWebSiteTraversalHook(WebTraversalHookTestMixin, ERP5TypeTestCase):
+  def afterSetUp(self):
+    super(TestWebSiteTraversalHook, self).afterSetUp()
+    self.web_section = self.portal.web_site_module.newContent(
+      portal_type='Web Site',
+    )
+    from Products.ERP5Type.Document.WebSite import WebSiteTraversalHook
+    self.traversal_hook_class = WebSiteTraversalHook
+
+class TestWebSectionTraversalHook(WebTraversalHookTestMixin, ERP5TypeTestCase):
+  def afterSetUp(self):
+    super(TestWebSectionTraversalHook, self).afterSetUp()
+    web_site = self.portal.web_site_module.newContent(
+      portal_type='Web Site',
+    )
+    self.web_section = web_site.newContent(portal_type='Web Section')
+
+    from Products.ERP5Type.Document.WebSection import WebSectionTraversalHook
+    self.traversal_hook_class = WebSectionTraversalHook
+
+
+
 class TestERP5Web(ERP5TypeTestCase):
   """Test for erp5_web business template.
   """
@@ -169,32 +218,7 @@ class TestERP5Web(ERP5TypeTestCase):
     except:
       self.fail('Cataloging of the Web Site failed.')
 
-  def test_WebSiteTraversalHook_on_newContent(self):
-    """a WebSiteTraversalHook is added on websites automatically.
-    """
-    web_site = self.portal.web_site_module.newContent(
-      portal_type='Web Site',
-    )
-    self.assertEquals(1, len(web_site.__before_traverse__))
-
-  def test_WebSiteTraversalHook_on_clone(self):
-    """a WebSiteTraversalHook is correctly updated after cloning a website.
-    """
-    web_site = self.portal.web_site_module.newContent(
-      portal_type='Web Site',
-    )
-    cloned_web_site = web_site.Base_createCloneDocument(batch_mode=True)
-    self.assertEquals(1, len(cloned_web_site.__before_traverse__))
 
-  def test_WebSiteTraversalHook_on_change_id(self):
-    """a WebSiteTraversalHook is correctly updated after changing website id.
-    """
-    web_site = self.portal.web_site_module.newContent(
-      portal_type='Web Site',
-    )
-    self.tic()
-    web_site.setId("new_id")
-    self.assertEquals(1, len(web_site.__before_traverse__))
 
   def test_02_EditSimpleWebPage(self):
     """
@@ -1959,4 +1983,6 @@ def test_suite():
   suite.addTest(unittest.makeSuite(TestERP5Web))
   suite.addTest(unittest.makeSuite(TestERP5WebWithSimpleSecurity))
   suite.addTest(unittest.makeSuite(TestERP5WebCategoryPublicationWorkflow))
+  suite.addTest(unittest.makeSuite(TestWebSiteTraversalHook))
+  suite.addTest(unittest.makeSuite(TestWebSectionTraversalHook))
   return suite
-- 
2.30.9