def test_set_parent(self): old_parent, _ = RichTextPage.objects.get_or_create(title="Old parent") new_parent, _ = RichTextPage.objects.get_or_create(title="New parent") child, _ = RichTextPage.objects.get_or_create(title="Child", slug="kid") self.assertTrue(child.parent is None) self.assertTrue(child.slug == "kid") child.set_parent(old_parent) child.save() self.assertEqual(child.parent_id, old_parent.id) self.assertTrue(child.slug == "old-parent/kid") child = RichTextPage.objects.get(id=child.id) self.assertEqual(child.parent_id, old_parent.id) self.assertTrue(child.slug == "old-parent/kid") child.set_parent(new_parent) child.save() self.assertEqual(child.parent_id, new_parent.id) self.assertTrue(child.slug == "new-parent/kid") child = RichTextPage.objects.get(id=child.id) self.assertEqual(child.parent_id, new_parent.id) self.assertTrue(child.slug == "new-parent/kid") child.set_parent(None) child.save() self.assertTrue(child.parent is None) self.assertTrue(child.slug == "kid") child = RichTextPage.objects.get(id=child.id) self.assertTrue(child.parent is None) self.assertTrue(child.slug == "kid") child = RichTextPage(title="child2") child.set_parent(new_parent) self.assertEqual(child.slug, "new-parent/child2") # Assert that cycles are detected. p1, _ = RichTextPage.objects.get_or_create(title="p1") p2, _ = RichTextPage.objects.get_or_create(title="p2") p2.set_parent(p1) with self.assertRaises(AttributeError): p1.set_parent(p1) with self.assertRaises(AttributeError): p1.set_parent(p2) p2c = RichTextPage.objects.get(title="p2") with self.assertRaises(AttributeError): p1.set_parent(p2c)
def test_set_parent(self): old_parent, _ = RichTextPage.objects.get_or_create(title="Old parent") new_parent, _ = RichTextPage.objects.get_or_create(title="New parent") child, _ = RichTextPage.objects.get_or_create( title="Child", slug="kid") self.assertTrue(child.parent is None) self.assertTrue(child.slug == "kid") child.set_parent(old_parent) child.save() self.assertEqual(child.parent_id, old_parent.id) self.assertTrue(child.slug == "old-parent/kid") child = RichTextPage.objects.get(id=child.id) self.assertEqual(child.parent_id, old_parent.id) self.assertTrue(child.slug == "old-parent/kid") child.set_parent(new_parent) child.save() self.assertEqual(child.parent_id, new_parent.id) self.assertTrue(child.slug == "new-parent/kid") child = RichTextPage.objects.get(id=child.id) self.assertEqual(child.parent_id, new_parent.id) self.assertTrue(child.slug == "new-parent/kid") child.set_parent(None) child.save() self.assertTrue(child.parent is None) self.assertTrue(child.slug == "kid") child = RichTextPage.objects.get(id=child.id) self.assertTrue(child.parent is None) self.assertTrue(child.slug == "kid") child = RichTextPage(title="child2") child.set_parent(new_parent) self.assertEqual(child.slug, "new-parent/child2") # Assert that cycles are detected. p1, _ = RichTextPage.objects.get_or_create(title="p1") p2, _ = RichTextPage.objects.get_or_create(title="p2") p2.set_parent(p1) with self.assertRaises(AttributeError): p1.set_parent(p1) with self.assertRaises(AttributeError): p1.set_parent(p2) p2c = RichTextPage.objects.get(title="p2") with self.assertRaises(AttributeError): p1.set_parent(p2c)