summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorIlya Baryshev <baryshev@gmail.com>2015-07-02 23:44:37 +0300
committerRaphaƫl Barrois <raphael.barrois@polytechnique.org>2015-07-05 17:04:18 +0200
commitd471c1b4b0d4b06d557b5b6a9349a7dc55515d69 (patch)
tree923ed608763457fd0bf83ff5fdb8632779b69a48 /tests
parent5114549520e95c658716b7cbe9a7ab333d8ca524 (diff)
downloadfactory-boy-d471c1b4b0d4b06d557b5b6a9349a7dc55515d69.tar
factory-boy-d471c1b4b0d4b06d557b5b6a9349a7dc55515d69.tar.gz
Fix mute_signals behavior for signals with caching
Connecting signals (with use_caching=True) inside mute_signals was breaking unmute on exit. Paused receivers were not running. This was caused by signal cache not being restored after unpatching. Workaround is to clear signal cache on exit. Fixes #212
Diffstat (limited to 'tests')
-rw-r--r--tests/test_django.py13
1 files changed, 13 insertions, 0 deletions
diff --git a/tests/test_django.py b/tests/test_django.py
index b8e7ccb..103df91 100644
--- a/tests/test_django.py
+++ b/tests/test_django.py
@@ -678,6 +678,19 @@ class PreventSignalsTestCase(unittest.TestCase):
self.assertSignalsReactivated()
+ def test_signal_cache(self):
+ with factory.django.mute_signals(signals.pre_save, signals.post_save):
+ signals.post_save.connect(self.handlers.mute_block_receiver)
+ WithSignalsFactory()
+
+ self.assertTrue(self.handlers.mute_block_receiver.call_count, 1)
+ self.assertEqual(self.handlers.pre_init.call_count, 1)
+ self.assertFalse(self.handlers.pre_save.called)
+ self.assertFalse(self.handlers.post_save.called)
+
+ self.assertSignalsReactivated()
+ self.assertTrue(self.handlers.mute_block_receiver.call_count, 1)
+
def test_class_decorator(self):
@factory.django.mute_signals(signals.pre_save, signals.post_save)
class WithSignalsDecoratedFactory(factory.django.DjangoModelFactory):