mirror of
https://github.com/jazzband/django-eav2.git
synced 2026-03-16 22:40:26 +00:00
refactor(tests): expand EntityAdmin form tests and move to base function
This commit is contained in:
parent
84bfbf9063
commit
5bc35da842
1 changed files with 45 additions and 13 deletions
|
|
@ -1,4 +1,5 @@
|
|||
import sys
|
||||
|
||||
import pytest
|
||||
from django.contrib.admin.sites import AdminSite
|
||||
from django.core.handlers.base import BaseHandler
|
||||
|
|
@ -78,19 +79,6 @@ class Forms(TestCase):
|
|||
)
|
||||
|
||||
self.instance = Patient.objects.create(name='Jim Morrison')
|
||||
self.site = AdminSite()
|
||||
|
||||
def test_fields(self):
|
||||
admin = BaseEntityAdmin(Patient, self.site)
|
||||
admin.form = BaseDynamicEntityForm
|
||||
view = admin.change_view(request, str(self.instance.pk))
|
||||
|
||||
own_fields = 3
|
||||
adminform = view.context_data['adminform']
|
||||
|
||||
self.assertEqual(
|
||||
len(adminform.form.fields), Attribute.objects.count() + own_fields
|
||||
)
|
||||
|
||||
def test_valid_submit(self):
|
||||
self.instance.eav.color = 'Blue'
|
||||
|
|
@ -126,6 +114,13 @@ def patient() -> Patient:
|
|||
return Patient.objects.create(name='Jim Morrison')
|
||||
|
||||
|
||||
@pytest.fixture()
|
||||
def create_attributes() -> None:
|
||||
"""Create some Attributes to use for testing."""
|
||||
Attribute.objects.create(name='weight', datatype=Attribute.TYPE_FLOAT)
|
||||
Attribute.objects.create(name='color', datatype=Attribute.TYPE_TEXT)
|
||||
|
||||
|
||||
@pytest.mark.django_db()
|
||||
@pytest.mark.parametrize(
|
||||
'csv_data, separator',
|
||||
|
|
@ -165,3 +160,40 @@ def test_csvdynamicform_empty(patient) -> None:
|
|||
)
|
||||
assert form.is_valid()
|
||||
assert form.save()
|
||||
|
||||
|
||||
@pytest.mark.django_db()
|
||||
@pytest.mark.usefixtures('create_attributes')
|
||||
@pytest.mark.parametrize('define_fieldsets', (True, False))
|
||||
def test_entity_admin_form(patient, define_fieldsets):
|
||||
"""Test the BaseEntityAdmin form setup and dynamic fieldsets handling."""
|
||||
admin = BaseEntityAdmin(Patient, AdminSite())
|
||||
admin.readonly_fields = ('email',)
|
||||
admin.form = BaseDynamicEntityForm
|
||||
|
||||
if define_fieldsets:
|
||||
# Use all fields in Patient model
|
||||
admin.fieldsets = (
|
||||
(None, {'fields': ['name', 'example']}),
|
||||
('Contact Info', {'fields': ['email']}),
|
||||
)
|
||||
|
||||
view = admin.change_view(request, str(patient.pk))
|
||||
|
||||
adminform = view.context_data['adminform']
|
||||
|
||||
# Count the total fields in fieldsets
|
||||
total_fields = sum(
|
||||
len(fields_info['fields']) for _, fields_info in adminform.fieldsets
|
||||
)
|
||||
|
||||
# 3 for 'name', 'email', 'example'
|
||||
expected_fields_count = Attribute.objects.count() + 3
|
||||
|
||||
assert total_fields == expected_fields_count
|
||||
|
||||
# Ensure our fieldset count is correct
|
||||
if define_fieldsets:
|
||||
assert len(adminform.fieldsets) == 3
|
||||
else:
|
||||
assert len(adminform.fieldsets) == 2
|
||||
|
|
|
|||
Loading…
Reference in a new issue