From b3624916b29d25d1baec7c55da4cc7184e724812 Mon Sep 17 00:00:00 2001 From: seroy Date: Fri, 20 Apr 2018 02:27:57 +0300 Subject: [PATCH 1/2] Add tests for LocalizedFieldsAdminMixin --- tests/test_admin.py | 87 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 tests/test_admin.py diff --git a/tests/test_admin.py b/tests/test_admin.py new file mode 100644 index 0000000..6e0eb5a --- /dev/null +++ b/tests/test_admin.py @@ -0,0 +1,87 @@ +from django.apps import apps +from django.contrib import admin +from django.contrib.admin.checks import check_admin_app +from django.db import models +from django.test import TestCase + +from localized_fields.fields import LocalizedField +from localized_fields.admin import LocalizedFieldsAdminMixin + +from tests.fake_model import get_fake_model + + +class LocalizedFieldsAdminMixinTestCase(TestCase): + """Tests the :see:LocalizedFieldsAdminMixin class.""" + + TestModel = None + TestRelModel = None + + @classmethod + def setUpClass(cls): + """Creates the test model in the database.""" + + super(LocalizedFieldsAdminMixinTestCase, cls).setUpClass() + + cls.TestRelModel = get_fake_model( + { + 'description': LocalizedField() + } + ) + cls.TestModel = get_fake_model( + { + 'title': LocalizedField(), + 'rel': models.ForeignKey(cls.TestRelModel, + on_delete=models.CASCADE) + } + ) + + def tearDown(self): + if admin.site.is_registered(self.TestModel): + admin.site.unregister(self.TestModel) + if admin.site.is_registered(self.TestRelModel): + admin.site.unregister(self.TestRelModel) + + @classmethod + def test_model_admin(cls): + """Tests whether :see:LocalizedFieldsAdminMixin + mixin are works with admin.ModelAdmin""" + + @admin.register(cls.TestModel) + class TestModelAdmin(LocalizedFieldsAdminMixin, admin.ModelAdmin): + pass + + assert len(check_admin_app(apps.get_app_configs())) == 0 + + @classmethod + def test_stackedmodel_admin(cls): + """Tests whether :see:LocalizedFieldsAdminMixin mixin are works + with admin.StackedInline""" + + class TestModelStackedInline(LocalizedFieldsAdminMixin, + admin.StackedInline): + model = cls.TestModel + + @admin.register(cls.TestRelModel) + class TestRelModelAdmin(admin.ModelAdmin): + inlines = [ + TestModelStackedInline, + ] + + assert len(check_admin_app(apps.get_app_configs())) == 0 + + @classmethod + def test_tabularmodel_admin(cls): + """Tests whether :see:LocalizedFieldsAdminMixin mixin are works + with admin.TabularInline""" + + class TestModelTabularInline(LocalizedFieldsAdminMixin, + admin.TabularInline): + model = cls.TestModel + + @admin.register(cls.TestRelModel) + class TestRelModelAdmin(admin.ModelAdmin): + inlines = [ + TestModelTabularInline, + ] + + assert len(check_admin_app(apps.get_app_configs())) == 0 From 8ba05402376dc2d368bae226f929b9a0b448a3c5 Mon Sep 17 00:00:00 2001 From: seroy Date: Fri, 20 Apr 2018 02:33:15 +0300 Subject: [PATCH 2/2] Fix using LocalizedFieldsAdminMixin with inlines --- localized_fields/admin.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/localized_fields/admin.py b/localized_fields/admin.py index 65610ff..6c830c2 100644 --- a/localized_fields/admin.py +++ b/localized_fields/admin.py @@ -1,5 +1,3 @@ -from django.contrib.admin import ModelAdmin - from . import widgets from .fields import LocalizedField, LocalizedCharField, LocalizedTextField, \ LocalizedFileField @@ -13,7 +11,7 @@ FORMFIELD_FOR_LOCALIZED_FIELDS_DEFAULTS = { } -class LocalizedFieldsAdminMixin(ModelAdmin): +class LocalizedFieldsAdminMixin: """Mixin for making the fancy widgets work in Django Admin.""" class Media: