Added request.ugettext() and request.ungettext() functions; added corresponding unit tests

This commit is contained in:
Jason Gerard DeRose
2009-01-04 00:46:21 -07:00
parent c081ce5460
commit c161784973
4 changed files with 115 additions and 6 deletions

View File

@@ -23,11 +23,77 @@ Test the `ipalib.request` module.
import threading
import locale
from tests.util import raises, TempDir
from tests.util import raises, TempDir, DummyUGettext, DummyUNGettext
from ipalib.constants import OVERRIDE_ERROR
from ipalib import request
def assert_equal(val1, val2):
assert type(val1) is type(val2), '%r != %r' % (val1, val2)
assert val1 == val2, '%r != %r' % (val1, val2)
def test_ugettext():
"""
Test the `ipalib.request.ugettext` function.
"""
f = request.ugettext
context = request.context
message = 'Hello, world!'
# Test with no context.ugettext:
assert not hasattr(context, 'ugettext')
assert_equal(f(message), u'Hello, world!')
# Test with dummy context.ugettext:
assert not hasattr(context, 'ugettext')
dummy = DummyUGettext()
context.ugettext = dummy
assert f(message) is dummy.translation
assert dummy.message is message
# Cleanup
del context.ugettext
assert not hasattr(context, 'ugettext')
def test_ungettext():
"""
Test the `ipalib.request.ungettext` function.
"""
f = request.ungettext
context = request.context
singular = 'Goose'
plural = 'Geese'
# Test with no context.ungettext:
assert not hasattr(context, 'ungettext')
assert_equal(f(singular, plural, 1), u'Goose')
assert_equal(f(singular, plural, 2), u'Geese')
# Test singular with dummy context.ungettext
assert not hasattr(context, 'ungettext')
dummy = DummyUNGettext()
context.ungettext = dummy
assert f(singular, plural, 1) is dummy.translation_singular
assert dummy.singular is singular
assert dummy.plural is plural
assert dummy.n == 1
del context.ungettext
assert not hasattr(context, 'ungettext')
# Test plural with dummy context.ungettext
assert not hasattr(context, 'ungettext')
dummy = DummyUNGettext()
context.ungettext = dummy
assert f(singular, plural, 2) is dummy.translation_plural
assert dummy.singular is singular
assert dummy.plural is plural
assert dummy.n == 2
del context.ungettext
assert not hasattr(context, 'ungettext')
def test_set_languages():
"""
Test the `ipalib.request.set_languages` function.

View File

@@ -277,3 +277,38 @@ class PluginTester(object):
(api, home) = self.finalize(*plugins, **kw)
o = api[namespace][self.plugin.__name__]
return (o, api, home)
class DummyUGettext(object):
__called = False
def __init__(self):
self.translation = u'The translation'
def __call__(self, message):
assert type(message) is str
assert self.__called is False
self.__called = True
self.message = message
return self.translation
class DummyUNGettext(object):
__called = False
def __init__(self):
self.translation_singular = u'The singular translation'
self.translation_plural = u'The plural translation'
def __call__(self, singular, plural, n):
assert type(singular) is str
assert type(plural) is str
assert type(n) is int
assert self.__called is False
self.__called = True
self.singular = singular
self.plural = plural
self.n = n
if n == 1:
return self.translation_singular
return self.translation_plural