From d193ed01d413a0c6d5468b306cf6b5c894d1514a Mon Sep 17 00:00:00 2001 From: Romain Courteaud <romain@nexedi.com> Date: Thu, 8 Jul 2010 16:13:43 +0000 Subject: [PATCH] Reproduce the expected behaviour of the web site/section edition when language in URL is used. git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@36995 20353a03-c40f-0410-a6d1-a30d3c3de9de --- product/ERP5/tests/testERP5Web.py | 129 ++++++++++++++++++++++++++++++ 1 file changed, 129 insertions(+) diff --git a/product/ERP5/tests/testERP5Web.py b/product/ERP5/tests/testERP5Web.py index 70ea163f85..bd4e38ed23 100644 --- a/product/ERP5/tests/testERP5Web.py +++ b/product/ERP5/tests/testERP5Web.py @@ -39,8 +39,11 @@ from Testing import ZopeTestCase from Products.ERP5Type.tests.ERP5TypeTestCase import ERP5TypeTestCase from Products.ERP5Type.tests.utils import DummyLocalizer from Products.ERP5Type.tests.utils import createZODBPythonScript +from Products.ERP5Type.tests.backportUnittest import expectedFailure LANGUAGE_LIST = ('en', 'fr', 'de', 'bg',) +HTTP_OK = 200 +MOVED_TEMPORARILY = 302 class TestERP5Web(ERP5TypeTestCase): """Test for erp5_web business template. @@ -1158,6 +1161,132 @@ Hé Hé Hé!""", page.asText().strip()) self.assertEqual(request.traverse(path).absolute_url().split('/')[-1], '404.error.page') + @expectedFailure + def test_17_WebSectionEditionWithLanguageInURL(self): + """ + Check that editing a web section with the language in the URL + does not prevent indexation. + + - Create a web site + - Activate the language in the URL + - Create a web section + - Access it using another language and edit it + - Check that web section is correctly indexed + """ + portal = self.getPortal() + request = self.app.REQUEST + + language = 'de' + + website = self.setupWebSite() + # Check that language in defined in the URL + self.assertEquals(True, website.getStaticLanguageSelection()) + self.assertNotEquals(language, website.getDefaultAvailableLanguage()) + + websection = self.setupWebSection() + self.assertEquals(websection.getId(), websection.getTitle()) + + transaction.commit() + self.tic() + + response = self.publish('/%s/%s/%s/%s/Base_editAndEditAsWeb' % \ + (self.portal.getId(), website.getRelativeUrl(), + language, websection.getId()), + basic='ERP5TypeTestCase:', + request_method='POST', + extra={ + 'form_id': 'WebSection_view', + 'form_action': 'Base_edit', + 'edit_document_url': '%s/%s/%s/WebSection_view' % \ + (website.absolute_url(), language, + websection.getId()), + 'field_my_title': '%s_edited' % websection.getId(), + } + ) + + self.assertEquals(MOVED_TEMPORARILY, response.getStatus()) + new_location = response.getHeader('Location') + new_location = new_location.split('/', 3)[-1] + + transaction.commit() + self.tic() + + response = self.publish(new_location, basic='ERP5TypeTestCase:',) + self.assertEquals(HTTP_OK, response.getStatus()) + self.assertEquals('text/html; charset=utf-8', + response.getHeader('content-type')) + self.assertTrue("Data updated." in response.getBody()) + + transaction.commit() + self.tic() + + self.assertEquals('%s_edited' % websection.getId(), websection.getTitle()) + self.assertEquals(1, len(self.portal.portal_catalog( + relative_url=websection.getRelativeUrl(), + title=websection.getTitle()))) + + @expectedFailure + def test_18_WebSiteEditionWithLanguageInURL(self): + """ + Check that editing a web section with the language in the URL + does not prevent indexation. + + - Create a web site + - Activate the language in the URL + - Access it using another language and edit it + - Check that web site is correctly modified + """ + portal = self.getPortal() + request = self.app.REQUEST + + language = 'de' + + website = self.setupWebSite() + # Check that language in defined in the URL + self.assertEquals(True, website.getStaticLanguageSelection()) + self.assertNotEquals(language, website.getDefaultAvailableLanguage()) + + self.assertEquals(website.getId(), website.getTitle()) + + transaction.commit() + self.tic() + + response = self.publish('/%s/%s/%s/Base_editAndEditAsWeb' % \ + (self.portal.getId(), website.getRelativeUrl(), + language), + basic='ERP5TypeTestCase:', + request_method='POST', + extra={ + 'form_id': 'WebSite_view', + 'form_action': 'Base_edit', + 'edit_document_url': '%s/%s/WebSite_view' % \ + (website.absolute_url(), language), + 'field_my_title': '%s_edited' % website.getId(), + 'field_my_id': language, + } + ) + + self.assertEquals(MOVED_TEMPORARILY, response.getStatus()) + new_location = response.getHeader('Location') + new_location = new_location.split('/', 3)[-1] + + transaction.commit() + self.tic() + + response = self.publish(new_location, basic='ERP5TypeTestCase:',) + self.assertEquals(HTTP_OK, response.getStatus()) + self.assertEquals('text/html; charset=utf-8', + response.getHeader('content-type')) + self.assertTrue("Data updated." in response.getBody()) + + transaction.commit() + self.tic() + + self.assertEquals('%s_edited' % website.getId(), website.getTitle()) + self.assertEquals(1, len(self.portal.portal_catalog( + relative_url=website.getRelativeUrl(), + title=website.getTitle()))) + class TestERP5WebWithSimpleSecurity(ERP5TypeTestCase): """ Test for erp5_web with simple security. -- 2.30.9