def test_assertions_for_user(self): """ Verify that grabbing all assertions for a user behaves as expected. This function uses object IDs because for some reason Jenkins trips up on its assertCountEqual check here despite the items being equal. """ user = UserFactory() assertions = [BadgeAssertionFactory.create(user=user).id for _i in range(3)] course = CourseFactory.create() course_key = course.location.course_key course_badges = [RandomBadgeClassFactory(course_id=course_key) for _i in range(3)] course_assertions = [ BadgeAssertionFactory.create(user=user, badge_class=badge_class).id for badge_class in course_badges ] assertions.extend(course_assertions) assertions.sort() assertions_for_user = [badge.id for badge in BadgeAssertion.assertions_for_user(user)] assertions_for_user.sort() self.assertEqual(assertions_for_user, assertions) course_scoped_assertions = [ badge.id for badge in BadgeAssertion.assertions_for_user(user, course_id=course_key) ] course_scoped_assertions.sort() self.assertEqual(course_scoped_assertions, course_assertions)
def test_assertions_for_user(self): """ Verify that grabbing all assertions for a user behaves as expected. This function uses object IDs because for some reason Jenkins trips up on its assertItemsEqual check here despite the items being equal. """ user = UserFactory() assertions = [BadgeAssertionFactory.create(user=user).id for _i in range(3)] course = CourseFactory.create() course_key = course.location.course_key course_badges = [RandomBadgeClassFactory(course_id=course_key) for _i in range(3)] course_assertions = [ BadgeAssertionFactory.create(user=user, badge_class=badge_class).id for badge_class in course_badges ] assertions.extend(course_assertions) assertions.sort() assertions_for_user = [badge.id for badge in BadgeAssertion.assertions_for_user(user)] assertions_for_user.sort() self.assertEqual(assertions_for_user, assertions) course_scoped_assertions = [ badge.id for badge in BadgeAssertion.assertions_for_user(user, course_id=course_key) ] course_scoped_assertions.sort() self.assertEqual(course_scoped_assertions, course_assertions)
def test_get_assertions(self): """ Verify we can get all of a user's badge assertions. """ for dummy in range(3): BadgeAssertionFactory(user=self.user) # Add in a course scoped badge-- these should not be excluded from the full listing. BadgeAssertionFactory(user=self.user, badge_class=BadgeClassFactory(course_id=self.course.location.course_key)) # Should not be included. for dummy in range(3): self.create_badge_class(False) response = self.get_json(self.url()) self.assertEqual(len(response['results']), 4)
def test_get_assertions(self, check_course, wildcard): """ Verify we can get assertions via the badge class and username. """ badge_class = self.create_badge_class(check_course) for dummy in range(3): BadgeAssertionFactory.create(user=self.user, badge_class=badge_class) if badge_class.course_id: # Also create a version of this badge under a different course. alt_class = BadgeClassFactory.create( slug=badge_class.slug, issuing_component=badge_class.issuing_component, course_id=CourseFactory.create().location.course_key, ) BadgeAssertionFactory.create(user=self.user, badge_class=alt_class) # Same badge class, but different user. Should not show up in the list. for dummy in range(5): BadgeAssertionFactory.create(badge_class=badge_class) # Different badge class AND different user. Certainly shouldn't show up in the list! for dummy in range(6): BadgeAssertionFactory.create() response = self.get_json(self.url(), data=self.get_qs_args(check_course, wildcard, badge_class)) if wildcard: expected_length = 4 else: expected_length = 3 # pylint: disable=no-member self.assertEqual(len(response["results"]), expected_length) unused_class = self.create_badge_class(check_course, slug="unused_slug", issuing_component="unused_component") response = self.get_json(self.url(), data=self.get_qs_args(check_course, wildcard, unused_class)) # pylint: disable=no-member self.assertEqual(len(response["results"]), 0)
def test_assertion_structure(self): badge_class = self.create_badge_class(False) assertion = BadgeAssertionFactory.create(user=self.user, badge_class=badge_class) response = self.get_json(self.url()) # pylint: disable=no-member self.check_assertion_structure(assertion, response['results'][0])
def test_clear_badge(self, issue_badges, xqueue): """ Given that I have a user with a badge If I run regeneration for a user Then certificate generation will be requested And the badge will be deleted if badge issuing is enabled """ key = self.course.location.course_key self._create_cert(key, self.user, CertificateStatuses.downloadable) badge_class = get_completion_badge(key, self.user) BadgeAssertionFactory(badge_class=badge_class, user=self.user) self.assertTrue( BadgeAssertion.objects.filter(user=self.user, badge_class=badge_class)) self.course.issue_badges = issue_badges self.store.update_item(self.course, None) args = u'-u {} -c {}'.format(self.user.email, text_type(key)) call_command(self.command, *args.split(' ')) xqueue.return_value.regen_cert.assert_called_with(self.user, key, course=self.course, forced_grade=None, template_file=None, generate_pdf=True) self.assertEquals( bool( BadgeAssertion.objects.filter(user=self.user, badge_class=badge_class)), not issue_badges)
def check_badge_class_assertion(self, check_course, wildcard, badge_class): """ Given a badge class, create an assertion for the current user and fetch it, checking the structure. """ assertion = BadgeAssertionFactory.create(badge_class=badge_class, user=self.user) response = self.get_json(self.url(), data=self.get_qs_args(check_course, wildcard, badge_class)) # pylint: disable=no-member self.check_assertion_structure(assertion, response["results"][0])
def test_assertion_structure(self): """ Verify the badge assertion structure is as expected when a course is involved. """ course_key = self.course.location.course_key badge_class = BadgeClassFactory.create(course_id=course_key) assertion = BadgeAssertionFactory.create(badge_class=badge_class, user=self.user) response = self.get_json(self.url()) self.check_assertion_structure(assertion, response['results'][0])
def test_get_for_user(self): """ Make sure we can get an assertion for a user if there is one. """ user = UserFactory.create() badge_class = BadgeClassFactory.create() self.assertFalse(badge_class.get_for_user(user)) assertion = BadgeAssertionFactory.create(badge_class=badge_class, user=user) self.assertEqual(list(badge_class.get_for_user(user)), [assertion])
def check_badge_class_assertion(self, check_course, wildcard, badge_class): """ Given a badge class, create an assertion for the current user and fetch it, checking the structure. """ assertion = BadgeAssertionFactory.create(badge_class=badge_class, user=self.user) response = self.get_json( self.url(), data=self.get_qs_args(check_course, wildcard, badge_class), ) self.check_assertion_structure(assertion, response['results'][0])
def test_get_assertions(self, check_course): """ Verify we can get assertions via the badge class and username. """ badge_class = self.create_badge_class(check_course) for dummy in range(3): BadgeAssertionFactory.create(user=self.user, badge_class=badge_class) # Same badge class, but different user. Should not show up in the list. for dummy in range(5): BadgeAssertionFactory.create(badge_class=badge_class) # Different badge class AND different user. Certainly shouldn't show up in the list! for dummy in range(6): BadgeAssertionFactory.create() response = self.get_json( self.url(), data=self.get_qs_args(check_course, badge_class), ) expected_length = 3 # pylint: disable=no-member self.assertEqual(len(response['results']), expected_length) unused_class = self.create_badge_class( check_course, slug='unused_slug', issuing_component='unused_component') response = self.get_json( self.url(), data=self.get_qs_args(check_course, unused_class), ) # pylint: disable=no-member self.assertEqual(len(response['results']), 0)
def test_get_assertions(self, check_course, wildcard): """ Verify we can get assertions via the badge class and username. """ badge_class = self.create_badge_class(check_course) for dummy in range(3): BadgeAssertionFactory.create(user=self.user, badge_class=badge_class) if badge_class.course_id: # Also create a version of this badge under a different course. alt_class = BadgeClassFactory.create( slug=badge_class.slug, issuing_component=badge_class.issuing_component, course_id=CourseFactory.create().location.course_key) BadgeAssertionFactory.create(user=self.user, badge_class=alt_class) # Same badge class, but different user. Should not show up in the list. for dummy in range(5): BadgeAssertionFactory.create(badge_class=badge_class) # Different badge class AND different user. Certainly shouldn't show up in the list! for dummy in range(6): BadgeAssertionFactory.create() response = self.get_json( self.url(), data=self.get_qs_args(check_course, wildcard, badge_class), ) if wildcard: expected_length = 4 else: expected_length = 3 # pylint: disable=no-member self.assertEqual(len(response['results']), expected_length) unused_class = self.create_badge_class( check_course, slug='unused_slug', issuing_component='unused_component') response = self.get_json( self.url(), data=self.get_qs_args(check_course, wildcard, unused_class), ) # pylint: disable=no-member self.assertEqual(len(response['results']), 0)
def test_get_assertions(self): """ Verify we can get assertions via the course_id and username. """ course_key = self.course.location.course_key badge_class = BadgeClassFactory.create(course_id=course_key) for dummy in range(3): BadgeAssertionFactory.create(user=self.user, badge_class=badge_class) # Should not be included, as they don't share the target badge class. for dummy in range(3): BadgeAssertionFactory.create(user=self.user) # Also should not be included, as they don't share the same user. for dummy in range(6): BadgeAssertionFactory.create(badge_class=badge_class) response = self.get_json(self.url(), data={'course_id': course_key}) self.assertEqual(len(response['results']), 3) unused_course = CourseFactory.create() response = self.get_json(self.url(), data={'course_id': unused_course.location.course_key}) self.assertEqual(len(response['results']), 0)
def test_assertion_structure(self): badge_class = self.create_badge_class(False) assertion = BadgeAssertionFactory.create(user=self.user, badge_class=badge_class) response = self.get_json(self.url()) # pylint: disable=no-member self.check_assertion_structure(assertion, response["results"][0])
def test_assertion_structure(self): badge_class = self.create_badge_class(False) assertion = BadgeAssertionFactory.create(user=self.user, badge_class=badge_class) response = self.get_json(self.url()) self.check_assertion_structure(assertion, response['results'][0])