dnscms: add studio page

This commit is contained in:
2026-05-19 06:09:54 +02:00
parent 843062bb13
commit 509a50c321
8 changed files with 189 additions and 0 deletions
+8
View File
@@ -10,6 +10,7 @@ from events.models import EventIndex, EventPage
from generic.models import GenericPage
from images.models import CustomImage
from news.models import NewsIndex, NewsPage
from studio.models import StudioPage
from venues.models import VenueIndex, VenuePage
@@ -56,6 +57,13 @@ class GenericPageFactory(wagtail_factories.PageFactory):
model = GenericPage
class StudioPageFactory(wagtail_factories.PageFactory):
title = factory.Sequence(lambda n: f"Studio {n}")
class Meta:
model = StudioPage
class NewsIndexFactory(wagtail_factories.PageFactory):
title = factory.Sequence(lambda n: f"News {n}")
+78
View File
@@ -0,0 +1,78 @@
from studio.models import StudioPage
from tests.conftest import CustomImageFactory, StudioPageFactory
def test_studio_page_persists_via_factory(home_page):
logo = CustomImageFactory()
page = StudioPageFactory(
parent=home_page,
title="STUDiO",
slug="studio",
lead="<p>Ingress.</p>",
body=[("paragraph", "<p>Body content.</p>")],
pig="drink",
logo=logo,
)
reloaded = StudioPage.objects.get(pk=page.pk)
assert reloaded.title == "STUDiO"
assert reloaded.slug == "studio"
assert "Ingress." in reloaded.lead
assert reloaded.pig == "drink"
assert reloaded.body[0].block_type == "paragraph"
assert reloaded.logo == logo
def test_studio_page_is_singleton(home_page):
StudioPageFactory(parent=home_page, slug="studio")
assert StudioPage.can_create_at(home_page) is False
def test_graphql_studio_page_query(home_page, graphql_post):
logo = CustomImageFactory(alt="STUDiO-logo")
StudioPageFactory(
parent=home_page,
title="STUDiO",
slug="studio",
lead="<p>Ingress text.</p>",
body=[("paragraph", "<p>Body content.</p>")],
pig="drink",
logo=logo,
)
response, body = graphql_post(
"""
query {
page: studioPage {
... on StudioPage {
title
slug
lead
pig
logo {
alt
}
body {
blockType
field
... on RichTextBlock {
value
}
}
}
}
}
"""
)
assert response.status_code == 200
assert "errors" not in body, body
data = body["data"]["page"]
assert data["title"] == "STUDiO"
assert data["slug"] == "studio"
assert "Ingress text." in data["lead"]
assert data["pig"] == "drink"
assert data["logo"]["alt"] == "STUDiO-logo"
assert data["body"][0]["blockType"] == "RichTextBlock"
assert "Body content." in data["body"][0]["value"]