예제 #1
0
    def test_create_answers_one_path(self):
        q_graph = create_diamond_plus()
        session = SessionFactory.create(questionnaire__graph=q_graph)
        service = SessionService(session)

        # get references to questions
        service.question_graph_service.refresh_from_db()
        q_by_analysis_key = {
            q.analysis_key: q
            for q in service.question_graph_service._questions
        }

        # Answer questions
        service.create_answers(['q1', 'q2', 'q4', 'q5'], [
            q_by_analysis_key['q1'], q_by_analysis_key['q2'],
            q_by_analysis_key['q4'], q_by_analysis_key['q5']
        ])

        service.refresh_from_db()
        answers_by_analysis_key = service.answers_by_analysis_key

        self.assertEqual(len(answers_by_analysis_key), 4)
        for key in ['q1', 'q2', 'q4', 'q5']:
            self.assertEqual(answers_by_analysis_key[key].payload, key)

        self.assertTrue(service.can_freeze)
        self.assertEqual(len(service.path_validation_errors_by_uuid), 0)
        self.assertEqual(len(service.path_answered_question_uuids), 4)
        self.assertEqual(len(service.path_unanswered_question_uuids), 0)
예제 #2
0
    def test_create_answers_one_answer(self):
        q_graph = create_diamond_plus()
        session = SessionFactory.create(questionnaire__graph=q_graph)
        service = SessionService(session)

        # get references to questions
        service.question_graph_service.refresh_from_db()
        q_by_analysis_key = {
            q.analysis_key: q
            for q in service.question_graph_service._questions
        }

        # Answer questions
        service.create_answers(['q1'], [q_by_analysis_key['q1']])

        self.assertEqual(len(service.answers_by_analysis_key), 1)
        self.assertEqual(service.answers_by_analysis_key['q1'].payload, 'q1')
        self.assertEqual(len(service.path_validation_errors_by_uuid), 0)
        self.assertEqual(len(service.path_answered_question_uuids), 1)
        self.assertEqual(len(service.path_unanswered_question_uuids), 3)
예제 #3
0
    def test_create_answers_one_path_all_bad(self):
        q_graph = create_diamond_plus()
        session = SessionFactory.create(questionnaire__graph=q_graph)
        service = SessionService(session)

        # get references to questions
        service.question_graph_service.refresh_from_db()
        q_by_analysis_key = {
            q.analysis_key: q
            for q in service.question_graph_service._questions
        }

        # Answer questions
        service.create_answers(
            [1, 2, 4, 5],  # will not survive fieldtype check
            [
                q_by_analysis_key['q1'], q_by_analysis_key['q2'],
                q_by_analysis_key['q4'], q_by_analysis_key['q5']
            ])

        service.refresh_from_db()
        answers_by_analysis_key = service.answers_by_analysis_key

        self.assertEqual(len(answers_by_analysis_key), 0)
        path_validation_errors_by_uuid = service.path_validation_errors_by_uuid

        self.assertEqual(len(path_validation_errors_by_uuid), 4)
        self.assertEqual(
            set(path_validation_errors_by_uuid),
            {q_by_analysis_key[key].uuid
             for key in ['q1', 'q2', 'q4', 'q5']})

        self.assertFalse(service.can_freeze)
        self.assertEqual(len(service.path_validation_errors_by_uuid), 4)
        self.assertEqual(len(service.path_answered_question_uuids), 0)
        self.assertEqual(len(service.path_unanswered_question_uuids), 4)