kopia lustrzana https://github.com/wagtail/wagtail
add tests for accessing advert_placements on a subclass of Page - these require modelcluster 0.4 to pass
rodzic
b0e97c954a
commit
db41badd8c
|
@ -377,6 +377,12 @@ class ZuluSnippet(models.Model):
|
|||
class StandardIndex(Page):
|
||||
pass
|
||||
|
||||
StandardIndex.content_panels = [
|
||||
FieldPanel('title', classname="full title"),
|
||||
InlinePanel(StandardIndex, 'advert_placements', label="Adverts"),
|
||||
]
|
||||
|
||||
|
||||
class StandardChild(Page):
|
||||
pass
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@ from django.core import mail
|
|||
from django.core.paginator import Paginator
|
||||
from django.utils import timezone
|
||||
|
||||
from wagtail.tests.models import SimplePage, EventPage, EventPageCarouselItem, StandardIndex, BusinessIndex, BusinessChild, BusinessSubIndex, TaggedPage
|
||||
from wagtail.tests.models import SimplePage, EventPage, EventPageCarouselItem, StandardIndex, BusinessIndex, BusinessChild, BusinessSubIndex, TaggedPage, Advert, AdvertPlacement
|
||||
from wagtail.tests.utils import unittest, WagtailTestUtils
|
||||
from wagtail.wagtailcore.models import Page, PageRevision
|
||||
from wagtail.wagtailcore.signals import page_published, page_unpublished
|
||||
|
@ -1699,3 +1699,88 @@ class TestIssue197(TestCase, WagtailTestUtils):
|
|||
page = TaggedPage.objects.get(id=self.tagged_page.id)
|
||||
self.assertIn('hello', page.tags.slugs())
|
||||
self.assertIn('world', page.tags.slugs())
|
||||
|
||||
|
||||
class TestChildRelationsOnSuperclass(TestCase, WagtailTestUtils):
|
||||
# In our test models we define AdvertPlacement as a child relation on the Page model.
|
||||
# Here we check that this behaves correctly when exposed on the edit form of a Page
|
||||
# subclass (StandardIndex here).
|
||||
fixtures = ['test.json']
|
||||
|
||||
def setUp(self):
|
||||
# Find root page
|
||||
self.root_page = Page.objects.get(id=2)
|
||||
self.test_advert = Advert.objects.get(id=1)
|
||||
|
||||
# Add child page
|
||||
self.index_page = StandardIndex(
|
||||
title="My lovely index",
|
||||
slug="my-lovely-index",
|
||||
advert_placements=[AdvertPlacement(advert=self.test_advert)]
|
||||
)
|
||||
self.root_page.add_child(instance=self.index_page)
|
||||
|
||||
# Login
|
||||
self.login()
|
||||
|
||||
def test_get_create_form(self):
|
||||
response = self.client.get(reverse('wagtailadmin_pages_create', args=('tests', 'standardindex', self.root_page.id)))
|
||||
self.assertEqual(response.status_code, 200)
|
||||
# Response should include an advert_placements formset labelled Adverts
|
||||
self.assertContains(response, "Adverts")
|
||||
self.assertContains(response, "id_advert_placements-TOTAL_FORMS")
|
||||
|
||||
def test_post_create_form(self):
|
||||
post_data = {
|
||||
'title': "New index!",
|
||||
'slug': 'new-index',
|
||||
'advert_placements-TOTAL_FORMS': '1',
|
||||
'advert_placements-INITIAL_FORMS': '0',
|
||||
'advert_placements-MAX_NUM_FORMS': '1000',
|
||||
'advert_placements-0-advert': '1',
|
||||
'advert_placements-0-id': '',
|
||||
}
|
||||
response = self.client.post(reverse('wagtailadmin_pages_create', args=('tests', 'standardindex', self.root_page.id)), post_data)
|
||||
|
||||
# Should be redirected to explorer page
|
||||
self.assertRedirects(response, reverse('wagtailadmin_explore', args=(self.root_page.id, )))
|
||||
|
||||
# Find the page and check it
|
||||
page = Page.objects.get(path__startswith=self.root_page.path, slug='new-index').specific
|
||||
self.assertEqual(page.advert_placements.count(), 1)
|
||||
self.assertEqual(page.advert_placements.first().advert.text, 'test_advert')
|
||||
|
||||
def test_get_edit_form(self):
|
||||
response = self.client.get(reverse('wagtailadmin_pages_edit', args=(self.index_page.id, )))
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
# Response should include an advert_placements formset labelled Adverts
|
||||
self.assertContains(response, "Adverts")
|
||||
self.assertContains(response, "id_advert_placements-TOTAL_FORMS")
|
||||
# the formset should be populated with an existing form
|
||||
self.assertContains(response, "id_advert_placements-0-advert")
|
||||
self.assertContains(response, '<option value="1" selected="selected">test_advert</option>')
|
||||
|
||||
def test_post_edit_form(self):
|
||||
post_data = {
|
||||
'title': "My lovely index",
|
||||
'slug': 'my-lovely-index',
|
||||
'advert_placements-TOTAL_FORMS': '2',
|
||||
'advert_placements-INITIAL_FORMS': '1',
|
||||
'advert_placements-MAX_NUM_FORMS': '1000',
|
||||
'advert_placements-0-advert': '1',
|
||||
'advert_placements-0-id': self.index_page.advert_placements.first().id,
|
||||
'advert_placements-1-advert': '1',
|
||||
'advert_placements-1-id': '',
|
||||
'action-publish': "Publish",
|
||||
}
|
||||
response = self.client.post(reverse('wagtailadmin_pages_edit', args=(self.index_page.id, )), post_data)
|
||||
|
||||
# Should be redirected to explorer page
|
||||
self.assertRedirects(response, reverse('wagtailadmin_explore', args=(self.root_page.id, )))
|
||||
|
||||
# Find the page and check it
|
||||
page = Page.objects.get(id=self.index_page.id).specific
|
||||
self.assertEqual(page.advert_placements.count(), 2)
|
||||
self.assertEqual(page.advert_placements.all()[0].advert.text, 'test_advert')
|
||||
self.assertEqual(page.advert_placements.all()[1].advert.text, 'test_advert')
|
||||
|
|
Ładowanie…
Reference in New Issue