def test_get_course_entitlements_for_learner_with_unavailable_course(self): """ Verify that method "get_course_entitlements_for_learner" returns empty response for entitlements if the provided course id is not available in the related enterprise course catalog. """ enterprise_catalog_id = 1 self.mock_access_token_response() self.mock_enterprise_learner_api(entitlement_id=enterprise_catalog_id) self.mock_enterprise_learner_entitlements_api(entitlement_id=enterprise_catalog_id) self.mock_catalog_contains_endpoint( discovery_api_url=self.site_configuration.discovery_api_url, catalog_id=enterprise_catalog_id, course_run_ids=[self.course.id] ) non_enterprise_course = CourseFactory(id='edx/Non_Enterprise_Course/DemoX') entitlements = get_course_entitlements_for_learner( self.request.site, self.request.user, non_enterprise_course ) # Verify that there were total two calls. First for getting # enterprise learner data from enterprise service and other one for # checking course run against the enterprise catalog query from the # discovery service. self._assert_num_requests(3) self.assertIsNone(entitlements)
def _assert_get_course_entitlements_for_learner_response( self, expected_entitlements, log_level, log_message): """ Helper method to validate the response from the method "get_course_entitlements_for_learner" and verify the logged message. """ logger_name = 'ecommerce.enterprise.entitlements' with LogCapture(logger_name) as logger: entitlements = get_course_entitlements_for_learner( self.request.site, self.request.user, self.course.id) self._assert_num_requests(1) logger.check((logger_name, log_level, log_message)) self.assertEqual(expected_entitlements, entitlements)
def test_get_course_entitlements_for_learner_with_unavailable_course(self): """ Verify that method "get_course_entitlements_for_learner" returns empty response for entitlements if the provided course id is not available in the related enterprise course catalog. """ enterprise_catalog_id = 1 catalog_query = '*:*' self.mock_enterprise_learner_api(entitlement_id=enterprise_catalog_id) self.mock_enterprise_learner_entitlements_api(entitlement_id=enterprise_catalog_id) self.mock_course_discovery_api_for_catalog_by_resource_id(catalog_query=catalog_query) self.mock_dynamic_catalog_contains_api(query=catalog_query, course_run_ids=[self.course.id]) non_enterprise_course = CourseFactory(id='edx/Non_Enterprise_Course/DemoX') entitlements = get_course_entitlements_for_learner( self.request.site, self.request.user, non_enterprise_course ) # Verify that there were total three calls. First for getting # enterprise learner data 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(3) self.assertIsNone(entitlements)