class PollResponsesTest(unittest.TestCase):
    def setUp(self):
        self.view = SubmitPollResponses()

    def test_that_json_data_in_request_is_parsed_correctly_as_json(self):
        message = "Successful message"
        request_factory = RequestFactory()
        fake_request = request_factory.post("/", "{\"message\": \"%s\"}" % message, "application/json")
        data = self.view.get_json_data(fake_request)
        self.assertEqual(message, data['message'])

    def test_that_the_poll_response_is_in_the_correct_format(self):
        request_factory = RequestFactory()
        response = "Yes"
        fake_request = request_factory.post("/", "{\"response\": \"%s\"}" % response, "application/json")
        self.assertEqual(response, self.view.get_incoming_response(fake_request))

    def test_that_in_case_of_get_it_raise_405(self):
        http_response = self.view.get(None)
        self.assertEqual(405, http_response.status_code)

    def test_that_it_raises_a_404_if_the_poll_does_not_exist(self):
        fake_get_poll = Mock(side_effect=Poll.DoesNotExist)
        self.view.get_poll_by_id = fake_get_poll
        with self.assertRaises(Http404):
            self.view.get_poll("23")

    def test_that_if_response_has_errors_accepted_is_false(self):
        fake_poll = Mock()
        fake_poll.process_response = Mock(return_value=(Response(has_errors=True), ""))
        self.view.create_incoming_message = Mock(return_value=None)
        self.view.create_script_response = Mock(return_value=None)
        accepted, message = self.view.process_poll_response("", fake_poll)
        self.assertEqual(accepted, False)

    def test_that_if_response_does_not_have_errors_accepted_is_true(self):
        fake_poll = Mock()
        fake_poll.process_response = Mock(return_value=(Response(has_errors=False), ""))
        self.view.create_incoming_message = Mock(return_value=None)
        self.view.create_script_response = Mock(return_value=None)
        accepted, message = self.view.process_poll_response("", fake_poll)
        self.assertEqual(accepted, True)

    def test_that_if_the_response_has_no_errors_and_the_poll_has_a_script_progress_it_is_moved_on(self):
        fake_poll = Mock()
        fake_progress = Mock()
        fake_moveon_method = Mock()
        fake_progress.moveon = fake_moveon_method
        self.view.get_script_progress_for_poll = Mock(return_value=fake_progress)
        self.view.process_registration_steps(fake_poll)
        assert fake_moveon_method.called

    def test_that_if_the_response_has_no_errors_and_the_poll_has_no_script_progress_it_is_moved_on(self):
        fake_poll = Mock()
        fake_progress = Mock()
        fake_moveon_method = Mock()
        fake_progress.moveon = fake_moveon_method
        self.view.get_script_progress_for_poll = Mock(return_value=None)
        self.view.process_registration_steps(fake_poll)
        assert not fake_moveon_method.called

    def test_that_if_the_response_is_accepted_the_script_steps_are_checked(self):
        self.view.get_poll = Mock(return_value=Poll())
        self.view.get_incoming_response = Mock()
        self.view.process_poll_response = Mock(return_value=(True, ""))
        self.view.create_json_response = Mock()
        fake_process_registration = Mock()
        self.view.process_registration_steps = fake_process_registration
        self.view.post(self, None, **{'poll_id': "12"})
        assert fake_process_registration.called

    def test_that_if_the_response_is_not_accepted_the_script_steps_are_not_checked(self):
        self.view.get_poll = Mock(return_value=Poll())
        self.view.get_incoming_response = Mock()
        self.view.process_poll_response = Mock(return_value=(False, ""))
        self.view.create_json_response = Mock()
        fake_process_registration = Mock()
        self.view.process_registration_steps = fake_process_registration
        self.view.post(self, None, **{'poll_id': "12"})
        assert not fake_process_registration.called

    def test_that_it_returns_a_400_response_if_the_json_is_in_the_wrong_format(self):
        fake_request_factory = RequestFactory()
        fake_request = fake_request_factory.post('/', {"": ""})
        fake_request._raw_post_data = "///sd"
        self.view.get_poll = Mock(return_value=None)
        response = self.view.post(fake_request)
        self.assertEqual(400, response.status_code)

    def test_that_it_returns_a_400_if_the_json_has_no_key_response(self):
        fake_request_factory = RequestFactory()
        fake_request = fake_request_factory.post('/', {"": ""})
        fake_request._raw_post_data = "{}"
        self.view.get_poll = Mock(return_value=None)
        response = self.view.post(fake_request)
        self.assertEqual(400, response.status_code)
