[Erp5-report] r15118 - /erp5/trunk/products/ERP5/tests/testERP5Web.py

nobody at svn.erp5.org nobody at svn.erp5.org
Tue Jul 3 10:41:36 CEST 2007


Author: ivan
Date: Tue Jul  3 10:41:36 2007
New Revision: 15118

URL: http://svn.erp5.org?rev=15118&view=rev
Log:
Refactor and extend test suite (more test should follow). 


Modified:
    erp5/trunk/products/ERP5/tests/testERP5Web.py

Modified: erp5/trunk/products/ERP5/tests/testERP5Web.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/tests/testERP5Web.py?rev=15118&r1=15117&r2=15118&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/tests/testERP5Web.py (original)
+++ erp5/trunk/products/ERP5/tests/testERP5Web.py Tue Jul  3 10:41:36 2007
@@ -28,27 +28,23 @@
 ##############################################################################
 
 import os
-import sys
 import unittest
 
 from AccessControl.SecurityManagement import newSecurityManager
 from Testing import ZopeTestCase
 from Products.ERP5Type.tests.ERP5TypeTestCase import ERP5TypeTestCase
 
-HTTP_OK = 200
-HTTP_UNAUTHORIZED = 401
-HTTP_REDIRECT = 302
+LANGUAGE_LIST = ('en', 'fr', 'de', 'bg',)
 
 class TestERP5Web(ERP5TypeTestCase, ZopeTestCase.Functional):
   """Test for erp5_web business template.
   """
   run_all_test = 1
-  quiet = 1
+  quiet = 0
   manager_username = 'zope'
   manager_password = 'zope'
   website_id = 'test'
 
-  web_site_portal_type = 'Web Site'
 
   def getTitle(self):
     return "ERP5Web"
@@ -63,26 +59,110 @@
     """
     Return the list of required business templates.
     """
-    return ('erp5_base', 'erp5_web')
+    return ('erp5_base', 'erp5_web', 
+            'erp5_dms', 'erp5_dms_mysql_innodb_catalog',)
 
   def afterSetUp(self):
     self.login()
-    self.portal = self.getPortal()
+    portal = self.getPortal()
     self.web_page_module = self.portal.web_page_module
+    self.web_site_module = self.portal.web_site_module
     self.portal_id = self.portal.getId()
-    self.auth = '%s:%s' % (self.manager_username, self.manager_password)
-    self.getPortal().web_site_module.newContent(portal_type = 'Web Site', 
-                                                id = self.website_id)
-
-  def test_01_WebSite_recatalog(self, quiet=quiet, run=run_all_test):
+
+  def setupWebSite(self, **kw):
+    """
+      Setup Web Site
+    """
+    portal = self.getPortal()
+    request = self.app.REQUEST
+    
+    # add supported languages for Localizer
+    localizer = portal.Localizer
+    for language in LANGUAGE_LIST:
+      localizer.manage_addLanguage(language = language)
+      
+    # create website
+    if hasattr(self.web_site_module, self.website_id):
+      self.web_site_module.manage_delObjects(self.website_id)
+    website = self.getPortal().web_site_module.newContent(portal_type = 'Web Site', 
+                                                          id = self.website_id,
+                                                          **kw)
+    get_transaction().commit()
+    self.tic()
+    return website
+    
+  def setupWebSection(self, **kw):
+    """
+      Setup Web Section
+    """
+    web_site_module = self.portal.getDefaultModule('Web Site')
+    website = web_site_module[self.website_id]
+    websection = website.newContent(portal_type = 'Web Section', **kw)
+    self.websection = websection
+    kw = dict(criterion_property_list = 'portal_type',
+              membership_criterion_base_category_list = '',
+              membership_criterion_category_list = '',)
+    websection.edit(**kw)
+    websection.setCriterion(property = 'portal_type',
+                            identity = ['Web Page'],
+                            max = '', 
+                            min = '')
+                            
+    get_transaction().commit()
+    self.tic()
+    return websection
+   
+
+  def setupWebSitePages(self,
+                        prefix,
+                        suffix = None, 
+                        version = '0.1', 
+                        language_list = LANGUAGE_LIST):
+    """
+      Setup some Web Pages.
+    """
+    webpage_list = []
+    portal = self.getPortal()
+    request = self.app.REQUEST
+    web_site_module = self.portal.getDefaultModule('Web Site')
+    website = web_site_module[self.website_id]
+    
+    # create sample web pages
+    for language in language_list:
+      if suffix is not None:
+        reference = '%s-%s' %(prefix, language)
+      else:
+        reference = prefix
+      webpage = self.web_page_module.newContent(portal_type = 'Web Page', 
+                                                reference = reference,
+                                                version = version,
+                                                language = language)
+      webpage.publish()
+      webpage.reindexObject()
+      self.assertEquals(language, webpage.getLanguage())
+      self.assertEquals(reference, webpage.getReference())
+      self.assertEquals(version, webpage.getVersion())
+      self.assertEquals('published', webpage.getValidationState())
+      webpage_list.append(webpage)
+    
+    get_transaction().commit()
+    self.tic()
+    return webpage_list
+    
+
+  def test_01_WebSiteRecatalog(self, quiet=quiet, run=run_all_test):
     """
       Test that a recataloging works for Web Site documents
     """
