def test_create_simplepage_post_publish_scheduled(self): go_live_at = timezone.now() + datetime.timedelta(days=1) expire_at = timezone.now() + datetime.timedelta(days=2) post_data = { 'title': "New page!", 'content': "Some content", 'slug': 'hello-world', 'action-publish': "Publish", 'go_live_at': submittable_timestamp(go_live_at), 'expire_at': submittable_timestamp(expire_at), } response = self.client.post( reverse('wagtailadmin_pages:add', args=('tests', 'simplepage', self.root_page.id)), post_data) # Should be redirected to explorer page self.assertEqual(response.status_code, 302) # Find the page and check it page = Page.objects.get(path__startswith=self.root_page.path, slug='hello-world').specific self.assertEqual(page.go_live_at.date(), go_live_at.date()) self.assertEqual(page.expire_at.date(), expire_at.date()) self.assertEqual(page.expired, False) # A revision with approved_go_live_at should exist now self.assertTrue( PageRevision.objects.filter(page=page).exclude( approved_go_live_at__isnull=True).exists()) # But Page won't be live self.assertFalse(page.live) self.assertFalse(page.first_published_at) self.assertTrue(page.status_string, "scheduled")
def test_create_simplepage_scheduled_go_live_before_expiry(self): post_data = { 'title': "New page!", 'content': "Some content", 'slug': 'hello-world', 'go_live_at': submittable_timestamp(timezone.now() + datetime.timedelta(days=2)), 'expire_at': submittable_timestamp(timezone.now() + datetime.timedelta(days=1)), } response = self.client.post( reverse('wagtailadmin_pages:add', args=('tests', 'simplepage', self.root_page.id)), post_data) self.assertEqual(response.status_code, 200) # Check that a form error was raised self.assertFormError( response, 'form', 'go_live_at', "Go live date/time must be before expiry date/time") self.assertFormError( response, 'form', 'expire_at', "Go live date/time must be before expiry date/time") # form should be marked as having unsaved changes for the purposes of the dirty-forms warning self.assertContains(response, "alwaysDirty: true")