Пример #1
0
    def test_create_no_more_info_enabled(self, mock_xsrf_token):
        """Create question when more_info_text, placeholder_text not both there."""
        del mock_xsrf_token  # Unused.
        malformed_answer_message_1 = survey_messages.Answer(
            text='This is a malformed message, do not use.',
            more_info_enabled=True,
            placeholder_text=None)
        malformed_answer_message_2 = survey_messages.Answer(
            text='This is a malformed message, do not use.',
            more_info_enabled=False,
            placeholder_text='False place holder text.')
        request = survey_messages.Question(
            question_type=survey_models.QuestionType.ASSIGNMENT,
            question_text=_QUESTION.format(num=1),
            rand_weight=1,
            enabled=True)

        # Test that more info without place holder text raises an exception.
        with self.assertRaisesRegexp(endpoints.BadRequestException,
                                     survey_models._MORE_INFO_MSG):
            request.answers = [malformed_answer_message_1]
            self.service.create(request)

        # Test that place holder text without more info raises an exception.
        with self.assertRaisesRegexp(endpoints.BadRequestException,
                                     survey_models._MORE_INFO_MSG):
            request.answers = [malformed_answer_message_2]
            self.service.create(request)
Пример #2
0
 def test_patch_survey_with_answers_to_be_added(self, mock_xsrf_token):
     """Test patch survey api method with new answers."""
     # Create test objects.
     _, question_keys = self.create_test_models(1)
     question_key = question_keys[0]
     # New Answer to be added.
     new_answer_message1 = survey_messages.Answer(
         text='NEW TEXT, DO NOT USE',
         more_info_enabled=True,
         placeholder_text='PLACEHOLDER TEXT')
     new_answer_message2 = survey_messages.Answer(
         text='NEW TEXT, DO NOT USE', more_info_enabled=False)
     request = survey_messages.PatchQuestionRequest(
         question_urlsafe_key=question_key.urlsafe(),
         answers=[new_answer_message1, new_answer_message2])
     self.service.patch(request)
     assert mock_xsrf_token.call_count == 1
     # Ensure the new answer was created.
     self.assertEqual(2, len(question_key.get().answers))
Пример #3
0
 def test_survey_submission(self, mock_submit):
     """Test the survey submission api method."""
     more_info_text = 'More info!'
     answers, question_keys = self.create_test_models(1)
     answer_message = survey_messages.Answer(
         text=answers[0].text,
         more_info_enabled=answers[0].more_info_enabled,
         placeholder_text=answers[0].placeholder_text)
     request = survey_messages.QuestionSubmission(
         question_urlsafe_key=question_keys[0].urlsafe(),
         selected_answer=answer_message,
         more_info_text=more_info_text)
     response = self.service.submit(request)
     self.assertEqual(message_types.VoidMessage(), response)
     mock_submit.assert_called_once_with(
         acting_user=loanertest.SUPER_ADMIN_EMAIL,
         selected_answer=answer_message,
         more_info_text=more_info_text)
Пример #4
0
def _generate_message_parameters(want_permutations=False):
    """Generate message parameters for test cases.

  Args:
    want_permutations: bool, whether or not to run the messages through various
        permutations.

  Yields:
    A list containing the list of messages.
  """
    answer_message = survey_messages.Answer(text='Left my laptop at home.',
                                            more_info_enabled=False,
                                            placeholder_text=None)
    survey_messages_1 = survey_messages.Question(
        question_type=survey_models.QuestionType.ASSIGNMENT,
        question_text=_QUESTION.format(num=1),
        answers=[answer_message],
        rand_weight=1,
        required=True)
    survey_messages_2 = survey_messages.Question(
        question_type=survey_models.QuestionType.ASSIGNMENT,
        question_text=_QUESTION.format(num=2),
        answers=[answer_message],
        rand_weight=1,
        enabled=False,
        required=False)
    survey_messages_3 = survey_messages.Question(
        question_type=survey_models.QuestionType.RETURN,
        question_text=_QUESTION.format(num=3),
        answers=[answer_message],
        rand_weight=1,
        enabled=True)
    messages = [survey_messages_1, survey_messages_2, survey_messages_3]
    if want_permutations:
        for p in itertools.permutations(messages):
            yield [p]
    else:
        yield [messages]
Пример #5
0
def _build_survey_messages(question_model):
  """Builds a Question message from a Question NDB model instance.

  Args:
    question_model: survey_models.Question, An instance of the
        Question NDB model from datastore.

  Returns:
    A populated survey question message.
  """
  message = survey_messages.Question(
      question_type=question_model.question_type,
      question_text=question_model.question_text,
      enabled=question_model.enabled,
      rand_weight=question_model.rand_weight,
      question_urlsafe_key=question_model.key.urlsafe(),
      required=config_model.Config.get('require_surveys'),
  )
  for answer in question_model.answers:
    message.answers.append(survey_messages.Answer(
        text=answer.text,
        more_info_enabled=answer.more_info_enabled,
        placeholder_text=answer.placeholder_text))
  return message