-    if not run: return
-
-    # Create new Web Site document
-    portal = self.getPortal()
-    web_site_module = self.portal.getDefaultModule(self.web_site_portal_type)
+    if not run:
+      return
+    if not quiet:
+      message = '\ntest_01_WebSiteRecatalog'
+      ZopeTestCase._print(message)
+    
+    self.setupWebSite()
+    portal = self.getPortal()
+    web_site_module = self.portal.getDefaultModule('Web Site')
     web_site = web_site_module[self.website_id]
 
     self.assertTrue(web_site is not None)
@@ -94,19 +174,30 @@
       self.fail('Cataloging of the Web Site failed.')
 
 
-  def test_02_EditSimpleWebPage(self):
+  def test_02_EditSimpleWebPage(self, quiet=quiet, run=run_all_test):
     """
       Simple Case of creating a web page.
     """
+    if not run:
+      return
+    if not quiet:
+      message = '\ntest_02_EditSimpleWebPage'
+      ZopeTestCase._print(message)
     page = self.web_page_module.newContent(portal_type='Web Page')
     page.edit(text_content='<b>OK</b>')
     self.assertEquals('text/html', page.getTextFormat())
     self.assertEquals('<b>OK</b>', page.getTextContent())
     
-  def test_03_createWebSiteUser(self):
+  def test_03_CreateWebSiteUser(self, quiet=quiet, run=run_all_test):
     """
       Create Web site User.
     """
+    if not run:
+      return
+    if not quiet:
+      message = '\ntest_03_CreateWebSiteUser'
+      ZopeTestCase._print(message)
+    self.setupWebSite()
     portal = self.getPortal()
     request = self.app.REQUEST
     kw = dict(reference = 'web',
@@ -133,6 +224,46 @@
     user = uf.getUserById( kw['reference'])
     self.assertEquals(str(user),  kw['reference'])
     self.assertEquals(1, user.has_role(('Member', 'Authenticated',)))
+    
+  def test_04_WebPageTranslation(self, quiet=quiet, run=run_all_test):
+    """
+      Simple Case of showing the proper Web Page based on 
+      current user selected language in browser.
+    """
+    if not run:
+      return
+    if not quiet:
+      message = '\ntest_04_WebPageTranslation'
+      ZopeTestCase._print(message)
+    portal = self.getPortal()
+    request = self.app.REQUEST
+    website = self.setupWebSite()
+    websection = self.setupWebSection()
+    page_reference = 'default-webpage'
+    webpage_list  = self.setupWebSitePages(prefix = page_reference)
+   
+    # set default web page for section
+    found_by_reference = portal.portal_catalog(name = page_reference,
+                                               portal_type = 'Web Page')
+    found =  found_by_reference[0].getObject()
+    websection.edit(categories_list = ['aggregate/%s' %found.getRelativeUrl(),])
+    self.assertEqual([found.getReference(),],
+                      websection.getAggregateReferenceList())
+    # even though we create many pages we should get only one
+    # this is the most recent one since all share the same reference
+    self.assertEquals(1, len(websection.WebSection_getDocumentValueList()))
+     
+    # use already created few pages in different languages with same reference
+    # and check that we always get the right one based on selected 
+    # by us language
+    for language in LANGUAGE_LIST:
+      # set default language in Localizer only to check that we get
+      # the corresponding web page for language. 
+      # XXX: Extend API so we can select language from REQUEST
+      portal.Localizer.manage_changeDefaultLang(language = language)
+      default_document = websection.getDefaultDocumentValue()
+      self.assertEquals(language, default_document.getLanguage())
+
 
 def test_suite():
   suite = unittest.TestSuite()




More information about the Erp5-report mailing list