from django.apps import apps from django.conf import settings from django.test import TestCase, override_settings from django.utils import translation from localized_fields.fields import LocalizedField from localized_fields.value import LocalizedValue from .fake_model import get_fake_model @override_settings(LOCALIZED_FIELDS_EXPERIMENTAL=True) class LocalizedLookupsTestCase(TestCase): """Tests whether localized lookups properly work with.""" TestModel1 = None @classmethod def setUpClass(cls): """Creates the test model in the database.""" super(LocalizedLookupsTestCase, cls).setUpClass() # reload app as setting has changed config = apps.get_app_config("localized_fields") config.ready() cls.TestModel = get_fake_model({"text": LocalizedField()}) def test_localized_lookup(self): """Tests whether localized lookup properly works.""" self.TestModel.objects.create( text=LocalizedValue(dict(en="text_en", ro="text_ro", nl="text_nl")) ) # assert that it properly lookups the currently active language for lang_code, _ in settings.LANGUAGES: translation.activate(lang_code) assert self.TestModel.objects.filter( text="text_" + lang_code ).exists() # ensure that the default language is used in case no # language is active at all translation.deactivate_all() assert self.TestModel.objects.filter(text="text_en").exists() # ensure that hstore lookups still work assert self.TestModel.objects.filter(text__ro="text_ro").exists()