def setUp(self): super(IsStudentFormDisabledHelperTest, self).setUp() self.course = CourseFactory.create() self.user = UserFactory.create() self.enrollment = CourseEnrollmentFactory.create(user=self.user, course_id=self.course.id) # Instructor haven't edited the information yet self.uid = UniversityID(can_edit=True, user=self.user, course_key=self.course.id) self.uid.save()
class IsStudentFormDisabledHelperTest(ModuleStoreTestCase): TODAY = datetime.datetime.now(pytz.UTC) LAST_WEEK = TODAY - datetime.timedelta(days=7) NEXT_WEEK = TODAY + datetime.timedelta(days=7) def setUp(self): super(IsStudentFormDisabledHelperTest, self).setUp() self.course = CourseFactory.create() self.user = UserFactory.create() self.enrollment = CourseEnrollmentFactory.create(user=self.user, course_id=self.course.id) # Instructor haven't edited the information yet self.uid = UniversityID(can_edit=True, user=self.user, course_key=self.course.id) self.uid.save() def assertReturnValue(self, expected, msg=None): actual = helpers.is_student_form_disabled(self.user, self.course.id) self.assertEquals(actual, expected, msg) def test_happy_scenario(self): self.assertReturnValue(False) def test_with_can_edit_equals_false(self): """ The form is should be disabled the instructor edited the student data. """ self.uid.can_edit = False self.uid.save() self.assertReturnValue(True, 'Should be disabled when the instructor updates the information') def test_with_future_registration_end_date(self): """ The form is should be disabled when registration end date (is not null) and (already passed). """ uid_settings = UniversityIDSettings(registration_end_date=self.NEXT_WEEK, course_key=self.course.id) uid_settings.save() self.assertReturnValue(False, 'Future registration end date should NOT disable the form') def test_with_past_registration_end_date(self): """ The form is should be disabled when registration end date (is not null) and (already passed). """ uid_settings = UniversityIDSettings(registration_end_date=self.LAST_WEEK, course_key=self.course.id) uid_settings.save() self.assertReturnValue(True, 'Past registration end date should disable the form') def test_with_null_registration_end_date(self): """ The form is should be disabled when registration end date (is not null) and (already passed). """ uid_settings = UniversityIDSettings(registration_end_date=None, course_key=self.course.id) uid_settings.save() self.assertReturnValue(False, 'NULL registration end date should NOT disable the form') def test_not_enrolled_user(self): enrollment = CourseEnrollment.objects.get(user=self.user, course_id=self.course.id) enrollment.delete() self.assertReturnValue(True, 'Should be disabled for un-enrolled users')
def test_initial_data_are_valid(self): form = self.get_form() default_cohort = CourseUserGroup.objects.get(~Q(name=self.cohort.name), course_id=self.course.id) self.assertEquals(default_cohort.name, DEFAULT_COHORT_NAME) custom_cohort = CourseUserGroup.objects.get(course_id=self.course.id, name=self.cohort.name) self.assertEquals(custom_cohort.group_type, CourseUserGroup.COHORT) # Sanity check cohorts = UniversityID.get_cohorts_for_course(self.course.id) self.assertListEqual(list(cohorts), [custom_cohort]) self.assertEquals(form.errors, {}) self.assertTrue(form.is_valid())
def test_get_marked_university_ids(self): uni_ids = [ '20-{}'.format(i) for i in ['01a', '10x', '03', '04M ', '04m', '04M\t', '10x ', '02t'] ] course_key = CourseFactory.create().id for uni_id in uni_ids: model = UniversityIDFactory.create( course_key=course_key, university_id=uni_id, ) model.save() marked = UniversityID.get_marked_university_ids(course_key=course_key) self.assertEquals(len(marked), len(uni_ids)) # Should sort the UniversityIDs # Should not mark unique IDs self.assertListEqual( list1=[ [u'20-01a', False], [u'20-02t', False], [u'20-03', False], ], list2=[ [obj.university_id, obj.is_conflicted] for obj in marked[:3] ], ) # Should mark conflicted self.assertListEqual( list1=[ [u'20-04M\t', True], [u'20-04M ', True], [u'20-04m', True], [u'20-10x', True], [u'20-10x ', True], ], list2=[ [obj.university_id, obj.is_conflicted] for obj in marked[3:] ], )
def get_cohort_choices(self): yield ('', '---') for cohort in UniversityID.get_cohorts_for_course(self.course_key): yield (cohort.id, cohort.name)
def get_queryset(self): return UniversityID.get_marked_university_ids( course_key=self.get_course_key())