From 808ac44575767c13d2868a9fb09eda3fc0af8711 Mon Sep 17 00:00:00 2001 From: Brian Kohan Date: Thu, 11 Dec 2025 16:45:29 -0800 Subject: [PATCH] Add test for admin exclude fields #209 --- src/polymorphic/tests/admin.py | 6 +++++- src/polymorphic/tests/migrations/0001_initial.py | 6 +++--- src/polymorphic/tests/models.py | 2 +- src/polymorphic/tests/test_admin.py | 11 ++++++----- 4 files changed, 15 insertions(+), 10 deletions(-) diff --git a/src/polymorphic/tests/admin.py b/src/polymorphic/tests/admin.py index eb07222..ab3ec46 100644 --- a/src/polymorphic/tests/admin.py +++ b/src/polymorphic/tests/admin.py @@ -31,7 +31,11 @@ class Model2Admin(PolymorphicParentModelAdmin): admin_site.register(Model2B, PolymorphicChildModelAdmin) admin_site.register(Model2C, PolymorphicChildModelAdmin) -admin_site.register(Model2D, PolymorphicChildModelAdmin) + + +@register(Model2D) +class Model2DAdmin(PolymorphicChildModelAdmin): + exclude = ("field3",) @register(PlainA) diff --git a/src/polymorphic/tests/migrations/0001_initial.py b/src/polymorphic/tests/migrations/0001_initial.py index 796f137..f76c89e 100644 --- a/src/polymorphic/tests/migrations/0001_initial.py +++ b/src/polymorphic/tests/migrations/0001_initial.py @@ -1,4 +1,4 @@ -# Generated by Django 4.2 on 2025-12-11 18:22 +# Generated by Django 4.2 on 2025-12-11 18:43 from django.conf import settings from django.db import migrations, models @@ -13,8 +13,8 @@ class Migration(migrations.Migration): initial = True dependencies = [ - ('auth', '0012_alter_user_first_name_max_length'), ('contenttypes', '0002_remove_content_type_name'), + ('auth', '0012_alter_user_first_name_max_length'), ] operations = [ @@ -1179,7 +1179,7 @@ class Migration(migrations.Migration): name='Model2C', fields=[ ('model2b_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='tests.model2b')), - ('field3', models.CharField(max_length=30)), + ('field3', models.CharField(blank=True, default='', max_length=30)), ], options={ 'abstract': False, diff --git a/src/polymorphic/tests/models.py b/src/polymorphic/tests/models.py index 3ebbb27..2d7a4ae 100644 --- a/src/polymorphic/tests/models.py +++ b/src/polymorphic/tests/models.py @@ -39,7 +39,7 @@ class Model2B(Model2A): class Model2C(Model2B): - field3 = models.CharField(max_length=30) + field3 = models.CharField(max_length=30, blank=True, default="") class Model2D(Model2C): diff --git a/src/polymorphic/tests/test_admin.py b/src/polymorphic/tests/test_admin.py index 7e6c833..a77276f 100644 --- a/src/polymorphic/tests/test_admin.py +++ b/src/polymorphic/tests/test_admin.py @@ -311,7 +311,7 @@ class PolymorphicFormTests(_GenericAdminFormTest): { "field1": "2D1", "field2": "2D2", - "field3": "2D3", + # "field3": "2D3", excluded! "field4": "2D4", }, ), @@ -357,7 +357,7 @@ class PolymorphicFormTests(_GenericAdminFormTest): assert Model2D.objects.first().field1 == "2D1" assert Model2D.objects.first().field2 == "2D2" - assert Model2D.objects.first().field3 == "2D3" + assert Model2D.objects.first().field3 == "" assert Model2D.objects.first().field4 == "2D4" @@ -397,7 +397,7 @@ class AdminRecentActionsTests(_GenericAdminFormTest): { "field1": "2D1", "field2": "2D2", - "field3": "2D3", + # "field3": "2D3", excluded! "field4": "2D4", }, ), @@ -449,14 +449,15 @@ class AdminRecentActionsTests(_GenericAdminFormTest): assert values == ["2A1"] elif "model2d" in action_url: + # this also tests that exclusion of field3 works inputs = self.page.locator("#model2d_form input[type='text']") count = inputs.count() - assert count == 4 + assert count == 3 values = [] for i in range(count): values.append(inputs.nth(i).input_value()) - assert values == ["2D1", "2D2", "2D3", "2D4"] + assert values == ["2D1", "2D2", "2D4"] else: assert False, f"Unexpected change url: {action_url}"