76 lines
2.7 KiB
Python
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
|