# -*- coding: latin-1 -*-
#
# tests to verify l10n works.. none of these work currently
#
# OLD ISSUES
#
# 1. don't know how to make PTS return utf-8, so this file is latin-1
#
# 2. if PTS is on the filesystem, even without installProduct it does get
# imported by support and will be active. But we'd like to test some
# things without it. How do we prevent PTS installation ?
#
# 3. with PTS active, _() expects _getContext to find a request, normally
# saved by ZPublisher. We patched it for (some) tests below, but the
# problem remains for the other test modules, which also use _(). For
# now we'll patch PTS for all (in support) and figure out later how to
# let the below work.
#
# 4. should we skip translation tests when PTS is not available ?
#
# 5. these tests test PTS-based i18n, not generic i18n
#
## mock up stuff to get language control. The usual Pain.
#from Products.PlacelessTranslationService.PlacelessTranslationService \
# import PlacelessTranslationService
## leave negotiation intact for later tests
#try:
# save1 = PlacelessTranslationService._getContext
# save2 = PlacelessTranslationService.negotiate_language
# PlacelessTranslationService._getContext = \
# lambda self,context: MockRequest()
# PlacelessTranslationService.negotiate_language = \
# lambda self,context,domain: language
# translation = _(string)
#finally:
# PlacelessTranslationService._getContext = save1
# PlacelessTranslationService.negotiate_language = save2
try:
from Products import PlacelessTranslationService
HAS_PTS = 1
except ImportError:
HAS_PTS = 0
if 1: #not HAS_PTS:
# dummy test suite
import unittest
def test_suite():
return unittest.TestSuite()
else: # NEVER RUN
from testsupport import *
ZopeTestCase.installProduct('ZWiki')
ZopeTestCase.installProduct('PlacelessTranslationService')
from Products.ZWiki.I18n import _
from Products.ZWiki.Views import loadDtmlMethod
def test_suite():
suite = unittest.TestSuite()
suite.addTest(unittest.makeSuite(Tests))
suite.level = 2
return suite
class Tests(ZwikiTestCase):
"""
Unit tests for Zwiki i18n, aka "blood, sweat and tears".
Tips for MockZWikiPage, MockRequest, PTS etc.:
- use a fresh request to avoid PTS language caching
- the REQUEST argument is often required
- set a page's REQUEST attribute as well
- bare=1 can also help get pages rendering
"""
#def test_python_i18n(self):
# self.assertEquals(_('NEW'), 'NUOVA')
def test_dtml_translate_tag(self):
self.p.allow_dtml = 1
self.p.edit(
text='test')
self.assert_(re.search('test', self.p(bare=1)))
#def test_addwikipageform(self):
# from DocumentTemplate.DT_Util import ParseError
# form = loadDtmlMethod('addwikipageform')
# try: form(REQUEST=MockRequest(),RESPONSE=MockRequest().RESPONSE)
# except NameError: self.fail()
# except KeyError: pass
#def test_zmi_dtml_i18n(self):
# form = loadDtmlMethod('addwikipageform')
# self.assert_(re.search('Add ZWiki Page',
# form(REQUEST=MockRequest(),
# RESPONSE=MockRequest().RESPONSE)))
# self.assert_(re.search('Aggiungi pagina ZWiki',
# form(REQUEST=MockRequest(language='it'),
# RESPONSE=MockRequest().RESPONSE)))
#def test_skin_dtml_i18n(self):
# # the searchwiki form includes searchwikidtml
# t = self.p.searchwiki(REQUEST=MockRequest())
# self.assert_(re.search('Enter a word',t))
#
# self.p.REQUEST = MockRequest(language='it')
# t = self.p.searchwiki(REQUEST=self.p.REQUEST)
# self.assert_(re.search(r'Inserisci una parola',t))
#def test_page_dtml_i18n(self):
# self.p.allow_dtml = 1
# self.p.edit(
# text='NEW')
# self.assert_(re.search('NEW', self.p(bare=1)))
#
# self.p.REQUEST = MockRequest(language='it')
# self.assert_(re.search('NUOVA', self.p(bare=1)))
#def test_pt_i18n(self):