예제 #1
0
    def setUpTestData(cls):
        make_manager()
        cls.semester = baker.make(Semester, id=2)
        responsible = baker.make(UserProfile, email='*****@*****.**')
        cls.student1 = baker.make(UserProfile, email='*****@*****.**')
        cls.student2 = baker.make(UserProfile, email='*****@*****.**')
        students = baker.make(UserProfile, _quantity=10)
        students.extend([cls.student1, cls.student2])

        cls.evaluation = baker.make(Evaluation, id=22, state='in_evaluation', course=baker.make(Course, semester=cls.semester), participants=students)
        questionnaire = baker.make(Questionnaire)
        cls.question_grade = baker.make(Question, questionnaire=questionnaire, type=Question.GRADE)
        baker.make(Question, questionnaire=questionnaire, type=Question.LIKERT)
        cls.evaluation.general_contribution.questionnaires.set([questionnaire])
        cls.responsible_contribution = baker.make(Contribution, contributor=responsible, evaluation=cls.evaluation, questionnaires=[questionnaire])
예제 #2
0
 def setUpTestData(cls):
     cls.manager = make_manager()
     cls.semester = baker.make(Semester)
     baker.make(CourseType, name_de="Vorlesung", name_en="Lecture", import_names=["Vorlesung"])
     baker.make(CourseType, name_de="Seminar", name_en="Seminar", import_names=["Seminar"])
     Degree.objects.filter(name_de="Bachelor").update(import_names=["Bachelor", "B. Sc."])
     Degree.objects.filter(name_de="Master").update(import_names=["Master", "M. Sc."])
예제 #3
0
    def setUpTestData(cls):
        cls.test_users = [make_manager()]

        event = baker.make(RewardPointRedemptionEvent,
                           pk=1,
                           redeem_end_date=date.today() + timedelta(days=1))
        baker.make(RewardPointRedemption, value=1, event=event)
예제 #4
0
    def setUpTestData(cls):
        cls.manager = make_manager()
        cls.semester = baker.make(Semester, id=2)

        contributor = baker.make(UserProfile, email='*****@*****.**')
        responsible = baker.make(UserProfile, email='*****@*****.**')

        cls.test_users = [cls.manager, contributor, responsible]

        # Normal evaluation with responsible and contributor.
        cls.evaluation = baker.make(Evaluation, id=21, state='published', course=baker.make(Course, semester=cls.semester))

        baker.make(
            Contribution,
            evaluation=cls.evaluation,
            contributor=responsible,
            role=Contribution.Role.EDITOR,
            textanswer_visibility=Contribution.TextAnswerVisibility.GENERAL_TEXTANSWERS,
        )
        cls.contribution = baker.make(
            Contribution,
            evaluation=cls.evaluation,
            contributor=contributor,
            role=Contribution.Role.EDITOR,
        )
예제 #5
0
    def setUpTestData(cls):
        cls.manager = make_manager()
        cls.semester = baker.make(Semester, id=3)
        contributor = baker.make(UserProfile)

        # Set up an evaluation with one question but no answers
        student1 = baker.make(UserProfile)
        student2 = baker.make(UserProfile)
        cls.evaluation = baker.make(
            Evaluation,
            id=21,
            state='published',
            course=baker.make(Course, semester=cls.semester),
            participants=[student1, student2],
            voters=[student1, student2],
        )
        questionnaire = baker.make(Questionnaire)
        cls.evaluation.general_contribution.questionnaires.set([questionnaire])
        cls.contribution = baker.make(
            Contribution,
            evaluation=cls.evaluation,
            questionnaires=[questionnaire],
            contributor=contributor,
        )
        cls.likert_question = baker.make(Question, type=Question.LIKERT, questionnaire=questionnaire, order=2)
        cls.url = '/results/semester/%s/evaluation/%s' % (cls.semester.id, cls.evaluation.id)
