mirror of
https://github.com/django/django.git
synced 2025-10-31 09:41:08 +00:00
Fixed #18454 -- Added ability to pass a list of signals to receiver.
Added ability to use receiver decorator in the following way:
@receiver([post_save, post_delete], sender=MyModel)
def signals_receiver(sender, **kwargs):
...
This commit is contained in:
committed by
Florian Apolloner
parent
946d3d9f84
commit
d4da08375b
@@ -4,5 +4,5 @@ Unit-tests for the dispatch project
|
||||
|
||||
from __future__ import absolute_import
|
||||
|
||||
from .test_dispatcher import DispatcherTests
|
||||
from .test_dispatcher import DispatcherTests, ReceiverTestCase
|
||||
from .test_saferef import SaferefTests
|
||||
|
||||
@@ -2,7 +2,7 @@ import gc
|
||||
import sys
|
||||
import time
|
||||
|
||||
from django.dispatch import Signal
|
||||
from django.dispatch import Signal, receiver
|
||||
from django.utils import unittest
|
||||
|
||||
|
||||
@@ -33,6 +33,8 @@ class Callable(object):
|
||||
return val
|
||||
|
||||
a_signal = Signal(providing_args=["val"])
|
||||
b_signal = Signal(providing_args=["val"])
|
||||
c_signal = Signal(providing_args=["val"])
|
||||
|
||||
class DispatcherTests(unittest.TestCase):
|
||||
"""Test suite for dispatcher (barely started)"""
|
||||
@@ -123,3 +125,29 @@ class DispatcherTests(unittest.TestCase):
|
||||
garbage_collect()
|
||||
a_signal.disconnect(receiver_3)
|
||||
self._testIsClean(a_signal)
|
||||
|
||||
|
||||
class ReceiverTestCase(unittest.TestCase):
|
||||
"""
|
||||
Test suite for receiver.
|
||||
|
||||
"""
|
||||
def testReceiverSingleSignal(self):
|
||||
@receiver(a_signal)
|
||||
def f(val, **kwargs):
|
||||
self.state = val
|
||||
self.state = False
|
||||
a_signal.send(sender=self, val=True)
|
||||
self.assertTrue(self.state)
|
||||
|
||||
def testReceiverSignalList(self):
|
||||
@receiver([a_signal, b_signal, c_signal])
|
||||
def f(val, **kwargs):
|
||||
self.state.append(val)
|
||||
self.state = []
|
||||
a_signal.send(sender=self, val='a')
|
||||
c_signal.send(sender=self, val='c')
|
||||
b_signal.send(sender=self, val='b')
|
||||
self.assertIn('a', self.state)
|
||||
self.assertIn('b', self.state)
|
||||
self.assertIn('c', self.state)
|
||||
|
||||
Reference in New Issue
Block a user