def test_resolve_course_enrollments(self): """ Test that the CourseEnrollmentsScopeResolver actually returns all enrollments """ test_user_1 = UserFactory.create(password='******') CourseEnrollmentFactory(user=test_user_1, course_id=self.course.id) test_user_2 = UserFactory.create(password='******') CourseEnrollmentFactory(user=test_user_2, course_id=self.course.id) test_user_3 = UserFactory.create(password='******') enrollment = CourseEnrollmentFactory(user=test_user_3, course_id=self.course.id) # unenroll #3 enrollment.is_active = False enrollment.save() resolver = CourseEnrollmentsScopeResolver() user_ids = resolver.resolve('course_enrollments', {'course_id': self.course.id}, None) # should have first two, but the third should not be present self.assertTrue(test_user_1.id in user_ids) self.assertTrue(test_user_2.id in user_ids) self.assertFalse(test_user_3.id in user_ids)
def test_resolve_course_enrollments(self): """ Test that the CourseEnrollmentsScopeResolver actually returns all enrollments """ test_user_1 = UserFactory.create(password='******') CourseEnrollmentFactory(user=test_user_1, course_id=self.course.id) test_user_2 = UserFactory.create(password='******') CourseEnrollmentFactory(user=test_user_2, course_id=self.course.id) test_user_3 = UserFactory.create(password='******') enrollment = CourseEnrollmentFactory(user=test_user_3, course_id=self.course.id) # unenroll #3 enrollment.is_active = False enrollment.save() resolver = CourseEnrollmentsScopeResolver() user_ids = resolver.resolve('course_enrollments', {'course_id': self.course.id}, None) # should have first two, but the third should not be present self.assertTrue(test_user_1.id in user_ids) self.assertTrue(test_user_2.id in user_ids) self.assertFalse(test_user_3.id in user_ids)
def test_bad_params(self): """ Makes sure the resolver returns None if all parameters aren't passed """ resolver = CourseEnrollmentsScopeResolver() self.assertIsNone(resolver.resolve('bad', {'course_id': 'foo'}, None)) with self.assertRaises(KeyError): self.assertIsNone(resolver.resolve('course_enrollments', {'bad': 'foo'}, None))
def test_bad_params(self): """ Makes sure the resolver returns None if all parameters aren't passed """ resolver = CourseEnrollmentsScopeResolver() self.assertIsNone(resolver.resolve('bad', {'course_id': 'foo'}, None)) with self.assertRaises(KeyError): self.assertIsNone( resolver.resolve('course_enrollments', {'bad': 'foo'}, None))
def startup_notification_subsystem(): """ Initialize the Notification subsystem """ try: startup.initialize() # register the scope resolvers that the runtime will be providing # to edx-notifications register_user_scope_resolver('course_enrollments', CourseEnrollmentsScopeResolver()) register_user_scope_resolver('course_group', CourseGroupScopeResolver()) register_user_scope_resolver('group_project_participants', GroupProjectParticipantsScopeResolver()) register_user_scope_resolver('group_project_workgroup', GroupProjectParticipantsScopeResolver()) register_user_scope_resolver('user_email_resolver', StudentEmailScopeResolver()) # register namespace resolver register_namespace_resolver(CourseNamespaceResolver()) except Exception, ex: # Note this will fail when we try to run migrations as manage.py will call startup.py # and startup.initialze() will try to manipulate some database tables. # We need to research how to identify when we are being started up as part of # a migration script log.error( 'There was a problem initializing notifications subsystem. ' 'This could be because the database tables have not yet been created and ' './manage.py lms syncdb needs to run setup.py. Error was "{err_msg}". Continuing...' .format(err_msg=str(ex)))