def test_course_change_updates_cache(self): semester = baker.make(Semester) course1 = baker.make(Course, semester=semester) course2 = baker.make(Course, semester=semester) evaluation = baker.make(Evaluation, course=course1) evaluation.general_contribution.questionnaires.set([baker.make(Questionnaire)]) form_data = get_form_data_from_instance(EvaluationForm, evaluation) form = EvaluationForm(form_data, instance=evaluation, semester=semester) self.assertTrue(form.is_valid()) with patch('evap.results.views._delete_course_template_cache_impl') as delete_call, patch('evap.results.views.warm_up_template_cache') as warmup_call: # save without changes form.save() self.assertEqual(Evaluation.objects.get(pk=evaluation.pk).course, course1) self.assertEqual(delete_call.call_count, 0) self.assertEqual(warmup_call.call_count, 0) # change course and save form_data = get_form_data_from_instance(EvaluationForm, evaluation) form_data["course"] = course2.pk form = EvaluationForm(form_data, instance=evaluation, semester=semester) self.assertTrue(form.is_valid()) form.save() self.assertEqual(Evaluation.objects.get(pk=evaluation.pk).course, course2) self.assertEqual(delete_call.call_count, 2) self.assertEqual(warmup_call.call_count, 2)
def test_locked_questionnaire(self): """ Asserts that locked (general) questionnaires can be changed by staff. """ questionnaire = baker.make(Questionnaire, type=Questionnaire.Type.TOP, is_locked=False, visibility=Questionnaire.Visibility.EDITORS) locked_questionnaire = baker.make(Questionnaire, type=Questionnaire.Type.TOP, is_locked=True, visibility=Questionnaire.Visibility.EDITORS) semester = baker.make(Semester) evaluation = baker.make(Evaluation, course=baker.make(Course, semester=semester)) evaluation.general_contribution.questionnaires.add(questionnaire) form_data = get_form_data_from_instance(EvaluationForm, evaluation, semester=semester) form_data["general_questionnaires"] = [questionnaire.pk, locked_questionnaire.pk] # add locked questionnaire form = EvaluationForm(form_data, instance=evaluation, semester=semester) # Assert form is valid and locked questionnaire is added form.save() self.assertEqual({questionnaire, locked_questionnaire}, set(evaluation.general_contribution.questionnaires.all())) form_data = get_form_data_from_instance(EvaluationForm, evaluation, semester=semester) form_data["general_questionnaires"] = [questionnaire.pk] # remove locked questionnaire form = EvaluationForm(form_data, instance=evaluation, semester=semester) # Assert form is valid and locked questionnaire is removed form.save() self.assertEqual({questionnaire}, set(evaluation.general_contribution.questionnaires.all()))
def test_course_change_updates_cache(self): semester = mommy.make(Semester) course1 = mommy.make(Course, semester=semester) course2 = mommy.make(Course, semester=semester) evaluation = mommy.make(Evaluation, course=course1) evaluation.general_contribution.questionnaires.set([mommy.make(Questionnaire)]) form_data = get_form_data_from_instance(EvaluationForm, evaluation) form = EvaluationForm(form_data, instance=evaluation, semester=semester) self.assertTrue(form.is_valid()) with patch('evap.results.views._delete_course_template_cache_impl') as delete_call, patch('evap.results.views.warm_up_template_cache') as warmup_call: # save without changes form.save() self.assertEqual(Evaluation.objects.get(pk=evaluation.pk).course, course1) self.assertEqual(delete_call.call_count, 0) self.assertEqual(warmup_call.call_count, 0) # change course and save form_data = get_form_data_from_instance(EvaluationForm, evaluation) form_data["course"] = course2.pk form = EvaluationForm(form_data, instance=evaluation, semester=semester) self.assertTrue(form.is_valid()) form.save() self.assertEqual(Evaluation.objects.get(pk=evaluation.pk).course, course2) self.assertEqual(delete_call.call_count, 2) self.assertEqual(warmup_call.call_count, 2)