def test_in_evaluation_to_reviewed(self): # Course is "fully reviewed" as no open text_answers are present by default, course = mommy.make(Course, state='in_evaluation', vote_end_date=date.today() - timedelta(days=1)) Course.update_courses() course = Course.objects.get(pk=course.pk) self.assertEqual(course.state, 'reviewed')
def test_in_evaluation_to_evaluated(self): course = mommy.make(Course, state='in_evaluation', vote_end_date=date.today() - timedelta(days=1)) with patch('evap.evaluation.models.Course.is_fully_reviewed') as mock: mock.__get__ = Mock(return_value=False) Course.update_courses() course = Course.objects.get(pk=course.pk) self.assertEqual(course.state, 'evaluated')
def test_approved_to_in_evaluation(self): course = mommy.make(Course, state='approved', vote_start_date=date.today()) with patch('evap.evaluation.models.EmailTemplate.send_evaluation_started_notifications') as mock: Course.update_courses() mock.assert_called_once_with([course]) course = Course.objects.get(pk=course.pk) self.assertEqual(course.state, 'in_evaluation')
def test_evaluation_ends_soon(self): course = mommy.make(Course, state='in_evaluation', vote_start_datetime=datetime.now() - timedelta(days=2), vote_end_date=date.today() - timedelta(hours=24), is_graded=False) Course.update_courses() self.assertTrue(course.evaluation_ends_soon())
def test_approved_to_in_evaluation(self): course = mommy.make(Course, state='approved', vote_start_date=date.today()) with patch('evap.evaluation.models.EmailTemplate.send_evaluation_started_notifications') as mock: Course.update_courses() mock.assert_called_once_with([course], None) course = Course.objects.get(pk=course.pk) self.assertEqual(course.state, 'in_evaluation')
def test_approved_to_in_evaluation_sends_emails(self): """ Regression test for #945 """ participant = mommy.make(UserProfile, email='*****@*****.**') course = mommy.make(Course, state='approved', vote_start_datetime=datetime.now(), participants=[participant]) Course.update_courses() course = Course.objects.get(pk=course.pk) self.assertEqual(len(mail.outbox), 1) self.assertEqual(course.state, 'in_evaluation')
def test_in_evaluation_to_published(self): # Course is "fully reviewed" and not graded, thus gets published immediately. course = mommy.make(Course, state='in_evaluation', vote_end_date=date.today() - timedelta(days=1), is_graded=False) with patch('evap.evaluation.tools.send_publish_notifications') as mock: Course.update_courses() mock.assert_called_once_with([course]) course = Course.objects.get(pk=course.pk) self.assertEqual(course.state, 'published')
def test_evaluation_ended(self): # Course is out of evaluation period. mommy.make(Course, state='in_evaluation', vote_start_datetime=datetime.now() - timedelta(days=2), vote_end_date=date.today() - timedelta(days=1), is_graded=False) # This course is not. mommy.make(Course, state='in_evaluation', vote_start_datetime=datetime.now() - timedelta(days=2), vote_end_date=date.today(), is_graded=False) with patch('evap.evaluation.models.Course.evaluation_end') as mock: Course.update_courses() self.assertEqual(mock.call_count, 1)
def test_approved_to_in_evaluation(self): course = mommy.make(Course, state='approved', vote_start_datetime=datetime.now()) with patch('evap.evaluation.models.EmailTemplate.send_to_users_in_courses') as mock: Course.update_courses() template = EmailTemplate.objects.get(name=EmailTemplate.EVALUATION_STARTED) mock.assert_called_once_with(template, [course], [EmailTemplate.ALL_PARTICIPANTS], use_cc=False, request=None) course = Course.objects.get(pk=course.pk) self.assertEqual(course.state, 'in_evaluation')
def update_courses(self): """ Updates courses state, when evaluation time begins/ends.""" Course.update_courses()
def handle(self, *args, **options): Course.update_courses()