Exemplo n.º 1
0
    def mockSignal(self, signal: Signal) -> typing.Iterator[mock.Mock]:  # pylint: disable=invalid-name
        """Context manager to attach a mock to the given signal."""

        # This function is only here to create an autospec. From the documentation:
        #
        #   Notice that the function takes a sender argument, along with wildcard keyword arguments
        #   (**kwargs); all signal handlers must take these arguments.
        #
        # https://docs.djangoproject.com/en/dev/topics/signals/#connecting-to-specific-signals
        def callback(sender: models.Model, **kwargs: typing.Any) -> None:  # pragma: no cover
            # pylint: disable=unused-argument
            pass

        signal_mock = mock.create_autospec(callback, spec_set=True)
        signal.connect(signal_mock)
        try:
            yield signal_mock
        finally:
            signal.disconnect(signal_mock)
Exemplo n.º 2
0
 def test_email_not_sent_when_watcher_removed(self, notifications):
     dispatch_uid = "publicweb.models.decision_signal_handler"
     Signal.disconnect(signals.post_save, sender=Decision,
                       dispatch_uid=dispatch_uid)
     decision = self.create_and_return_decision()
     data = {
           'description': decision.description,
           'status': decision.status,
           'deadline': decision.deadline,
           'people': decision.people,
           'watch': True
     }
     form = DecisionForm(data, instance=decision)
     form.watch = False
     form.is_valid()
     form.save()
     Signal.connect(
         signals.post_save,
         sender=Decision,
         receiver=decision_signal_handler,
         dispatch_uid=dispatch_uid
     )
     self.assertFalse(notifications.called)