예제 #1
0
 def test_register_reciever_call_connect(self):
     """should call connect to connect signal and receiver"""
     register_reciever(self.model,
                       self.signal,
                       self.receiver)
     # signal.connect should be called with receiver and model
     self.signal.connect.assert_called_with(
         self.receiver, sender=self.model, weak=False)
예제 #2
0
 def watch(self, call_on_created=None):
     self._call_on_created = (self._call_on_created if
                              call_on_created is None else call_on_created)
     # initialize investigator
     self._investigator = Investigator(self.model, include=[self.attr])
     # register the receivers
     register_reciever(self.model, pre_save, self._pre_save_receiver)
     register_reciever(self.model, post_save, self._post_save_receiver)
예제 #3
0
 def watch(self, call_on_created=None):
     if call_on_created is not None:
         self._call_on_created = call_on_created
     super(ManyRelatedWatcher, self).watch(call_on_created)
     if self.through_model:
         # m2m relation
         register_reciever(self.model, m2m_changed,
                           self._m2m_changed_receiver,
                           sender=self.through_model)
예제 #4
0
 def test_register_reciever_call_connect_once(self):
     """should call connect only once to prevent the duplication"""
     for i in range(5):
         register_reciever(self.model,
                           self.signal,
                           self.receiver)
     # signal.connect should be called once
     self.signal.connect.assert_called_once_with(
         self.receiver, sender=self.model, weak=False)
예제 #5
0
 def watch(self, call_on_created=None):
     if call_on_created is not None:
         self._call_on_created = call_on_created
     super(ManyRelatedWatcher, self).watch(call_on_created)
     if self.through_model:
         # m2m relation
         register_reciever(self.model,
                           m2m_changed,
                           self._m2m_changed_receiver,
                           sender=self.through_model)
예제 #6
0
 def test_register_reciever_prefer_specified_sender(self):
     """should call connect with specified sender"""
     sender = MagicMock()
     register_reciever(self.model,
                       self.signal,
                       self.receiver,
                       sender=sender)
     # signal.connect should be called once with specified sender
     self.signal.connect.assert_called_once_with(
         self.receiver, sender=sender, weak=False)
예제 #7
0
 def test_register_reciever_call_connect_of_individual_signals(self):
     """should call connect when signals are different"""
     signals = [MagicMock(wraps=Signal, **{'connect.return_value': None})
                for i in range(5)]
     for signal in signals:
         register_reciever(self.model,
                           signal,
                           self.receiver)
         signal.connect.assert_called_once_with(
             self.receiver, sender=self.model, weak=False)
예제 #8
0
 def setUp(self):
     self.model = MagicMock(wraps=models.Model)
     self.signal = MagicMock(wraps=Signal, **{
         'connect.return_value': None,
         'disconnect.return_value': None,
     })
     self.receiver = MagicMock()
     register_reciever(self.model,
                       self.signal,
                       self.receiver)
예제 #9
0
 def watch(self, call_on_created=None):
     self._call_on_created = (self._call_on_created
                              if call_on_created is None
                              else call_on_created)
     # initialize investigator
     self._investigator = Investigator(self.model, include=[self.attr])
     # register the receivers
     register_reciever(self.model, pre_save,
                       self._pre_save_receiver)
     register_reciever(self.model, post_save,
                       self._post_save_receiver)
예제 #10
0
 def test_register_reciever_call_connect_of_individual_receivers(self):
     """should call connect when receivers are different"""
     receivers = [MagicMock() for i in range(5)]
     for receiver in receivers:
         register_reciever(self.model,
                           self.signal,
                           receiver)
         self.signal.connect.assert_called_with(receiver, weak=False,
                                                sender=self.model)
     # called multiple times
     self.assertEqual(self.signal.connect.call_count, 5)
예제 #11
0
 def test_register_reciever_pass_the_options(self):
     """should call connect with specified **kwargs"""
     register_reciever(self.model,
                       self.signal,
                       self.receiver,
                       weak=True,
                       foo='bar')
     # signal.connect should be called once with specified **kwargs
     # but weak cannot be modified
     self.signal.connect.assert_called_once_with(
         self.receiver, sender=self.model,
         weak=False, foo='bar',
     )
예제 #12
0
 def test_register_reciever_return_false_for_2nd(self):
     """should return False for the 2nd and further call"""
     register_reciever(self.model,
                       self.signal,
                       self.receiver)
     # 2nd call
     r = register_reciever(self.model,
                           self.signal,
                           self.receiver)
     self.assertFalse(r)
     # 3rd call
     r = register_reciever(self.model,
                           self.signal,
                           self.receiver)
     self.assertFalse(r)
예제 #13
0
 def test_unregister_reciever_call_disconnect_of_individual_signals(self):
     """should call connect when signals are different"""
     prop = {
         'connect.return_value': None,
         'disconnect.return_value': None,
     }
     signals = [MagicMock(wraps=Signal, **prop)
                for i in range(5)]
     for signal in signals:
         register_reciever(self.model,
                           signal,
                           self.receiver)
     for signal in signals:
         unregister_reciever(self.model,
                             signal,
                             self.receiver)
         signal.disconnect.assert_called_once_with(self.receiver)
예제 #14
0
 def watch(self, call_on_created=None, include=None, exclude=None):
     self._call_on_created = (self._call_on_created
                              if call_on_created is None
                              else call_on_created)
     include = include or self.include
     exclude = exclude or self.exclude
     self._investigator = Investigator(self.related_model,
                                       include=include,
                                       exclude=exclude)
     # register the receivers
     register_reciever(self.model, pre_save,
                       self._pre_save_receiver,
                       sender=self.related_model)
     register_reciever(self.model, post_save,
                       self._post_save_receiver,
                       sender=self.related_model)
     register_reciever(self.model, post_save,
                       self._post_save_receiver_for_creation)
예제 #15
0
 def watch(self, call_on_created=None, include=None, exclude=None):
     self._call_on_created = (self._call_on_created if
                              call_on_created is None else call_on_created)
     include = include or self.include
     exclude = exclude or self.exclude
     self._investigator = Investigator(self.related_model,
                                       include=include,
                                       exclude=exclude)
     # register the receivers
     register_reciever(self.model,
                       pre_save,
                       self._pre_save_receiver,
                       sender=self.related_model)
     register_reciever(self.model,
                       post_save,
                       self._post_save_receiver,
                       sender=self.related_model)
     register_reciever(self.model, post_save,
                       self._post_save_receiver_for_creation)
예제 #16
0
 def test_register_reciever_return_true_for_1st(self):
     """should return True for the 1st call"""
     r = register_reciever(self.model,
                           self.signal,
                           self.receiver)
     self.assertTrue(r)