示例#1
0
    def test_transaction_atomic_works(self):
        # create and connect a post fake receiver to the desired signal
        post_receiver = MagicMock()
        post_receiver.side_effect = AttributeError('boo' + unichr(5000))
        post_event_signal.connect(
            post_receiver, dispatch_uid='blah post'
        )
        self.assertIsNone(FakeModel.objects.first())
        # call the transition that will trigger the signal
        response = self.client.post('/fakemodels/', {})

        self.assertTrue(post_receiver.called)
        self.assertEquals(post_receiver.call_count, 1)

        self.assertEquals(response.status_code, 500)

        self.assertIsNone(FakeModel.objects.first())

        # cleanup
        post_event_signal.disconnect(post_receiver)
示例#2
0
    def test_signals_sent(self):
        # create and connect a pre and post fake receiver to the desired signal
        pre_receiver = MagicMock(return_value=None)
        post_receiver = MagicMock(return_value=None)

        pre_event_signal.connect(
            pre_receiver, dispatch_uid='blah blah blah pre'
        )
        post_event_signal.connect(
            post_receiver, dispatch_uid='blah blah blah post'
        )

        # call the transition that will trigger the signal
        response = self.client.post('/fakemodels/', {})
        self.assertEquals(response.status_code, 201)

        # ensure that the receiver was only called once
        self.assertTrue(post_receiver.called)
        self.assertEquals(post_receiver.call_count, 1)
        self.assertTrue(pre_receiver.called)
        self.assertEquals(pre_receiver.call_count, 1)

        # ensure the receiver was only called once with the correct args
        args = post_receiver.call_args[1]
        self.assertEquals(args.get('event_name'), 'create')
        self.assertEquals(args.get('sender'), FakeModelSerializer)
        self.assertIsInstance(args.get('instance'), FakeModelSerializer)
        self.assertIsInstance(args.get('event_output'), FakeModel)
        self.assertFalse(args.get('kwarg_data'))
        self.assertIsInstance(args.get('kwarg_data'), dict)
        self.assertTrue(args.get('arg_data'))
        self.assertTrue(len(args.get('arg_data')), 1)
        self.assertIsInstance(args.get('arg_data'), tuple)

        # cleanup
        pre_event_signal.disconnect(pre_receiver)
        post_event_signal.disconnect(post_receiver)