class BaseRevisionPreviewTestCase(TestCase, WagtailTestUtils): def setUp(self): # set permissions wagtailadmin_content_type, _ = ContentType.objects.get_or_create( app_label='wagtailadmin', model='admin') Permission.objects.get_or_create( content_type=wagtailadmin_content_type, codename='access_admin', name='Can access Wagtail admin') # login self.user = self.login() # create pages self.page = ConditionPageFactory(title='Page') self.revision = self.page.save_revision()
class PreviewPagesTestCase(ContentAPIBaseTestCase): """ Tests getting the content of a page by its revision id. """ def setUp(self): super().setUp() self.page = ConditionPageFactory(title='Page') def test_get_by_revision_x(self): """ Tests that getting a page by its revision id returns the related content, not the live one. """ # save some revisions revision_data = [] for change_number in range(1, 3): self.page.title = 'Page change {}'.format(change_number) self.page.save() revision = self.page.save_revision() revision_data.append((revision.id, self.page.title)) # get those versions and check that page.title == saved title for revision_id, page_title in revision_data: response = self.get_preview_content_api_response( self.page.id, revision_id=revision_id) content = response.json() self.assertEqual(response.status_code, 200) self.assertEqual(content['title'], page_title) def test_404_if_revision_doesnt_exist(self): """ Tests that trying to get a page by an invalid revision returns 404. """ # save a few revisions for change_number in range(1, 3): self.page.title = 'Page change {}'.format(change_number) self.page.save() self.page.save_revision() # get invalid revision id (last id + 1) revision_id = PageRevision.objects.order_by('-id')[0].id + 1 response = self.get_preview_content_api_response( self.page.id, revision_id=revision_id) self.assertEqual(response.status_code, 404) def test_get_defaults_to_latest_revision(self): """ Tests that getting a page without specifying a revision id returns the latest version. """ # save some revisions latest_title = self.page.title for change_number in range(1, 3): self.page.title = 'Page change {}'.format(change_number) self.page.save() self.page.save_revision() latest_title = self.page.title # check that returned content.title == latest title response = self.get_preview_content_api_response(self.page.id) content = response.json() self.assertEqual(response.status_code, 200) self.assertEqual(content['title'], latest_title)