From e43fae86f1e70ce517c518210171f09d9984286b Mon Sep 17 00:00:00 2001 From: emilecaron Date: Thu, 25 Jun 2015 15:37:15 +0000 Subject: [PATCH] reproduce RuntimeError --- tests/queryset/queryset.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/tests/queryset/queryset.py b/tests/queryset/queryset.py index 4f00e1c6..1e279744 100644 --- a/tests/queryset/queryset.py +++ b/tests/queryset/queryset.py @@ -1413,6 +1413,20 @@ class QuerySetTest(unittest.TestCase): self.Person.objects(name='Test User').delete() self.assertEqual(1, BlogPost.objects.count()) + def test_reverse_delete_rule_cascade_cycle(self): + """Ensure reference cascading doesn't loop if reference graph isn't + a tree + """ + class Category(Document): + reference = ReferenceField('self', reverse_delete_rule=CASCADE) + + base = Category().save() + other = Category(reference=base).save() + base.reference = other + base.save() + + self.assertEqual(2, base.delete()) + def test_reverse_delete_rule_cascade_self_referencing(self): """Ensure self-referencing CASCADE deletes do not result in infinite loop