[Checkins] SVN: zope.app.applicationcontrol/trunk/src/zope/app/applicationcontrol/browser/tests/test_translationdomaincontrol.py Add tests for the (untested) TranslationDomainControlView

Lorenzo Gil lgs at sicem.biz
Sun Apr 20 05:31:05 EDT 2008


Log message for revision 85498:
  Add tests for the (untested) TranslationDomainControlView

Changed:
  A   zope.app.applicationcontrol/trunk/src/zope/app/applicationcontrol/browser/tests/test_translationdomaincontrol.py

-=-
Added: zope.app.applicationcontrol/trunk/src/zope/app/applicationcontrol/browser/tests/test_translationdomaincontrol.py
===================================================================
--- zope.app.applicationcontrol/trunk/src/zope/app/applicationcontrol/browser/tests/test_translationdomaincontrol.py	                        (rev 0)
+++ zope.app.applicationcontrol/trunk/src/zope/app/applicationcontrol/browser/tests/test_translationdomaincontrol.py	2008-04-20 09:31:04 UTC (rev 85498)
@@ -0,0 +1,113 @@
+##############################################################################
+#
+# Copyright (c) 2008 Zope Corporation and Contributors.
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+##############################################################################
+"""Translation Domain Control View Tests
+
+$Id$
+"""
+import unittest
+
+import zope.component
+
+from zope.interface import implements
+from zope.app.applicationcontrol.browser.translationdomaincontrol import (
+    TranslationDomainControlView)
+from zope.app.component.testing import PlacefulSetup
+from zope.i18n.interfaces import ITranslationDomain
+
+class TranslationDomainStub(object):
+    implements(ITranslationDomain)
+
+    def __init__(self, domain, languages):
+        self.domain = domain
+        self.languages = languages
+        self.reloadDone = False
+
+    def translate(self, msgid, mapping=None, context=None,
+                  target_language=None, default=None):
+        return msgid
+
+    def getCatalogsInfo(self):
+        template = 'locales/%s/LC_MESSAGES/%s.mo'
+        return dict([(lang, template % (lang, self.domain))
+                     for lang in self.languages])
+
+    def reloadCatalogs(self, fileNames):
+        self.reloadDone = True
+
+
+class Test(PlacefulSetup, unittest.TestCase):
+
+    def _TestView__newView(self, request):
+        view = TranslationDomainControlView()
+        view.context = object() # the context does not matter in this view
+        view.request = request
+        return view
+
+    def test_TranslationDomainControlView(self):
+        languages = ['de', 'en', 'es'] # these are sorted, see below
+        domains = ['zope', 'plone']
+        translationDomains = []
+        globalSiteManager = zope.component.getGlobalSiteManager()
+        for domain in domains:
+            translationDomain = TranslationDomainStub(domain, languages)
+            globalSiteManager.registerUtility(translationDomain,
+                                              ITranslationDomain,
+                                              domain)
+            translationDomains.append(translationDomain)
+
+        test_translationDomainView = self._TestView__newView({})
+        catalogs = test_translationDomainView.getCatalogsInfo()
+
+        self.assertEqual(len(catalogs), 2)
+        for i, domain in enumerate(domains):
+            catalog = catalogs[i]
+            self.assertEqual(domain, catalog['domain'])
+            langs = [li['language'] for li in catalog['languagesInfo']]
+            self.assertEqual(sorted(langs), languages)
+            files = [li['fileNames'] for li in catalog['languagesInfo']]
+            self.assertEqual(sorted(files), [
+                    'locales/de/LC_MESSAGES/%s.mo' % domain,
+                    'locales/en/LC_MESSAGES/%s.mo' % domain,
+                    'locales/es/LC_MESSAGES/%s.mo' % domain,
+                    ])
+
+
+        # test catalog reloading
+        translationDomain = translationDomains[0]
+        test_translationDomainView = self._TestView__newView({
+                'RELOAD': 1,
+                'domain': 'zope',
+                'language': 'fr' # fr is not in languages list
+                })
+
+        test_translationDomainView.reloadCatalogs()
+        self.assertEqual(translationDomain.reloadDone, False)
+
+        test_translationDomainView = self._TestView__newView({
+                'RELOAD': 1,
+                'domain': 'zope',
+                'language': 'en' # en is in languages list
+                })
+
+        test_translationDomainView.reloadCatalogs()
+        self.assertEqual(translationDomain.reloadDone, True)
+
+
+def test_suite():
+    return unittest.TestSuite((
+        unittest.makeSuite(Test),
+        ))
+
+if __name__ == '__main__':
+    unittest.main()


Property changes on: zope.app.applicationcontrol/trunk/src/zope/app/applicationcontrol/browser/tests/test_translationdomaincontrol.py
___________________________________________________________________
Name: svn:keywords
   + Id



More information about the Checkins mailing list