summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorDavid Cramer <dcramer@gmail.com>2013-01-11 14:12:22 -0800
committerDavid Cramer <dcramer@gmail.com>2013-01-14 13:15:47 -0800
commit272de9eb6baad45abec029aae92c2b7d9478c841 (patch)
tree7f4f0ac6278565bc51655be3dafc445953f420a7 /tests
parent4720117a31344483119856fb5ed803fe4c35936f (diff)
Send post_delete signals immediately
In a normal relational construct, if you're listening for an event that signals a child was deleted, you dont expect that the parent was deleted already. This change ensures that post_delete signals are fired immediately after objects are deleted in the graph.
Diffstat (limited to 'tests')
-rw-r--r--tests/modeltests/delete/tests.py12
1 files changed, 12 insertions, 0 deletions
diff --git a/tests/modeltests/delete/tests.py b/tests/modeltests/delete/tests.py
index 20b815c33d..5d7b7a0b33 100644
--- a/tests/modeltests/delete/tests.py
+++ b/tests/modeltests/delete/tests.py
@@ -229,6 +229,18 @@ class DeletionTests(TestCase):
models.signals.post_delete.disconnect(log_post_delete)
models.signals.post_delete.disconnect(log_pre_delete)
+ def test_relational_post_delete_signals_happen_before_parent_object(self):
+ def log_post_delete(instance, **kwargs):
+ self.assertTrue(R.objects.filter(pk=instance.r_id))
+
+ models.signals.post_delete.connect(log_post_delete, sender=S)
+
+ r = R.objects.create(pk=1)
+ S.objects.create(pk=1, r=r)
+ r.delete()
+
+ models.signals.post_delete.disconnect(log_post_delete)
+
@skipUnlessDBFeature("can_defer_constraint_checks")
def test_can_defer_constraint_checks(self):
u = User.objects.create(