[Erp5-report] r32809 leonardo - /erp5/trunk/products/ERP5/tests/testTranslation.py
nobody at svn.erp5.org
nobody at svn.erp5.org
Thu Feb 18 18:28:34 CET 2010
Author: leonardo
Date: Thu Feb 18 18:28:33 2010
New Revision: 32809
URL: http://svn.erp5.org?rev=32809&view=rev
Log:
streamline simple translation tests. Zope 2.12 actually fails now
Modified:
erp5/trunk/products/ERP5/tests/testTranslation.py
Modified: erp5/trunk/products/ERP5/tests/testTranslation.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/tests/testTranslation.py?rev=32809&r1=32808&r2=32809&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/tests/testTranslation.py [utf8] (original)
+++ erp5/trunk/products/ERP5/tests/testTranslation.py [utf8] Thu Feb 18 18:28:33 2010
@@ -29,8 +29,10 @@
import unittest
import transaction
+import MethodObject
from Products.ERP5Type.tests.ERP5TypeTestCase import ERP5TypeTestCase
+from Products.ERP5Type.tests.utils import to_utf8
from zLOG import LOG
# dependency order
@@ -85,7 +87,7 @@
'erp5_l10n_pt-BR',
)
-class TestTranslation(ERP5TypeTestCase):
+class TestWorkflowStateTitleTranslation(ERP5TypeTestCase):
run_all_test = 1
domain = 'erp5_ui'
lang = 'en'
@@ -275,22 +277,98 @@
self.assertEquals(
organisation.getTranslatedValidationStateTitle(),'Validé')
-class StandardRelatedKeysTranslationBase(ERP5TypeTestCase):
+class LanguageGetter(MethodObject.Method):
+
+ def __init__(self, lang):
+ self.lang = lang
+
+ def __call__(self, context):
+ return self.lang
+
+class TestTranslation(ERP5TypeTestCase):
+ lang = 'fr'
+
def getBusinessTemplateList(self):
return ['erp5_base',]
+ def _setUpTranslations(self):
+ self.portal.Localizer.manage_addLanguage(self.lang)
+ erp5_ui = self.portal.Localizer.erp5_ui
+ erp5_ui.gettext('Draft', add=1)
+ erp5_ui.gettext('Person', add=1)
+ erp5_ui.message_edit('Draft', self.lang, 'Brouillon', '')
+ erp5_ui.message_edit('Person', self.lang, 'Personne', '')
+ self.portal.ERP5Site_updateTranslationTable()
+
+ def _cleanUpTranslations(self):
+ erp5_ui = self.portal.Localizer.erp5_ui
+ for msgid in ('Person', 'Draft'):
+ translations = erp5_ui.get_translations(msgid)
+ translations.pop(self.lang, None)
+ self.portal.ERP5Site_updateTranslationTable()
+
+ def afterSetUp(self):
+ ERP5TypeTestCase.afterSetUp(self)
+ self._setUpTranslations()
+
+ # replace Localizer.utils.lang_negotiator in MessageCatalog to return
+ # self.lang
+ from Products.Localizer import MessageCatalog
+ self.old_lang_negotiator = MessageCatalog.lang_negotiator
+ def lang_negotiator(avilable_languages, self=self):
+ return self.lang
+ MessageCatalog.lang_negotiator = lang_negotiator
+
+ # patch get_selected_language, used by portal_catalog queries that use
+ # translation
+ self.portal.Localizer.get_selected_language = LanguageGetter(self.lang)
+
+ self.stepTic()
+
def beforeTearDown(self):
- person_module = self.portal.person_module
- person_module.manage_delObjects(list(person_module.objectIds()))
- organisation_module = self.portal.organisation_module
- organisation_module.manage_delObjects(list(organisation_module.objectIds()))
+ transaction.abort()
+ # unpatch lang_negotiator and get_selected_message
+ from Products.Localizer import MessageCatalog
+ MessageCatalog.lang_negotiator = self.old_lang_negotiator
+ del self.portal.Localizer.get_selected_language
+
+ self._cleanUpTranslations()
+ # test clean-up actually worked
+ erp5_ui = self.portal.Localizer.erp5_ui
+ self.assertEquals(erp5_ui.gettext('Person', lang=self.lang), 'Person')
+ self.assertEquals(erp5_ui.gettext('Draft', lang=self.lang), 'Draft')
+
+ # erase created objects
+ for module in (self.portal.person_module, self.portal.organisation_module):
+ module.manage_delObjects(list(module.objectIds()))
+
self.stepTic()
-
- def check_standard_translated_related_keys(self):
+ ERP5TypeTestCase.beforeTearDown(self)
+
+ def test_Localizer_translation(self):
+ # basically, test afterSetUp worked...
+ erp5_ui = self.portal.Localizer.erp5_ui
+ self.assertEquals(erp5_ui.gettext('Person', lang=self.lang), 'Personne')
+
+ def test_ZPT_translation(self):
+ dispatcher = self.portal.manage_addProduct['PageTemplates']
+ myzpt = dispatcher.manage_addPageTemplate('myzpt')
+ zpt_template = """
+ <tal:ommit xmlns:i18n="http://xml.zope.org/namespaces/i18n"
+ i18n:domain="erp5_ui">
+ <tal:ommit i18n:translate="">Person</tal:ommit>
+ <tal:ommit i18n:translate="">Draft</tal:ommit>
+ </tal:ommit>
+ """
+ myzpt.pt_edit(zpt_template,
+ 'text/html')
+ results = to_utf8(myzpt()).split()
+ self.assertEquals(results, ['Personne', 'Brouillon'])
+
+ def test_portal_type_and_state_title_translation_on_portal_catalog(self):
# make sure we can search by "translated_validation_state_title" and
# "translated_portal_type"
- lang='fr'
person_1 = self.portal.person_module.newContent(portal_type='Person')
person_1.validate()
person_2 = self.portal.person_module.newContent(portal_type='Person')
@@ -298,85 +376,30 @@
portal_type='Organisation')
self.stepTic()
- # patch the method, delete it later, or it would fail on commit
- self.portal.Localizer.get_selected_language = lambda: lang
- try:
- self.assertEquals(set([person_1, person_2]),
- set([x.getObject() for x in
- self.portal.portal_catalog(translated_portal_type='Personne')]))
- LOG("ORGANISATION TEST",0,organisation)
-
- self.assertEquals(set([person_2, organisation]),
- set([x.getObject() for x in
- self.portal.portal_catalog(translated_validation_state_title='Brouillon',
- portal_type=('Person', 'Organisation'))]))
- self.assertEquals([person_2],
- [x.getObject() for x in
- self.portal.portal_catalog(translated_validation_state_title='Brouillon',
- translated_portal_type='Personne')])
- finally:
- del self.portal.Localizer.get_selected_language
-
-class TestStandardRelatedKeysWithLocalizer(StandardRelatedKeysTranslationBase):
-
- def beforeTearDown(self):
- erp5_ui = self.portal.Localizer.erp5_ui
- translations = erp5_ui.get_translations('Person')
- translations.pop('fr', None)
- self.assertEquals(erp5_ui.gettext('Person', lang='fr'), 'Person')
- translations = erp5_ui.get_translations('Draft')
- translations.pop('fr', None)
- self.assertEquals(erp5_ui.gettext('Draft', lang='fr'), 'Draft')
- StandardRelatedKeysTranslationBase.beforeTearDown(self)
-
- def test_standard_translated_related_keys(self):
- # manually add portal type and workflow title translations to the
- # message catalog
- lang = 'fr'
- if lang not in [x['id'] for x in
- self.portal.Localizer.get_languages_map()]:
- self.portal.Localizer.manage_addLanguage(lang)
-
- message_catalog = self.portal.Localizer.erp5_ui
- message_catalog.gettext('Draft', add=1)
- message_catalog.gettext('Person', add=1)
- message_catalog.message_edit('Draft', lang, 'Brouillon', '')
- message_catalog.message_edit('Person', lang, 'Personne', '')
-
- self.portal.ERP5Site_updateTranslationTable()
-
- self.check_standard_translated_related_keys()
-
-class TestStandardRelatedKeysWithBusinessTemplate(StandardRelatedKeysTranslationBase):
+ self.assertEquals(set([person_1, person_2]),
+ set([x.getObject() for x in
+ self.portal.portal_catalog(translated_portal_type='Personne')]))
+
+ self.assertEquals(set([person_2, organisation]),
+ set([x.getObject() for x in
+ self.portal.portal_catalog(translated_validation_state_title='Brouillon',
+ portal_type=('Person', 'Organisation'))]))
+ self.assertEquals([person_2],
+ [x.getObject() for x in
+ self.portal.portal_catalog(translated_validation_state_title='Brouillon',
+ translated_portal_type='Personne')])
+
+class TestTranslationWithBusinessTemplate(TestTranslation):
+
+ def _setUpTranslations(self):
+ self.manuallyInstallBusinessTemplate('erp5_l10n_fr')
def _cleanUpTranslations(self):
self.uninstallBusinessTemplate('erp5_l10n_fr')
- localizer = self.portal.Localizer
- self.assertEquals(localizer.erp5_ui.gettext('Person', lang='fr'), 'Person')
-
- def afterSetUp(self):
- StandardRelatedKeysTranslationBase.afterSetUp(self)
- # in case a saved previous test poluted the environment with the
- # erp5_l10n_fr BT
- self._cleanUpTranslations()
-
- def beforeTearDown(self):
- self._cleanUpTranslations()
- StandardRelatedKeysTranslationBase.beforeTearDown(self)
-
- def test_businessTemplateTranslation(self):
- message_catalog = self.portal.Localizer.erp5_ui
- self.assertEquals(message_catalog.gettext('Person', lang='fr'), 'Person')
- self.manuallyInstallBusinessTemplate('erp5_l10n_fr')
- self.assertEquals(message_catalog.gettext('Person', lang='fr'), 'Personne')
-
- def test_standard_translated_related_keys(self):
- self.manuallyInstallBusinessTemplate('erp5_l10n_fr')
- self.check_standard_translated_related_keys()
def test_suite():
suite = unittest.TestSuite()
suite.addTest(unittest.makeSuite(TestTranslation))
- suite.addTest(unittest.makeSuite(TestStandardRelatedKeysWithLocalizer))
- suite.addTest(unittest.makeSuite(TestStandardRelatedKeysWithBusinessTemplate))
+ suite.addTest(unittest.makeSuite(TestTranslationWithBusinessTemplate))
+ suite.addTest(unittest.makeSuite(TestWorkflowStateTitleTranslation))
return suite
More information about the Erp5-report
mailing list