def test_can_freeze_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 Answer.objects.create(session=session, question=q_by_analysis_key['q1'], payload='q1') Answer.objects.create(session=session, question=q_by_analysis_key['q2'], payload='q2') Answer.objects.create(session=session, question=q_by_analysis_key['q4'], payload='q4') Answer.objects.create(session=session, question=q_by_analysis_key['q5'], payload='q5') service.refresh_from_db() self.assertTrue(service.can_freeze)
def test_create_answer_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_answer('q1', q_by_analysis_key['q1']) service.create_answer('q2', q_by_analysis_key['q2']) service.create_answer('q4', q_by_analysis_key['q4']) service.create_answer('q5', 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) # Test our is_accessible here: service.is_publicly_accessible()
def test_get_extra_properties_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 Answer.objects.create(session=session, question=q_by_analysis_key['q1'], payload='q1') Answer.objects.create(session=session, question=q_by_analysis_key['q2'], payload='q2') Answer.objects.create(session=session, question=q_by_analysis_key['q4'], payload='q4') Answer.objects.create(session=session, question=q_by_analysis_key['q5'], payload='q5') service.refresh_from_db() extra_properties = service.get_extra_properties('URL') self.assertEqual(len(extra_properties), 4) self.assertEqual(extra_properties[0]['category_url'], 'URL') extra_properties_no_url = service.get_extra_properties() self.assertEqual(len(extra_properties_no_url), 4) self.assertNotIn('category_url', extra_properties_no_url[0])
def test_answers_by_analysis_key_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 Answer.objects.create(session=session, question=q_by_analysis_key['q1'], payload='q1') Answer.objects.create(session=session, question=q_by_analysis_key['q2'], payload='q2') Answer.objects.create(session=session, question=q_by_analysis_key['q4'], payload='q4') Answer.objects.create(session=session, question=q_by_analysis_key['q5'], payload='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)
def test_can_freeze_one_answer(self): q_graph = create_diamond_plus() session = SessionFactory.create(questionnaire__graph=q_graph) service = SessionService(session) # Answer questions Answer.objects.create(session=session, question=q_graph.first_question, payload='q1') service.refresh_from_db() self.assertFalse(service.can_freeze)
def test_answers_by_analysis_key_one_answer(self): q_graph = create_diamond_plus() session = SessionFactory.create(questionnaire__graph=q_graph) service = SessionService(session) # Answer questions Answer.objects.create(session=session, question=q_graph.first_question, payload='q1') service.refresh_from_db() answers_by_analysis_key = service.answers_by_analysis_key self.assertEqual(len(answers_by_analysis_key), 1) self.assertIn('q1', answers_by_analysis_key) self.assertEqual(answers_by_analysis_key['q1'].payload, 'q1')
def test_create_answer_session_expired(self): # expired session must not accept answers t_creation = datetime(2021, 1, 1, 0, 0, 0) t_now = datetime(2021, 6, 1, 0, 0, 0) q_graph = create_diamond_plus() session = SessionFactory.create(questionnaire__graph=q_graph, created_at=t_creation, submit_before=t_creation) service = SessionService(session) service.refresh_from_db() first_question = service.path_questions[0] with freeze_time(t_now): with self.assertRaises(SessionExpired): service.create_answer('TOO LATE', first_question)
def test_get_extra_properties_one_answer(self): q_graph = create_diamond_plus() session = SessionFactory.create(questionnaire__graph=q_graph) service = SessionService(session) # Answer questions Answer.objects.create(session=session, question=q_graph.first_question, payload='q1') service.refresh_from_db() extra_properties = service.get_extra_properties('URL') self.assertEqual(len(extra_properties), 1) self.assertEqual(extra_properties[0]['category_url'], 'URL') self.assertEqual(extra_properties[0]['label'], q_graph.first_question.short_label) extra_properties_no_url = service.get_extra_properties() self.assertEqual(len(extra_properties_no_url), 1) self.assertNotIn('category_url', extra_properties_no_url[0])