예제 #6
0
    def setUpTestData(cls):
        cls.semester = baker.make(Semester)
        cls.manager = make_manager()
        cls.reviewer = baker.make(UserProfile, email="*****@*****.**", groups=[Group.objects.get(name='Reviewer')])
        cls.student = baker.make(UserProfile, email="*****@*****.**")
        cls.student_external = baker.make(UserProfile, email="*****@*****.**")
        cls.contributor = baker.make(UserProfile, email="*****@*****.**")
        cls.responsible = baker.make(UserProfile, email="*****@*****.**")

        course = baker.make(Course, semester=cls.semester, degrees=[baker.make(Degree)], responsibles=[cls.responsible])
        cls.evaluation = baker.make(
            Evaluation,
            course=course,
            state='published',
            participants=[cls.student, cls.student_external],
            voters=[cls.student, cls.student_external],
        )
        cls.evaluation.general_contribution.questionnaires.set([baker.make(Questionnaire)])

        baker.make(
            Contribution,
            evaluation=cls.evaluation,
            contributor=cls.responsible,
            role=Contribution.Role.EDITOR,
            textanswer_visibility=Contribution.TextAnswerVisibility.GENERAL_TEXTANSWERS,
        )
        baker.make(Contribution, evaluation=cls.evaluation, contributor=cls.contributor)
        cache_results(cls.evaluation)
예제 #7
0
    def test_send_text_answer_review_reminder(self):
        make_manager()
        evaluation = baker.make(
            Evaluation,
            state=Evaluation.State.EVALUATED,
            can_publish_text_results=True,
            wait_for_grade_upload_before_publishing=False,
        )
        baker.make(
            TextAnswer,
            contribution=evaluation.general_contribution,
        )

        with patch(
                "evap.evaluation.models.EmailTemplate.send_to_user") as mock:
            management.call_command("send_reminders")

        self.assertEqual(mock.call_count, 1)
예제 #8
0
    def test_send_reminder(self):
        make_manager()
        evaluation = baker.make(
            Evaluation,
            state=Evaluation.State.EVALUATED,
            wait_for_grade_upload_before_publishing=False,
            can_publish_text_results=True,
        )
        baker.make(
            TextAnswer,
            contribution=evaluation.general_contribution,
            state=TextAnswer.State.NOT_REVIEWED,
        )

        management.call_command("send_reminders")

        self.assertEqual(len(mail.outbox), 1)
        self.assertIn(evaluation.name, mail.outbox[0].body)
예제 #9
0
 def setUpTestData(cls):
     cls.manager = make_manager()
     cls.semester = baker.make(Semester, pk=1)
     cls.student = baker.make(UserProfile,
                              email="*****@*****.**")
     course = baker.make(Course, semester=cls.semester)
     cls.evaluation = baker.make(
         Evaluation,
         state=Evaluation.State.IN_EVALUATION,
         participants=[cls.student],
         voters=[cls.student],
         course=course,
     )
