diff options
author | Hugo Cachitas <hcachitas@gmail.com> | 2021-04-02 12:59:15 +0100 |
---|---|---|
committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2021-04-03 14:57:43 +0200 |
commit | 8f6a7a0e9e7c5404af6520ae606927e32415eb00 (patch) | |
tree | d0bff43b43858f623b2ce457f0610c1d28e90537 /tests/signals | |
parent | a89e975caf69ffdbec527f9fe84824e73a7c9cac (diff) | |
download | django-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.py | 43 |
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): """ |