def test_is_publicly_accessible_expired_session(self): q_graph = create_diamond_plus() # Sessions that have expired because the submit_before deadline was # passed are no longer publicly available: t_creation = datetime(2021, 1, 1, 0, 0, 0) t_now = datetime(2021, 6, 1, 0, 0, 0) session_expired_i = SessionFactory.create(questionnaire__graph=q_graph, created_at=t_creation, started_at=None, submit_before=t_creation + timedelta(days=7), duration=None, frozen=False) service_expired_i = SessionService(session_expired_i) with freeze_time(t_now): with self.assertRaises(SessionExpired): service_expired_i.is_publicly_accessible() # Sessions that have expired because too long was taken to fill out # the questionnaire are no longer publicly available: session_expired_ii = SessionFactory.create( questionnaire__graph=q_graph, created_at=t_creation, started_at=t_creation, submit_before=None, duration=timedelta(seconds=60 * 60 * 2), frozen=False) service_expired_ii = SessionService(session_expired_ii) with freeze_time(t_now): with self.assertRaises(SessionExpired): service_expired_ii.is_publicly_accessible()
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_is_publicly_accessible_frozen_session(self): # Sessions that are frozen are no longer publicly accessible: q_graph = create_diamond_plus() session_frozen = SessionFactory.create(questionnaire__graph=q_graph, frozen=True) service_frozen = SessionService(session_frozen) with self.assertRaises(SessionFrozen): service_frozen.is_publicly_accessible()