Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 15 additions & 1 deletion tests/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
from .settings import DEFAULT_SETTINGS
from .utils import seq

pytest_plugins = []
pytest_plugins = ["tests.plugins.django_modeladmin"]


def pytest_configure(config):
Expand Down Expand Up @@ -68,6 +68,20 @@ def _override_app_settings(**kwargs):
return _override_app_settings


@pytest.fixture(scope="session", autouse=True)
def register_modeladmins(test_admin_site):
from django_github_app.admin import EventLogModelAdmin
from django_github_app.admin import InstallationModelAdmin
from django_github_app.admin import RepositoryModelAdmin
from django_github_app.models import EventLog
from django_github_app.models import Installation
from django_github_app.models import Repository

test_admin_site.register(EventLog, EventLogModelAdmin)
test_admin_site.register(Installation, InstallationModelAdmin)
test_admin_site.register(Repository, RepositoryModelAdmin)


@pytest.fixture
def installation_id():
return seq.next()
Expand Down
Empty file added tests/plugins/__init__.py
Empty file.
25 changes: 13 additions & 12 deletions tests/test_admin.py → tests/plugins/django_modeladmin.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,27 +10,23 @@
from django.urls import path
from django.urls import reverse

from django_github_app.admin import EventLogModelAdmin
from django_github_app.admin import InstallationModelAdmin
from django_github_app.admin import RepositoryModelAdmin
from django_github_app.models import EventLog
from django_github_app.models import Installation
from django_github_app.models import Repository


class TestAdminSite(AdminSite):
def __init__(self):
super().__init__(name="testadmin")


admin_site = TestAdminSite()
admin_site.register(EventLog, EventLogModelAdmin)
admin_site.register(Installation, InstallationModelAdmin)
admin_site.register(Repository, RepositoryModelAdmin)


@pytest.fixture(scope="session")
def test_admin_site():
return admin_site


@pytest.fixture(autouse=True)
def setup():
def setup_admin_urls():
"""Set up admin URLs for testing."""
urlpatterns = [
path("admin/", admin_site.urls),
]
Expand All @@ -51,6 +47,7 @@ def setup():

@pytest.fixture
def admin_client(django_user_model, client):
"""Create and return an admin client."""
admin_user = django_user_model.objects.create_superuser(
username="admin", email="[email protected]", password="test"
)
Expand All @@ -64,14 +61,17 @@ def admin_client(django_user_model, client):
pytest.param(
model,
model_admin,
id=f"{str(model_admin).replace('.', '_')}",
id=f"{model._meta.app_label}_{model._meta.model_name}",
)
for model, model_admin in admin_site._registry.items()
],
)
@pytest.mark.django_db
class TestModelAdmins:
"""Test suite for Django model admins."""

def test_changelist(self, admin_client, model, model_admin):
"""Test the changelist view for each model admin."""
url = reverse(
f"{admin_site.name}:{model._meta.app_label}_{model._meta.model_name}_changelist"
)
Expand All @@ -81,6 +81,7 @@ def test_changelist(self, admin_client, model, model_admin):
assert response.status_code == HTTPStatus.OK

def test_add(self, admin_client, model, model_admin):
"""Test the add view for each model admin."""
url = reverse(
f"{admin_site.name}:{model._meta.app_label}_{model._meta.model_name}_add"
)
Expand Down