From 50392c92551f6ac28664c51cb6f3720d13a5ea6a Mon Sep 17 00:00:00 2001 From: Greg Turner Date: Tue, 22 Nov 2016 23:54:22 +1100 Subject: [PATCH] For some reason tests on child_pages decided to start failing due to DraftBoobyTrap access just now. This change repairs logic on the plugin to be aware of draft/public status. --- .../page_types/layout_page/search_indexes.py | 12 ------- icekit/plugins/child_pages/abstract_models.py | 13 +++++-- icekit/plugins/child_pages/models.py | 2 +- icekit/plugins/child_pages/tests.py | 36 ++++++++++++------- 4 files changed, 35 insertions(+), 28 deletions(-) delete mode 100644 icekit/page_types/layout_page/search_indexes.py diff --git a/icekit/page_types/layout_page/search_indexes.py b/icekit/page_types/layout_page/search_indexes.py deleted file mode 100644 index 7bf4cc92..00000000 --- a/icekit/page_types/layout_page/search_indexes.py +++ /dev/null @@ -1,12 +0,0 @@ -from haystack import indexes -from icekit.search_indexes import AbstractLayoutIndex - -from icekit.utils.search import FluentContentsPageIndexMixin - -from . import models - - -class PageIndex(AbstractLayoutIndex): - - def get_model(self): - return models.LayoutPage diff --git a/icekit/plugins/child_pages/abstract_models.py b/icekit/plugins/child_pages/abstract_models.py index 087b0180..9185454c 100644 --- a/icekit/plugins/child_pages/abstract_models.py +++ b/icekit/plugins/child_pages/abstract_models.py @@ -4,13 +4,20 @@ @python_2_unicode_compatible -class AbstractChildPageItem(ContentItem): +class AbstractChildPagesItem(ContentItem): class Meta: abstract = True - verbose_name = _('Child Page') + verbose_name = _('Child Pages') def __str__(self): return 'Child Pages' def get_child_pages(self): - return self.parent.get_children() + # If my parent page is draft, show parent's (draft) children + # if my parent page is published, show published equivalents of parent's children + parent = self.parent + + if parent.is_draft: + return [p for p in parent.get_children() if p.publishing_is_draft] + else: + return parent.get_draft().get_children().published() diff --git a/icekit/plugins/child_pages/models.py b/icekit/plugins/child_pages/models.py index ef93532f..ece6414b 100644 --- a/icekit/plugins/child_pages/models.py +++ b/icekit/plugins/child_pages/models.py @@ -1,5 +1,5 @@ from . import abstract_models -class ChildPageItem(abstract_models.AbstractChildPageItem): +class ChildPageItem(abstract_models.AbstractChildPagesItem): pass diff --git a/icekit/plugins/child_pages/tests.py b/icekit/plugins/child_pages/tests.py index 47c24e9b..7344bb68 100644 --- a/icekit/plugins/child_pages/tests.py +++ b/icekit/plugins/child_pages/tests.py @@ -12,7 +12,7 @@ User = get_user_model() -class InstagramEmbedItemTestCase(WebTest): +class ChildPagesTestCase(WebTest): def setUp(self): self.layout_1 = G( Layout, @@ -32,7 +32,6 @@ def setUp(self): parent_site=Site.objects.first(), layout=self.layout_1, author=self.staff_1, - status='p', # Publish the page ) self.page_2 = LayoutPage.objects.create( title='Test Page 2', @@ -40,7 +39,6 @@ def setUp(self): parent_site=Site.objects.first(), layout=self.layout_1, author=self.staff_1, - status='p', # Publish the page ) self.page_3 = LayoutPage.objects.create( title='Test Page 3', @@ -48,7 +46,6 @@ def setUp(self): parent_site=Site.objects.first(), layout=self.layout_1, author=self.staff_1, - status='p', # Publish the page parent=self.page_2, ) self.page_4 = LayoutPage.objects.create( @@ -57,24 +54,39 @@ def setUp(self): parent_site=Site.objects.first(), layout=self.layout_1, author=self.staff_1, - status='p', # Publish the page parent=self.page_2, ) - self.child_page_1 = fluent_contents.create_content_instance( + self.child_pages_1 = fluent_contents.create_content_instance( models.ChildPageItem, self.page_1, ) - self.child_page_2 = fluent_contents.create_content_instance( + self.child_pages_2 = fluent_contents.create_content_instance( models.ChildPageItem, self.page_2, ) + self.page_1.publish() + self.page_2.publish() + self.page_3.publish() + # page_4 is not published + def test_str(self): - self.assertEqual(str(self.child_page_1), 'Child Pages') + self.assertEqual(str(self.child_pages_1), 'Child Pages') - def test_get_child_pages(self): - self.assertEqual(self.child_page_1.get_child_pages().count(), 0) - self.assertEqual(self.child_page_2.get_child_pages().count(), 2) + def test_get_child_pages_draft(self): + self.assertEqual(len(self.child_pages_1.get_child_pages()), 0) + self.assertEqual(len(self.child_pages_2.get_child_pages()), 2) expected_children = [self.page_3, self.page_4] for child in expected_children: - self.assertIn(child, self.child_page_2.get_child_pages()) + self.assertIn(child, self.child_pages_2.get_child_pages()) + + + def test_get_child_pages_published(self): + pcp1 = self.page_1.get_published().contentitem_set.all()[0] + pcp2 = self.page_2.get_published().contentitem_set.all()[0] + + self.assertEqual(len(pcp1.get_child_pages()), 0) + self.assertEqual(len(pcp2.get_child_pages()), 1) + expected_children = [self.page_3.get_published()] + for child in expected_children: + self.assertIn(child, pcp2.get_child_pages())