Ejemplo n.º 1
0
    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()
Ejemplo n.º 2
0
    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()
Ejemplo n.º 3
0
 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()