Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
2 changed files
with
114 additions
and
95 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,114 @@ | ||
import os | ||
import unittest | ||
|
||
from pyramid.tests.test_config import dummyfactory | ||
|
||
here = os.path.dirname(__file__) | ||
locale = os.path.abspath( | ||
os.path.join(here, '..', 'localeapp', 'locale')) | ||
locale2 = os.path.abspath( | ||
os.path.join(here, '..', 'localeapp', 'locale2')) | ||
locale3 = os.path.abspath( | ||
os.path.join(here, '..', 'localeapp', 'locale3')) | ||
|
||
class TestI18NConfiguratorMixin(unittest.TestCase): | ||
def _makeOne(self, *arg, **kw): | ||
from pyramid.config import Configurator | ||
config = Configurator(*arg, **kw) | ||
return config | ||
|
||
def test_set_locale_negotiator(self): | ||
from pyramid.interfaces import ILocaleNegotiator | ||
config = self._makeOne(autocommit=True) | ||
def negotiator(request): pass | ||
config.set_locale_negotiator(negotiator) | ||
self.assertEqual(config.registry.getUtility(ILocaleNegotiator), | ||
negotiator) | ||
|
||
def test_set_locale_negotiator_dottedname(self): | ||
from pyramid.interfaces import ILocaleNegotiator | ||
config = self._makeOne(autocommit=True) | ||
config.set_locale_negotiator( | ||
'pyramid.tests.test_config.dummyfactory') | ||
self.assertEqual(config.registry.getUtility(ILocaleNegotiator), | ||
dummyfactory) | ||
|
||
def test_add_translation_dirs_missing_dir(self): | ||
from pyramid.exceptions import ConfigurationError | ||
config = self._makeOne() | ||
self.assertRaises(ConfigurationError, | ||
config.add_translation_dirs, | ||
'/wont/exist/on/my/system') | ||
|
||
def test_add_translation_dirs_no_specs(self): | ||
from pyramid.interfaces import ITranslationDirectories | ||
from pyramid.interfaces import IChameleonTranslate | ||
config = self._makeOne() | ||
config.add_translation_dirs() | ||
self.assertEqual(config.registry.queryUtility(ITranslationDirectories), | ||
None) | ||
self.assertEqual(config.registry.queryUtility(IChameleonTranslate), | ||
None) | ||
|
||
def test_add_translation_dirs_asset_spec(self): | ||
from pyramid.interfaces import ITranslationDirectories | ||
config = self._makeOne(autocommit=True) | ||
config.add_translation_dirs('pyramid.tests.localeapp:locale') | ||
self.assertEqual(config.registry.getUtility(ITranslationDirectories), | ||
[locale]) | ||
|
||
def test_add_translation_dirs_asset_spec_existing_translation_dirs(self): | ||
from pyramid.interfaces import ITranslationDirectories | ||
config = self._makeOne(autocommit=True) | ||
directories = ['abc'] | ||
config.registry.registerUtility(directories, ITranslationDirectories) | ||
config.add_translation_dirs('pyramid.tests.localeapp:locale') | ||
result = config.registry.getUtility(ITranslationDirectories) | ||
self.assertEqual(result, [locale, 'abc']) | ||
|
||
def test_add_translation_dirs_multiple_specs(self): | ||
from pyramid.interfaces import ITranslationDirectories | ||
config = self._makeOne(autocommit=True) | ||
config.add_translation_dirs('pyramid.tests.localeapp:locale', | ||
'pyramid.tests.localeapp:locale2') | ||
self.assertEqual(config.registry.getUtility(ITranslationDirectories), | ||
[locale, locale2]) | ||
|
||
def test_add_translation_dirs_multiple_specs_multiple_calls(self): | ||
from pyramid.interfaces import ITranslationDirectories | ||
config = self._makeOne(autocommit=True) | ||
config.add_translation_dirs('pyramid.tests.localeapp:locale', | ||
'pyramid.tests.localeapp:locale2') | ||
config.add_translation_dirs('pyramid.tests.localeapp:locale3') | ||
self.assertEqual(config.registry.getUtility(ITranslationDirectories), | ||
[locale3, locale, locale2]) | ||
|
||
def test_add_translation_dirs_registers_chameleon_translate(self): | ||
from pyramid.interfaces import IChameleonTranslate | ||
from pyramid.threadlocal import manager | ||
request = DummyRequest() | ||
config = self._makeOne(autocommit=True) | ||
manager.push({'request':request, 'registry':config.registry}) | ||
try: | ||
config.add_translation_dirs('pyramid.tests.localeapp:locale') | ||
translate = config.registry.getUtility(IChameleonTranslate) | ||
self.assertEqual(translate('Approve'), u'Approve') | ||
finally: | ||
manager.pop() | ||
|
||
def test_add_translation_dirs_abspath(self): | ||
from pyramid.interfaces import ITranslationDirectories | ||
config = self._makeOne(autocommit=True) | ||
config.add_translation_dirs(locale) | ||
self.assertEqual(config.registry.getUtility(ITranslationDirectories), | ||
[locale]) | ||
|
||
class DummyRequest: | ||
subpath = () | ||
matchdict = None | ||
def __init__(self, environ=None): | ||
if environ is None: | ||
environ = {} | ||
self.environ = environ | ||
self.params = {} | ||
self.cookies = {} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters