def test_restoring_page_custom_move_to(self): from wagtail_recycle_bin.wagtail_hooks import urlconf_time root_page = Page.objects.get(url_path="/") top = Page(title="1p", has_unpublished_changes=False, live=True) root_page.add_child(instance=top) sub_page = Page(title="1p 1u", has_unpublished_changes=True, live=False) top.add_child(instance=sub_page) with self.register_hook("before_delete_page", recycle_delete): delete_url = reverse("wagtailadmin_pages:delete", args=(sub_page.id, )) self.client.post(delete_url) sub_page.refresh_from_db() with self.register_hook("register_admin_urls", urlconf_time): restore_url = reverse( "wagtail_recycle_bin_move", args=(sub_page.id, ), ) self.client.post(restore_url, {"move_page": str(root_page.id)}) sub_page.refresh_from_db() self.assertIn( sub_page.id, list(root_page.get_children().values_list("id", flat=True)), ) self.assertEqual(RecycleBin.objects.count(), 0)
def test_removing_page_unpublishes_all_sub_pages(self): root_page = Page.objects.get(url_path="/") top = Page(title="1p", has_unpublished_changes=False, live=True) root_page.add_child(instance=top) sub_page = Page(title="1p 1u", has_unpublished_changes=True, live=False) top.add_child(instance=sub_page) sub_page = Page(title="1p 2p", has_unpublished_changes=False, live=True) top.add_child(instance=sub_page) sub_page_id = sub_page.id sub_sub_page = Page(title="1p 2p 3u", has_unpublished_changes=True, live=False) sub_page.add_child(instance=sub_sub_page) self.assertEqual(top.get_descendants(inclusive=True).live().count(), 2) self.assertEqual( top.get_descendants(inclusive=True).not_live().count(), 2) with self.register_hook("before_delete_page", recycle_delete): delete_url = reverse("wagtailadmin_pages:delete", args=(top.id, )) self.client.post(delete_url) top.refresh_from_db() self.assertEqual(top.get_descendants(inclusive=True).live().count(), 0) self.assertEqual( top.get_descendants(inclusive=True).not_live().count(), 4)
def test_restoring_page_re_publishes(self): from wagtail_recycle_bin.wagtail_hooks import urlconf_time root_page = Page.objects.get(url_path="/") top = Page(title="1p", has_unpublished_changes=False, live=True) root_page.add_child(instance=top) sub_page = Page(title="1p 1u", has_unpublished_changes=True, live=False) top.add_child(instance=sub_page) sub_page = Page(title="1p 2p", has_unpublished_changes=False, live=True) top.add_child(instance=sub_page) sub_page_id = sub_page.id sub_sub_page = Page(title="1p 2p 3u", has_unpublished_changes=True, live=False) sub_page.add_child(instance=sub_sub_page) self.assertEqual(top.get_descendants(inclusive=True).live().count(), 2) self.assertEqual( top.get_descendants(inclusive=True).not_live().count(), 2) with self.register_hook("before_delete_page", recycle_delete): delete_url = reverse("wagtailadmin_pages:delete", args=(top.id, )) self.client.post(delete_url) top.refresh_from_db() self.assertEqual(top.get_descendants(inclusive=True).live().count(), 0) self.assertEqual( top.get_descendants(inclusive=True).not_live().count(), 4) with self.register_hook("register_admin_urls", urlconf_time): restore_url = reverse("wagtail_recycle_bin_restore", args=(top.id, )) self.client.get(restore_url) top.refresh_from_db() self.assertEqual(top.get_descendants(inclusive=True).live().count(), 2) self.assertEqual( top.get_descendants(inclusive=True).not_live().count(), 2) self.assertEqual(RecycleBin.objects.count(), 0) self.assertEqual(RecycleBinPage.objects.first().get_children().count(), 0)
def test_update_wont_publish_or_unpublish_if_live_column_is_missing(self): live_page = Page(title='Live Page', live=True) draft_page = Page(title='Draft Page', live=False) home = Page.objects.get(slug='home') home.add_child(instance=live_page) home.add_child(instance=draft_page) csv_data = StringIO('id,title\r\n' f'3,Updated Live Page\r\n' f'4,Updated Draft Page\r\n') successes, errors = import_pages(csv_data, Page) self.assertEqual(successes, [ 'Updated page Updated Live Page with id 3', 'Updated page Updated Draft Page with id 4', ]) self.assertEqual(errors, []) live_page.refresh_from_db() self.assertEqual(live_page.title, 'Updated Live Page') self.assertTrue(live_page.live) draft_page.refresh_from_db() self.assertEqual(draft_page.title, 'Updated Draft Page') self.assertFalse(draft_page.live)