summaryrefslogtreecommitdiff
path: root/tests/signals
diff options
context:
space:
mode:
authorHugo Cachitas <hcachitas@gmail.com>2021-04-02 12:59:15 +0100
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2021-04-03 14:57:43 +0200
commit8f6a7a0e9e7c5404af6520ae606927e32415eb00 (patch)
treed0bff43b43858f623b2ce457f0610c1d28e90537 /tests/signals
parenta89e975caf69ffdbec527f9fe84824e73a7c9cac (diff)
downloaddjango-8f6a7a0e9e7c5404af6520ae606927e32415eb00.tar.gz
Fixed #32594 -- Doc'd and tested that Signal.disconnect() with lazy references returns None.
Diffstat (limited to 'tests/signals')
-rw-r--r--tests/signals/tests.py43
1 files changed, 37 insertions, 6 deletions
diff --git a/tests/signals/tests.py b/tests/signals/tests.py
index ee4661c93f..c4c692ea3e 100644
--- a/tests/signals/tests.py
+++ b/tests/signals/tests.py
@@ -351,20 +351,51 @@ class LazyModelRefTests(BaseSignalSetup, SimpleTestCase):
signals.post_init.disconnect(self.receiver, sender=Created)
@isolate_apps('signals', kwarg_name='apps')
- def test_disconnect(self, apps):
+ def test_disconnect_registered_model(self, apps):
received = []
def receiver(**kwargs):
received.append(kwargs)
- signals.post_init.connect(receiver, sender='signals.Created', apps=apps)
- signals.post_init.disconnect(receiver, sender='signals.Created', apps=apps)
-
class Created(models.Model):
pass
- Created()
- self.assertEqual(received, [])
+ signals.post_init.connect(receiver, sender='signals.Created', apps=apps)
+ try:
+ self.assertIsNone(
+ signals.post_init.disconnect(receiver, sender='signals.Created', apps=apps)
+ )
+ self.assertIsNone(
+ signals.post_init.disconnect(receiver, sender='signals.Created', apps=apps)
+ )
+ Created()
+ self.assertEqual(received, [])
+ finally:
+ signals.post_init.disconnect(receiver, sender='signals.Created')
+
+ @isolate_apps('signals', kwarg_name='apps')
+ def test_disconnect_unregistered_model(self, apps):
+ received = []
+
+ def receiver(**kwargs):
+ received.append(kwargs)
+
+ signals.post_init.connect(receiver, sender='signals.Created', apps=apps)
+ try:
+ self.assertIsNone(
+ signals.post_init.disconnect(receiver, sender='signals.Created', apps=apps)
+ )
+ self.assertIsNone(
+ signals.post_init.disconnect(receiver, sender='signals.Created', apps=apps)
+ )
+
+ class Created(models.Model):
+ pass
+
+ Created()
+ self.assertEqual(received, [])
+ finally:
+ signals.post_init.disconnect(receiver, sender='signals.Created')
def test_register_model_class_senders_immediately(self):
"""