diff options
| author | David Cramer <dcramer@gmail.com> | 2013-01-11 14:12:22 -0800 |
|---|---|---|
| committer | David Cramer <dcramer@gmail.com> | 2013-01-14 13:15:47 -0800 |
| commit | 272de9eb6baad45abec029aae92c2b7d9478c841 (patch) | |
| tree | 7f4f0ac6278565bc51655be3dafc445953f420a7 /tests | |
| parent | 4720117a31344483119856fb5ed803fe4c35936f (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.py | 12 |
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( |