예제 #10
0
    def test_private_evaluation(self):
        semester = baker.make(Semester)
        manager = make_manager()
        student = baker.make(UserProfile, email="*****@*****.**")
        student_external = baker.make(UserProfile, email="*****@*****.**")
        contributor = baker.make(UserProfile, email="*****@*****.**")
        responsible = baker.make(UserProfile, email="*****@*****.**")
        editor = baker.make(UserProfile, email="*****@*****.**")
        voter1 = baker.make(UserProfile, email="*****@*****.**")
        voter2 = baker.make(UserProfile, email="*****@*****.**")
        non_participant = baker.make(UserProfile, email="*****@*****.**")
        degree = baker.make(Degree)
        course = baker.make(Course, semester=semester, degrees=[degree], is_private=True, responsibles=[responsible, editor])
        private_evaluation = baker.make(
            Evaluation,
            course=course,
            state='published',
            participants=[student, student_external, voter1, voter2],
            voters=[voter1, voter2]
        )
        private_evaluation.general_contribution.questionnaires.set([baker.make(Questionnaire)])
        baker.make(
            Contribution,
            evaluation=private_evaluation,
            contributor=editor,
            role=Contribution.Role.EDITOR,
            textanswer_visibility=Contribution.TextAnswerVisibility.GENERAL_TEXTANSWERS,
        )
        baker.make(Contribution, evaluation=private_evaluation, contributor=contributor, role=Contribution.Role.EDITOR)
        cache_results(private_evaluation)

        url = '/results/'
        self.assertNotIn(private_evaluation.full_name, self.app.get(url, user=non_participant))
        self.assertIn(private_evaluation.full_name, self.app.get(url, user=student))
        self.assertIn(private_evaluation.full_name, self.app.get(url, user=responsible))
        self.assertIn(private_evaluation.full_name, self.app.get(url, user=editor))
        self.assertIn(private_evaluation.full_name, self.app.get(url, user=contributor))
        with run_in_staff_mode(self):
            self.assertIn(private_evaluation.full_name, self.app.get(url, user=manager))
        self.app.get(url, user=student_external, status=403)  # external users can't see results semester view

        url = '/results/semester/%s/evaluation/%s' % (semester.id, private_evaluation.id)
        self.app.get(url, user=non_participant, status=403)
        self.app.get(url, user=student, status=200)
        self.app.get(url, user=responsible, status=200)
        self.app.get(url, user=editor, status=200)
        self.app.get(url, user=contributor, status=200)
        with run_in_staff_mode(self):
            self.app.get(url, user=manager, status=200)
        self.app.get(url, user=student_external, status=200)  # this external user participates in the evaluation and can see the results
예제 #11
0
    def test_permission_denied(self, export_method):
        manager = make_manager()
        student = baker.make(UserProfile, email="*****@*****.**")

        self.app.get(self.url, user=student, status=403)
        export_method.assert_not_called()

        with run_in_staff_mode(self):
            self.app.get(self.url, user=self.reviewer, status=200)
            export_method.assert_called_once()

        export_method.reset_mock()
        with run_in_staff_mode(self):
            self.app.get(self.url, user=manager, status=200)
            export_method.assert_called_once()
예제 #12
0
 def setUpTestData(cls):
     cls.manager = make_manager()
     cls.semester = baker.make(Semester)
     baker.make(CourseType,
                name_de="Vorlesung",
                name_en="Lecture",
                import_names=["Vorlesung"])
     baker.make(CourseType,
                name_de="Seminar",
                name_en="Seminar",
                import_names=["Seminar"])
     degree_bachelor = Degree.objects.get(name_de="Bachelor")
     degree_bachelor.import_names = ["Bachelor", "B. Sc."]
     degree_bachelor.save()
     degree_master = Degree.objects.get(name_de="Master")
     degree_master.import_names = ["Master", "M. Sc."]
     degree_master.save()
예제 #13
0
 def setUpTestData(cls):
     cls.manager = make_manager()
예제 #14
0
 def setUpTestData(cls):
     cls.manager = make_manager()
     cls.event = baker.make(RewardPointRedemptionEvent,
                            pk=1,
                            name="old name")
예제 #15
0
 def setUpTestData(cls):
     cls.manager = make_manager()
     cache_results(Evaluation.objects.get(id=1))
예제 #16
0
파일: test_views.py 프로젝트: jb3rndt/EvaP
 def setUpTestData(cls):
     cls.test_users = [make_manager()]
     event = baker.make(RewardPointRedemptionEvent,
                        redeem_end_date=date.today() + timedelta(days=1))
     baker.make(RewardPointRedemption, value=1, event=event)
     cls.url = f"/rewards/reward_point_redemption_event/{event.pk}/export"
예제 #17
0
파일: test_views.py 프로젝트: jb3rndt/EvaP
 def setUpTestData(cls):
     cls.manager = make_manager()
     cls.event = baker.make(RewardPointRedemptionEvent, name="old name")
     cls.url = reverse("rewards:reward_point_redemption_event_edit",
                       args=[cls.event.pk])
예제 #18
0
 def setUpTestData(cls):
     cls.manager = make_manager()
     cls.semester = baker.make(Semester, pk=1)
예제 #19
0
 def test_send_no_reminder_if_not_needed(self):
     make_manager()
     management.call_command("send_reminders")
     self.assertEqual(len(mail.outbox), 0)