def test_that_get_script_progress_for_poll_returns_none_if_there_is_no_script_progress_for_the_poll(self):
     poll = self.setup_poll()
     view = SubmitPollResponses()
     backend = Backend.objects.create(name="test_backend")
     view.connection = Connection.objects.create(identity="7777", backend=backend)
     script_progress = view.get_script_progress_for_poll(poll)
     self.assertEqual(None, script_progress)
Пример #2
0
 def test_that_get_script_progress_for_poll_returns_none_if_there_is_no_script_progress_for_the_poll(
         self):
     poll = self.setup_poll()
     view = SubmitPollResponses()
     backend = Backend.objects.create(name="test_backend")
     view.connection = Connection.objects.create(identity="7777",
                                                 backend=backend)
     script_progress = view.get_script_progress_for_poll(poll)
     self.assertEqual(None, script_progress)
 def test_that_get_script_progress_for_poll_returns_script_progress(self):
     poll = self.setup_poll()
     view = SubmitPollResponses()
     backend = Backend.objects.create(name="test_backend")
     view.connection = Connection.objects.create(identity="7777", backend=backend)
     script, created = Script.objects.get_or_create(slug="ureport_autoreg2")
     ScriptStep.objects.create(script=script, order=1, poll=poll)
     script_progress = ScriptProgress.objects.create(connection=view.connection, script=script)
     script_progress.start()
     self.assertEqual(script_progress, view.get_script_progress_for_poll(poll))
 def test_that_that_script_progress_moves_to_next_step_if_exists(self):
     poll = self.setup_poll()
     view = SubmitPollResponses()
     backend = Backend.objects.create(name="test_backend")
     view.connection = Connection.objects.create(identity="7777", backend=backend)
     script, created = Script.objects.get_or_create(slug="ureport_autoreg2")
     ScriptStep.objects.create(script=script, order=1, poll=poll)
     ScriptStep.objects.create(script=script, order=2, message="")
     script_progress = ScriptProgress.objects.create(connection=view.connection, script=script)
     script_progress.start()
     view.process_registration_steps(poll)
     reloaded_script_progress = ScriptProgress.objects.get(pk=script_progress.id)
     self.assertEqual(2, reloaded_script_progress.step.order)
Пример #5
0
 def test_that_get_script_progress_for_poll_returns_script_progress(self):
     poll = self.setup_poll()
     view = SubmitPollResponses()
     backend = Backend.objects.create(name="test_backend")
     view.connection = Connection.objects.create(identity="7777",
                                                 backend=backend)
     script, created = Script.objects.get_or_create(slug="ureport_autoreg2")
     ScriptStep.objects.create(script=script, order=1, poll=poll)
     script_progress = ScriptProgress.objects.create(
         connection=view.connection, script=script)
     script_progress.start()
     self.assertEqual(script_progress,
                      view.get_script_progress_for_poll(poll))
 def test_process_poll_returns_an_outgoing_message(self):
     backend = Backend.objects.create(name="test_backend")
     connection = Connection.objects.create(identity="7777", backend=backend)
     contact, contact_created = Contact.objects.get_or_create(name='John Jonny')
     connection.contact = contact
     connection.save()
     script = Script.objects.create(slug="who")
     ScriptSession.objects.create(connection=connection, script=script)
     default_response = "Thanks"
     poll = self.setup_poll(default_response)
     view = SubmitPollResponses()
     view.connection = connection
     accepted, outgoing_message = view.process_poll_response("Yes", poll)
     self.assertEqual(True, accepted)
     self.assertEqual(default_response, outgoing_message)
Пример #7
0
 def test_that_that_script_progress_moves_to_next_step_if_exists(self):
     poll = self.setup_poll()
     view = SubmitPollResponses()
     backend = Backend.objects.create(name="test_backend")
     view.connection = Connection.objects.create(identity="7777",
                                                 backend=backend)
     script, created = Script.objects.get_or_create(slug="ureport_autoreg2")
     ScriptStep.objects.create(script=script, order=1, poll=poll)
     ScriptStep.objects.create(script=script, order=2, message="")
     script_progress = ScriptProgress.objects.create(
         connection=view.connection, script=script)
     script_progress.start()
     view.process_registration_steps(poll)
     reloaded_script_progress = ScriptProgress.objects.get(
         pk=script_progress.id)
     self.assertEqual(2, reloaded_script_progress.step.order)
Пример #8
0
 def test_process_poll_returns_an_outgoing_message(self):
     backend = Backend.objects.create(name="test_backend")
     connection = Connection.objects.create(identity="7777",
                                            backend=backend)
     contact, contact_created = Contact.objects.get_or_create(
         name='John Jonny')
     connection.contact = contact
     connection.save()
     script = Script.objects.create(slug="who")
     ScriptSession.objects.create(connection=connection, script=script)
     default_response = "Thanks"
     poll = self.setup_poll(default_response)
     view = SubmitPollResponses()
     view.connection = connection
     accepted, outgoing_message = view.process_poll_response("Yes", poll)
     self.assertEqual(True, accepted)
     self.assertEqual(default_response, outgoing_message)
