Michael Merickel
2018-10-15 bda1306749c62ef4f11cfe567ed7d56c8ad94240
tests/test_config/test_i18n.py
@@ -5,56 +5,73 @@
here = os.path.dirname(__file__)
locale = os.path.abspath(
    os.path.join(here, '..', 'pkgs', 'localeapp', 'locale'))
    os.path.join(here, '..', 'pkgs', 'localeapp', 'locale')
)
locale2 = os.path.abspath(
    os.path.join(here, '..', 'pkgs', 'localeapp', 'locale2'))
    os.path.join(here, '..', 'pkgs', 'localeapp', 'locale2')
)
locale3 = os.path.abspath(
    os.path.join(here, '..', 'pkgs', 'localeapp', 'locale3'))
    os.path.join(here, '..', 'pkgs', '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
        def negotiator(request):  # pragma: no cover
            pass
        config.set_locale_negotiator(negotiator)
        self.assertEqual(config.registry.getUtility(ILocaleNegotiator),
                         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(
            'tests.test_config.dummyfactory')
        self.assertEqual(config.registry.getUtility(ILocaleNegotiator),
                         dummyfactory)
        config.set_locale_negotiator('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()
        config.add_translation_dirs('/wont/exist/on/my/system')
        self.assertRaises(ConfigurationError, config.commit)
    def test_add_translation_dirs_no_specs(self):
        from pyramid.interfaces import ITranslationDirectories
        config = self._makeOne()
        config.add_translation_dirs()
        self.assertEqual(config.registry.queryUtility(ITranslationDirectories),
                         None)
        self.assertEqual(
            config.registry.queryUtility(ITranslationDirectories), None
        )
    def test_add_translation_dirs_asset_spec(self):
        from pyramid.interfaces import ITranslationDirectories
        config = self._makeOne(autocommit=True)
        config.add_translation_dirs('tests.pkgs.localeapp:locale')
        self.assertEqual(config.registry.getUtility(ITranslationDirectories),
                         [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)
@@ -64,69 +81,91 @@
    def test_add_translation_dirs_multiple_specs(self):
        from pyramid.interfaces import ITranslationDirectories
        config = self._makeOne(autocommit=True)
        config.add_translation_dirs('tests.pkgs.localeapp:locale',
                                    'tests.pkgs.localeapp:locale2')
        self.assertEqual(config.registry.getUtility(ITranslationDirectories),
                         [locale, locale2])
        config.add_translation_dirs(
            'tests.pkgs.localeapp:locale', 'tests.pkgs.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('tests.pkgs.localeapp:locale',
                                    'tests.pkgs.localeapp:locale2')
        config.add_translation_dirs(
            'tests.pkgs.localeapp:locale', 'tests.pkgs.localeapp:locale2'
        )
        config.add_translation_dirs('tests.pkgs.localeapp:locale3')
        self.assertEqual(config.registry.getUtility(ITranslationDirectories),
                         [locale3, locale, locale2])
        self.assertEqual(
            config.registry.getUtility(ITranslationDirectories),
            [locale3, locale, locale2],
        )
    def test_add_translation_dirs_override_multiple_specs_multiple_calls(self):
        from pyramid.interfaces import ITranslationDirectories
        config = self._makeOne(autocommit=True)
        config.add_translation_dirs('tests.pkgs.localeapp:locale',
                                    'tests.pkgs.localeapp:locale2')
        config.add_translation_dirs('tests.pkgs.localeapp:locale3',
                                    override=True)
        self.assertEqual(config.registry.getUtility(ITranslationDirectories),
                         [locale, locale2, locale3])
        config.add_translation_dirs(
            'tests.pkgs.localeapp:locale', 'tests.pkgs.localeapp:locale2'
        )
        config.add_translation_dirs(
            'tests.pkgs.localeapp:locale3', override=True
        )
        self.assertEqual(
            config.registry.getUtility(ITranslationDirectories),
            [locale, locale2, locale3],
        )
    def test_add_translation_dirs_invalid_kwargs(self):
        from pyramid.interfaces import ITranslationDirectories
        config = self._makeOne(autocommit=True)
        with self.assertRaises(TypeError):
            config.add_translation_dirs('tests.pkgs.localeapp:locale',
                                        foo=1)
            config.add_translation_dirs('tests.pkgs.localeapp:locale', foo=1)
    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])
        self.assertEqual(
            config.registry.getUtility(ITranslationDirectories), [locale]
        )
    def test_add_translation_dirs_uses_override_out_of_order(self):
        from pyramid.interfaces import ITranslationDirectories
        config = self._makeOne()
        config.add_translation_dirs('tests.pkgs.localeapp:locale')
        config.override_asset('tests.pkgs.localeapp:locale/',
                              'tests.pkgs.localeapp:locale2/')
        config.override_asset(
            'tests.pkgs.localeapp:locale/', 'tests.pkgs.localeapp:locale2/'
        )
        config.commit()
        self.assertEqual(config.registry.getUtility(ITranslationDirectories),
                         [locale2])
        self.assertEqual(
            config.registry.getUtility(ITranslationDirectories), [locale2]
        )
    def test_add_translation_dirs_doesnt_use_override_w_autocommit(self):
        from pyramid.interfaces import ITranslationDirectories
        config = self._makeOne(autocommit=True)
        config.add_translation_dirs('tests.pkgs.localeapp:locale')
        config.override_asset('tests.pkgs.localeapp:locale/',
                              'tests.pkgs.localeapp:locale2/')
        self.assertEqual(config.registry.getUtility(ITranslationDirectories),
                         [locale])
        config.override_asset(
            'tests.pkgs.localeapp:locale/', 'tests.pkgs.localeapp:locale2/'
        )
        self.assertEqual(
            config.registry.getUtility(ITranslationDirectories), [locale]
        )
    def test_add_translation_dirs_uses_override_w_autocommit(self):
        from pyramid.interfaces import ITranslationDirectories
        config = self._makeOne(autocommit=True)
        config.override_asset('tests.pkgs.localeapp:locale/',
                              'tests.pkgs.localeapp:locale2/')
        config.override_asset(
            'tests.pkgs.localeapp:locale/', 'tests.pkgs.localeapp:locale2/'
        )
        config.add_translation_dirs('tests.pkgs.localeapp:locale')
        self.assertEqual(config.registry.getUtility(ITranslationDirectories),
                         [locale2])
        self.assertEqual(
            config.registry.getUtility(ITranslationDirectories), [locale2]
        )