示例#1
0
    def _build_answers(self, answer_store, question_schema):

        if self.summary:
            return [
                {
                    "id": f"{self.id}-concatenated-answer",
                    "value": self._concatenate_answers(
                        answer_store, self.summary["concatenation_type"]
                    ),
                }
            ]

        summary_answers = []
        for answer_schema in self.answer_schemas:
            answer_value = self._get_answer(answer_store, answer_schema["id"])
            answer = self._build_answer(
                answer_store, question_schema, answer_schema, answer_value
            )

            summary_answer = Answer(answer_schema, answer).serialize()
            summary_answers.append(summary_answer)

        if question_schema["type"] == "MutuallyExclusive":
            exclusive_option = summary_answers[-1]["value"]
            if exclusive_option:
                return summary_answers[-1:]
            return summary_answers[:-1]
        return summary_answers
    def test_date_answer_type(self):
        # Given
        answer_schema = {"id": "answer-id", "label": "", "type": "date"}
        user_answer = None

        # When
        answer = Answer(answer_schema, user_answer)

        # Then
        self.assertEqual(answer.type, "date")
    def test_create_answer(self):
        # Given
        answer_schema = {
            "id": "answer-id",
            "label": "Answer Label",
            "type": "date"
        }
        user_answer = "An answer"

        # When
        answer = Answer(answer_schema, user_answer)

        # Then
        self.assertEqual(answer.id, "answer-id")
        self.assertEqual(answer.label, "Answer Label")
        self.assertEqual(answer.value, user_answer)
    def _build_answers(self, *, answer_store, question_schema, block_id,
                       list_name, return_to):

        if self.summary:
            answer_id = f"{self.id}-concatenated-answer"
            link = url_for(
                "questionnaire.block",
                list_name=list_name,
                block_id=block_id,
                list_item_id=self.list_item_id,
                return_to=return_to,
                return_to_answer_id=answer_id,
                _anchor=answer_id,
            )

            return [{
                "id":
                answer_id,
                "value":
                self._concatenate_answers(answer_store,
                                          self.summary["concatenation_type"]),
                "link":
                link,
            }]

        summary_answers = []
        for answer_schema in self.answer_schemas:
            answer_value = self.get_answer(answer_store, answer_schema["id"])
            answer = self._build_answer(answer_store, question_schema,
                                        answer_schema, answer_value)

            summary_answer = Answer(
                answer_schema=answer_schema,
                answer_value=answer,
                block_id=block_id,
                list_name=list_name,
                list_item_id=self.list_item_id,
                return_to=return_to,
            ).serialize()
            summary_answers.append(summary_answer)

        if question_schema["type"] == "MutuallyExclusive":
            exclusive_option = summary_answers[-1]["value"]
            if exclusive_option:
                return summary_answers[-1:]
            return summary_answers[:-1]
        return summary_answers
    def test_date_answer_type(self):
        # Given
        answer_schema = {"id": "answer-id", "label": "", "type": "date"}
        user_answer = None

        # When
        answer = Answer(
            answer_schema=answer_schema,
            answer_value=user_answer,
            block_id="house-type",
            list_name="answer-list",
            list_item_id="answer-item-id",
            return_to="section-summary",
        )

        # Then
        self.assertEqual(answer.type, "date")
    def _build_answers(self, answer_store, question_schema):
        summary_answers = []

        for answer_schema in self.answer_schemas:
            answer_value = self._get_answer(answer_store, answer_schema["id"])
            answer = self._build_answer(answer_store, question_schema,
                                        answer_schema, answer_value)

            summary_answer = Answer(answer_schema, answer).serialize()
            summary_answers.append(summary_answer)

        if question_schema["type"] == "MutuallyExclusive":
            exclusive_option = summary_answers[-1]["value"]
            if exclusive_option:
                return summary_answers[-1:]
            return summary_answers[:-1]

        return summary_answers
    def test_create_answer(self):
        answer_schema = {"id": "answer-id", "label": "Answer Label", "type": "date"}
        user_answer = "An answer"

        answer = Answer(
            answer_schema=answer_schema,
            answer_value=user_answer,
            block_id="house-type",
            list_name="answer-list",
            list_item_id="answer-item-id",
            return_to="section-summary",
        )

        self.assertEqual(answer.id, "answer-id")
        self.assertEqual(answer.label, "Answer Label")
        self.assertEqual(answer.value, "An answer")
        self.assertEqual(answer.type, "date")

        self.assertEqual(
            answer.link,
            "http://test.localdomain/questionnaire/answer-list/answer-item-id/house-type/?return_to=section-summary&return_to_answer_id=answer-id#answer-id",
        )