Files
neuf-www/dnscms/tests/test_admin_views.py

76 lines
2.7 KiB
Python

"""Admin view tests: the choose-parent redirect and a smoke test over the
admin URLs served by our viewsets."""
from urllib.parse import parse_qs, urlparse
import pytest
from django.urls import reverse
from tests.conftest import EventIndexFactory, GenericPageFactory
def _parsed(response):
url = urlparse(response["Location"])
return url.path, parse_qs(url.query)
def test_choose_parent_no_valid_parent_renders_form(admin_client, db):
response = admin_client.get(reverse("events:choose_parent"))
assert response.status_code == 200
def test_choose_parent_single_parent_redirects_with_next(admin_client, event_index):
response = admin_client.get(reverse("events:choose_parent"))
assert response.status_code == 302
path, query = _parsed(response)
assert path == reverse("wagtailadmin_pages:add", args=["events", "eventpage", event_index.pk])
assert query["next"] == [reverse("events:index")]
def test_choose_parent_multiple_parents_shows_form_then_redirects(admin_client, event_index):
# max_count=1 stops a second EventIndex being created through the admin,
# but the view logic only cares how many instances exist.
second_index = EventIndexFactory(parent=event_index.get_parent(), slug="events-2")
response = admin_client.get(reverse("events:choose_parent"))
assert response.status_code == 200
response = admin_client.post(reverse("events:choose_parent"), {"parent_page": second_index.pk})
assert response.status_code == 302
path, query = _parsed(response)
assert path == reverse("wagtailadmin_pages:add", args=["events", "eventpage", second_index.pk])
assert query["next"] == [reverse("events:index")]
@pytest.mark.parametrize(
"url_name",
[
"wagtailadmin_home",
"events:index",
"events:choose_parent",
"associations:index",
"news:index",
"venues:index",
"wagtailimages:index",
"wagtailsnippets_events_eventorganizer:list",
"association_chooser:choose",
"event_organizer_chooser:choose",
],
)
def test_admin_views_render(admin_client, db, url_name):
response = admin_client.get(reverse(url_name))
assert response.status_code == 200
def test_page_edit_view_renders_with_custom_editor_assets(admin_client, home_page):
"""The page editor must load with our Draftail feature and editor JS wired in."""
page = GenericPageFactory(parent=home_page, slug="edit-me")
response = admin_client.get(reverse("wagtailadmin_pages:edit", args=[page.pk]))
assert response.status_code == 200
content = response.content.decode()
assert "button-link" in content # dnscms.rich_text feature on the editor
assert "js/page-editor.js" in content # insert_editor_js hook output