Пример #2
0
class PollResponsesTest(unittest.TestCase):
    def setUp(self):
        self.view = SubmitPollResponses()

    def test_that_json_data_in_request_is_parsed_correctly_as_json(self):
        message = "Successful message"
        request_factory = RequestFactory()
        fake_request = request_factory.post("/",
                                            "{\"message\": \"%s\"}" % message,
                                            "application/json")
        data = self.view.get_json_data(fake_request)
        self.assertEqual(message, data['message'])

    def test_that_the_poll_response_is_in_the_correct_format(self):
        request_factory = RequestFactory()
        response = "Yes"
        fake_request = request_factory.post(
            "/", "{\"response\": \"%s\"}" % response, "application/json")
        self.assertEqual(response,
                         self.view.get_incoming_response(fake_request))

    def test_that_in_case_of_get_it_raise_405(self):
        http_response = self.view.get(None)
        self.assertEqual(405, http_response.status_code)

    def test_that_it_raises_a_404_if_the_poll_does_not_exist(self):
        fake_get_poll = Mock(side_effect=Poll.DoesNotExist)
        self.view.get_poll_by_id = fake_get_poll
        with self.assertRaises(Http404):
            self.view.get_poll("23")

    def test_that_if_response_has_errors_accepted_is_false(self):
        fake_poll = Mock()
        fake_poll.process_response = Mock(return_value=(Response(
            has_errors=True), ""))
        self.view.create_incoming_message = Mock(return_value=None)
        self.view.create_script_response = Mock(return_value=None)
        accepted, message = self.view.process_poll_response("", fake_poll)
        self.assertEqual(accepted, False)

    def test_that_if_response_does_not_have_errors_accepted_is_true(self):
        fake_poll = Mock()
        fake_poll.process_response = Mock(return_value=(Response(
            has_errors=False), ""))
        self.view.create_incoming_message = Mock(return_value=None)
        self.view.create_script_response = Mock(return_value=None)
        accepted, message = self.view.process_poll_response("", fake_poll)
        self.assertEqual(accepted, True)

    def test_that_if_the_response_has_no_errors_and_the_poll_has_a_script_progress_it_is_moved_on(
            self):
        fake_poll = Mock()
        fake_progress = Mock()
        fake_moveon_method = Mock()
        fake_progress.moveon = fake_moveon_method
        self.view.get_script_progress_for_poll = Mock(
            return_value=fake_progress)
        self.view.process_registration_steps(fake_poll)
        assert fake_moveon_method.called

    def test_that_if_the_response_has_no_errors_and_the_poll_has_no_script_progress_it_is_moved_on(
            self):
        fake_poll = Mock()
        fake_progress = Mock()
        fake_moveon_method = Mock()
        fake_progress.moveon = fake_moveon_method
        self.view.get_script_progress_for_poll = Mock(return_value=None)
        self.view.process_registration_steps(fake_poll)
        assert not fake_moveon_method.called

    def test_that_if_the_response_is_accepted_the_script_steps_are_checked(
            self):
        self.view.get_poll = Mock(return_value=Poll())
        self.view.get_incoming_response = Mock()
        self.view.process_poll_response = Mock(return_value=(True, ""))
        self.view.create_json_response = Mock()
        fake_process_registration = Mock()
        self.view.process_registration_steps = fake_process_registration
        self.view.post(self, None, **{'poll_id': "12"})
        assert fake_process_registration.called

    def test_that_if_the_response_is_not_accepted_the_script_steps_are_not_checked(
            self):
        self.view.get_poll = Mock(return_value=Poll())
        self.view.get_incoming_response = Mock()
        self.view.process_poll_response = Mock(return_value=(False, ""))
        self.view.create_json_response = Mock()
        fake_process_registration = Mock()
        self.view.process_registration_steps = fake_process_registration
        self.view.post(self, None, **{'poll_id': "12"})
        assert not fake_process_registration.called

    def test_that_it_returns_a_400_response_if_the_json_is_in_the_wrong_format(
            self):
        fake_request_factory = RequestFactory()
        fake_request = fake_request_factory.post('/', {"": ""})
        fake_request._raw_post_data = "///sd"
        self.view.get_poll = Mock(return_value=None)
        response = self.view.post(fake_request)
        self.assertEqual(400, response.status_code)

    def test_that_it_returns_a_400_if_the_json_has_no_key_response(self):
        fake_request_factory = RequestFactory()
        fake_request = fake_request_factory.post('/', {"": ""})
        fake_request._raw_post_data = "{}"
        self.view.get_poll = Mock(return_value=None)
        response = self.view.post(fake_request)
        self.assertEqual(400, response.status_code)