def test_create_page(self): tag_1 = Tag(title='Tag 1', slug="tag-1") tag_1.save(request=None) created_page = Page(title="Example", slug="example") created_page.save(request=None) created_page.tags.add(tag_1.document) tag_2 = Tag(title='Tag 2', slug="tag-2") tag_2.save(request=None) updated_page = Page.objects.get(slug=created_page.slug) updated_page.title = "Title updated" updated_page.save(request=None) updated_page.tags.clear() updated_page.tags.add(tag_1.document) updated_page.tags.add(tag_2.document) # must have 2 page revisions: page_revisions = created_page.revisions.all().order_by( 'revision__created_at') self.assertEqual(2, page_revisions.count()) # just 1 page on the database self.assertEqual(1, Page.objects.all().count()) # updated page must be the tip page retrived_page = Page.objects.get(slug=created_page.slug) self.assertEqual(retrived_page, updated_page) # compare m2m relationships self.assertEqual(1, created_page.tags.count()) self.assertEqual(created_page.tags.first().get_object(), tag_1) self.assertEqual(2, updated_page.tags.count()) self.assertEqual(updated_page.tags.first().get_object(), tag_1) self.assertEqual(updated_page.tags.last().get_object(), tag_2) self.assertEqual(1, tag_1.pages.count()) self.assertEqual(tag_1.pages.first(), updated_page) # compare db versions with local variable versions self.assertEqual([created_page, updated_page], list(page_revisions)) self.assertEqual(updated_page.document.revision_created_id, created_page.revision_id) self.assertEqual(updated_page.document.revision_tip_id, updated_page.revision_id) # revert to previous version self._do_login() response = self.graphql({ 'query': ''' mutation M($input_0: RevisionRevertInput!) { revisionRevert(input: $input_0) { clientMutationId errors { code } } } ''', 'variables': { 'input_0': { 'clientMutationId': '11', 'id': created_page.revision_id, } } }) self.assertEqual(response.json(), { 'data': { 'revisionRevert': { 'clientMutationId': '11', 'errors': None }, } }) reverted_page = Page.objects.get(slug=created_page.slug) self.assertEqual(reverted_page, created_page) # delete page reverted_page.delete(request=None) self.assertEqual(0, Page.objects.all().count()) self.assertEqual(0, tag_1.pages.count())