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)
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)
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)