Exemplo n.º 1
0
    def process(self, form_code, submission_values, extra_data=[]):
        form_model = get_form_model_by_code(self.dbm, form_code)

        processor_func = self._get_handlers(form_model)
        response = processor_func(form_model, submission_values)
        if len(extra_data) or (response and not response.success):
            self.request['exception'] = SMSParserWrongNumberOfAnswersException(form_code)
 def test_should_return_exception_message_for_incorrect_number_of_sms_answers(
         self):
     message = get_exception_message_for(
         exception=SMSParserWrongNumberOfAnswersException("form_code"),
         channel="sms")
     expected_message = u'Error. Incorrect number of responses. Please review printed Questionnaire and resend entire SMS.'
     self.assertEqual(expected_message, message)
Exemplo n.º 3
0
 def test_should_raise_number_of_response_exception_if_number_of_responses_is_incorrect_and_datasender_is_linked(self):
     self.form_model_patch.return_value = self._get_form_model_mock(is_registration_form=False, fields=[1, 2])
     self.project_mock.return_value = self._get_project_mock()
     reporter_entity = Mock()
     reporter_entity.short_code = 'rep2'
     incoming_request = {'reporter_entity': reporter_entity, 'exception': SMSParserWrongNumberOfAnswersException('form_code')}
     processor = PostSMSProcessorCheckDSIsLinkedToProject(dbm=None, request=incoming_request)
     self.assertRaises(SMSParserWrongNumberOfAnswersException, processor.process, "form_code", {'q1': 'ans', 'q2': 'ans2'})
Exemplo n.º 4
0
    def test_should_handle_SMSParserWrongNumberOfAnswersException(self):
        exception = SMSParserWrongNumberOfAnswersException('test_code')

        form_model_mock = Mock(spec=FormModel)
        form_model_mock.activeLanguages = ['en']
        self.request['dbm'] = Mock(spec=DatabaseManager)
        expected_message = get_exception_message_for(exception, channel=SMS)

        response = handle(exception, self.request)

        self.assertEqual(expected_message, response)
Exemplo n.º 5
0
    def process(self, form_code, submission_values, extra_data=[]):
        try:
            form_model = get_form_model_by_code(self.dbm, form_code)
            check_if_form_code_is_poll(self, form_model)
        except FormModelDoesNotExistsException:
            form_model = get_active_form_model(self.dbm, form_code)

        processor_func = self._get_handlers(form_model)
        response = processor_func(form_model, submission_values)
        if len(extra_data) or (response and not response.success):
            self.request['exception'] = SMSParserWrongNumberOfAnswersException(
                form_code)
Exemplo n.º 6
0
    def test_should_handle_SMSParserWrongNumberOfAnswersException(self):
        exception = SMSParserWrongNumberOfAnswersException('test_code')

        form_model_mock = Mock(spec=FormModel)
        patcher = patch('datawinners.messageprovider.handlers.get_form_model_by_code')
        get_form_model_mock = patcher.start()
        get_form_model_mock.return_value = form_model_mock
        form_model_mock.activeLanguages = ['en']
        self.request['dbm'] = Mock(spec=DatabaseManager)
        expected_message = get_exception_message_for(exception, channel=SMS)

        response = handle(exception, self.request)

        self.assertEqual(expected_message, response)
        self.assertEqual('en', get_language())
        patcher.stop()
Exemplo n.º 7
0
    def test_should_raise_datasender_not_linked_exception_if_number_of_responses_is_incorrect_and_datasender_is_not_linked(self):
        self.form_model_patch.return_value = self._get_form_model_mock(is_registration_form=False, fields=[1, 2])
        self.project_mock.return_value = self._get_project_mock()
        reporter_entity = Mock()
        reporter_entity.short_code = 'rep23'
        incoming_request = {'reporter_entity': reporter_entity, 'exception': SMSParserWrongNumberOfAnswersException('form_code')}
        processor = PostSMSProcessorCheckDSIsLinkedToProject(dbm=None, request=incoming_request)
        self.assertRaises(DatasenderIsNotLinkedException, processor.process, "form_code", {'q1': 'ans', 'q2': 'ans2'})

    #def test_should_not_raise_exception_if_number_of_responses_is_correct_and_datasender_is_not_linked(self):
    #    self.form_model_patch.return_value = self._get_form_model_mock(is_registration_form=False, fields=[1, 2])
    #    self.project_mock.return_value = self._get_project_mock()
    #    reporter_entity = Mock()
    #    reporter_entity.short_code = 'rep23'
    #    incoming_request = {'reporter_entity': reporter_entity}
    #    processor = PostSMSProcessorCheckDSIsLinkedToProject(dbm=None, request=incoming_request)
    #
    #    response = processor.process("form_code", {'q1': 'ans', 'q2': 'ans2'})
    #
    #    self.assertNotEqual(None, response)
    #    self.assertEqual(NOT_AUTHORIZED_DATASENDER_MSG, response.errors)