Пример #9
0
    url(r"^pulse/(?P<period>\w+)/$", pulse, name='pulse_json'),
    url(r"^map-cloud/$", map_cloud, name='map_cloud'),
    url(r"^upload-contacts", upload_users, name='upload_users'),
    url(r"^access/dashboards/$", access_dashboards, name='access_dashboards'),
    url(r"^assign-group", assign_group, name="assign_group"),
    url(r'^start_poll_export/(\d+)/$',
        start_poll_export,
        name="start_poll_export"),
    url(r"^backend/vumi/$", VumiBackendView.as_view(backend_name="vumi")),
    url(r"^api/v1/ureporters/registration/steps$",
        RegistrationStepsView.as_view()),
    url(r"^api/v1/ureporters/(?P<backend>\w+)/(?P<user_address>\+?\w+)$",
        ViewUReporter.as_view(),
        name="view_ureporter_api"),
    url(r"^api/v1/ureporters/(?P<backend>\w+)/(?P<user_address>\+?\w+)/polls/current$",
        ViewCurrentPoll.as_view(),
        name="view_current_poll_api"),
    url(r"^api/v1/ureporters/(?P<backend>\w+)/(?P<user_address>\+?\w+)/poll/(?P<poll_id>\d+)/responses/$",
        SubmitPollResponses.as_view(),
        name="submit_poll_response_api"),
    url(r"^api/v1/ureporters/(?P<backend>\w+)/(?P<user_address>\+?\w+)/polls/topics$",
        PollTopicsApiView.as_view(),
        name="poll_topics_api"),
    url(r"^api/v1/ureporters/(?P<backend>\w+)/(?P<user_address>\+?\w+)/reports/$",
        SubmitReportApiView.as_view(),
        name="submit_report_api"),
    url(
        r"^api/v1/ureporters/(?P<backend>\w+)/(?P<user_address>\+?\w+)/poll/(?P<poll_id>\d+)/summary$",
        PollSummary.as_view()),
)
Пример #10
0
                                       ('', False, '', None)],
                       }, name="ureport-contact2"),
                       (r'^api/', include(v1_api.urls)),
                       url(r'^comfirm/(?P<key>.+)/$', comfirm_message_sending, name="comfirm"),
                       url(r'^comfirmmessages/(?P<key>.+)/$', comfirmmessages, name="comfirm-messages"),
                       url(r"^dumpreport/(\d+)/$", generate_poll_dump_report),
                       url(r"^districtreport/(\d+)/$", generate_per_district_report),
                       url(r"^pulse/$", pulse, name='pulse_json'),
                       url(r"^pulse/(?P<period>\w+)/$", pulse, name='pulse_json'),
                       url(r"^map-cloud/$", map_cloud, name='map_cloud'),
                       url(r"^upload-contacts", upload_users, name='upload_users'),
                       url(r"^access/dashboards/$", access_dashboards, name='access_dashboards'),
                       url(r"^assign-group", assign_group, name="assign_group"),
                       url(r'^start_poll_export/(\d+)/$', start_poll_export, name="start_poll_export"),
                       url(r"^backend/vumi/$", VumiBackendView.as_view(backend_name="vumi")),
                       url(r"^api/v1/ureporters/registration/steps$", RegistrationStepsView.as_view()),
                       url(r"^api/v1/ureporters/(?P<backend>\w+)/(?P<user_address>\+?\w+)$", ViewUReporter.as_view(),
                           name="view_ureporter_api"),
                       url(r"^api/v1/ureporters/(?P<backend>\w+)/(?P<user_address>\+?\w+)/polls/current$",
                           ViewCurrentPoll.as_view(), name="view_current_poll_api"),
                       url(
                           r"^api/v1/ureporters/(?P<backend>\w+)/(?P<user_address>\+?\w+)/poll/(?P<poll_id>\d+)/responses/$",
                           SubmitPollResponses.as_view(), name="submit_poll_response_api"),
                       url(r"^api/v1/ureporters/(?P<backend>\w+)/(?P<user_address>\+?\w+)/polls/topics$",
                           PollTopicsApiView.as_view(), name="poll_topics_api"),
                       url(r"^api/v1/ureporters/(?P<backend>\w+)/(?P<user_address>\+?\w+)/reports/$",
                           SubmitReportApiView.as_view(), name="submit_report_api"),
                       url(r"^api/v1/ureporters/(?P<backend>\w+)/(?P<user_address>\+?\w+)/poll/(?P<poll_id>\d+)/summary$", PollSummary.as_view()),

)
 def setUp(self):
     self.view = SubmitPollResponses()
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)
Пример #13
0
 def setUp(self):
     self.view = SubmitPollResponses()
Пример #14
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)