def test_get_course_vouchers_for_learner_with_multiple_codes(self): """ Verify that method "get_course_vouchers_for_learner" returns all valid coupon codes for the provided enterprise course. """ catalog_id = 1 coupon_quantity = 2 coupon = self._create_course_catalog_coupon(catalog_id, coupon_quantity) expected_vouchers = coupon.attr.coupon_vouchers.vouchers.all() self.mock_access_token_response() self.mock_enterprise_learner_api(entitlement_id=coupon.id) self.mock_enterprise_learner_entitlements_api(entitlement_id=coupon.id) self.mock_catalog_contains_endpoint( discovery_api_url=self.site_configuration.discovery_api_url, catalog_id=catalog_id, course_run_ids=[self.course.id] ) course_vouchers = get_course_vouchers_for_learner(self.request.site, self.request.user, self.course.id) # Verify that there were total three calls. Two for getting # enterprise learner data and enterprise learner entitlements # from enterprise service and one for checking course run against # the enterprise catalog from the discovery service. self._assert_num_requests(4) self.assertEqual(coupon_quantity, len(course_vouchers)) self.assertListEqual(list(expected_vouchers), list(course_vouchers))
def test_get_course_vouchers_for_learner_with_multiple_codes(self): """ Verify that method "get_course_vouchers_for_learner" returns all valid coupon codes for the provided enterprise course. """ catalog_id = 1 coupon_quantity = 2 coupon = self._create_course_catalog_coupon(catalog_id, coupon_quantity) expected_vouchers = coupon.attr.coupon_vouchers.vouchers.all() catalog_query = '*:*' self.mock_enterprise_learner_api(entitlement_id=coupon.id) self.mock_enterprise_learner_entitlements_api(entitlement_id=coupon.id) self.mock_course_discovery_api_for_catalog_by_resource_id(catalog_id=catalog_id, catalog_query=catalog_query) self.mock_dynamic_catalog_contains_api(query=catalog_query, course_run_ids=[self.course.id]) course_vouchers = get_course_vouchers_for_learner(self.request.site, self.request.user, self.course.id) # Verify that there were total four calls. two for getting # enterprise learner data and enterprise learner entitlements # from enterprise service and other two for # getting enterprise catalog and course runs against the enterprise # catalog query respectively from the course catalog service. self._assert_num_requests(4) self.assertEqual(coupon_quantity, len(course_vouchers)) self.assertListEqual(list(expected_vouchers), list(course_vouchers))
def test_get_course_vouchers_for_learner_with_exception(self): """ Verify that method "get_course_vouchers_for_learner" returns empty response if there is an error while accessing the enterprise learner API. """ self.mock_enterprise_learner_api_for_failure() vouchers = get_course_vouchers_for_learner(self.request.site, self.request.user, self.course.id) self.assertIsNone(vouchers)
def test_get_course_vouchers_for_learner_with_multiple_codes(self): """ Verify that method "get_course_vouchers_for_learner" returns all valid coupon codes for the provided enterprise course. """ catalog_id = 1 coupon_quantity = 2 coupon = self._create_course_catalog_coupon(catalog_id, coupon_quantity) expected_vouchers = coupon.attr.coupon_vouchers.vouchers.all() catalog_query = '*:*' self.mock_enterprise_learner_api(entitlement_id=coupon.id) self.mock_course_discovery_api_for_catalog_by_resource_id( catalog_id=catalog_id, catalog_query=catalog_query) self.mock_dynamic_catalog_contains_api(query=catalog_query, course_run_ids=[self.course.id]) course_vouchers = get_course_vouchers_for_learner( self.request.site, self.request.user, self.course.id) self._assert_num_requests(3) self.assertEqual(coupon_quantity, len(course_vouchers)) self.assertListEqual(list(expected_vouchers), list(course_vouchers))