def test_get_display_category_success(self): self.create_programs_config() self.mock_programs_api() actual_programs = utils.get_programs(self.user) for program in actual_programs: expected = 'XSeries' self.assertEqual(expected, utils.get_display_category(program))
def program_details(request, program_id): """View details about a specific program.""" show_program_details = ProgramsApiConfig.current().show_program_details if not show_program_details: raise Http404 program_data = utils.get_programs(request.user, program_id=program_id) if not program_data: raise Http404 program_data = utils.supplement_program_data(program_data, request.user) show_program_listing = ProgramsApiConfig.current().show_program_listing urls = { 'program_listing_url': reverse('program_listing_view'), 'track_selection_url': strip_course_id( reverse('course_modes_choose', kwargs={'course_id': FAKE_COURSE_KEY})), 'commerce_api_url': reverse('commerce_api:v0:baskets:create') } context = { 'program_data': program_data, 'urls': urls, 'show_program_listing': show_program_listing, 'nav_hidden': True, 'disable_courseware_js': True, 'uses_pattern_library': True } return render_to_response('learner_dashboard/program_details.html', context)
def test_get_programs_category_casing(self, is_detail): """Temporary. Verify that program categories are lowercased.""" self.create_programs_config() program = factories.Program(category='camelCase') if is_detail: program_id = program['id'] self.mock_programs_api(data=program, program_id=program_id) data = utils.get_programs(self.user, program_id=program_id) self.assertEqual(data['category'], 'camelcase') else: self.mock_programs_api(data={'results': [program]}) data = utils.get_programs(self.user) self.assertEqual(data[0]['category'], 'camelcase')
def program_details(request, program_id): """View details about a specific program.""" show_program_details = ProgramsApiConfig.current().show_program_details if not show_program_details: raise Http404 program_data = utils.get_programs(request.user, program_id=program_id) if not program_data: raise Http404 program_data = utils.supplement_program_data(program_data, request.user) show_program_listing = ProgramsApiConfig.current().show_program_listing context = { 'program_data': program_data, 'program_listing_url': reverse('program_listing_view'), 'show_program_listing': show_program_listing, 'nav_hidden': True, 'disable_courseware_js': True, 'uses_pattern_library': True } return render_to_response('learner_dashboard/program_details.html', context)
def test_get_programs_data_retrieval_failure(self): """Verify behavior when data can't be retrieved from Programs.""" self.create_programs_config() self.mock_programs_api(status_code=500) actual = get_programs(self.user) self.assertEqual(actual, [])
def test_get_programs_data_retrieval_failure(self): """Verify behavior when data can't be retrieved from Programs.""" self.create_programs_config() self.mock_programs_api(status_code=500) actual = utils.get_programs(self.user) self.assertEqual(actual, [])
def program_details(request, program_id): """View details about a specific program.""" programs_config = ProgramsApiConfig.current() if not programs_config.show_program_details: raise Http404 program_data = utils.get_programs(request.user, program_id=program_id) if not program_data: raise Http404 program_data = utils.supplement_program_data(program_data, request.user) urls = { "program_listing_url": reverse("program_listing_view"), "track_selection_url": strip_course_id(reverse("course_modes_choose", kwargs={"course_id": FAKE_COURSE_KEY})), "commerce_api_url": reverse("commerce_api:v0:baskets:create"), } context = { "program_data": program_data, "urls": urls, "show_program_listing": programs_config.show_program_listing, "nav_hidden": True, "disable_courseware_js": True, "uses_pattern_library": True, } return render_to_response("learner_dashboard/program_details.html", context)
def program_details(request, program_id): """View details about a specific program.""" programs_config = ProgramsApiConfig.current() if not programs_config.show_program_details: raise Http404 program_data = utils.get_programs(request.user, program_id=program_id) if not program_data: raise Http404 program_data = utils.supplement_program_data(program_data, request.user) urls = { 'program_listing_url': reverse('program_listing_view'), 'track_selection_url': strip_course_id( reverse('course_modes_choose', kwargs={'course_id': FAKE_COURSE_KEY})), 'commerce_api_url': reverse('commerce_api:v0:baskets:create'), } context = { 'program_data': program_data, 'urls': urls, 'show_program_listing': programs_config.show_program_listing, 'nav_hidden': True, 'disable_courseware_js': True, 'uses_pattern_library': True } return render_to_response('learner_dashboard/program_details.html', context)
def program_details(request, program_id): """View details about a specific program.""" programs_config = ProgramsApiConfig.current() if not programs_config.show_program_details: raise Http404 program_data = utils.get_programs(request.user, program_id=program_id) if not program_data: raise Http404 program_data = utils.ProgramDataExtender(program_data, request.user).extend() urls = { 'program_listing_url': reverse('program_listing_view'), 'track_selection_url': '', 'commerce_api_url': reverse('commerce_api:v0:baskets:create'), } context = { 'program_data': program_data, 'urls': urls, 'show_program_listing': programs_config.show_program_listing, 'nav_hidden': True, 'disable_courseware_js': True, 'uses_pattern_library': False } return render_to_response('learner_dashboard/program_details.html', context)
def test_get_programs_client_initialization_failure(self, mock_init): """Verify behavior when API client fails to initialize.""" self.create_programs_config() mock_init.side_effect = Exception actual = get_programs(self.user) self.assertEqual(actual, []) self.assertTrue(mock_init.called)
def test_get_programs_client_initialization_failure(self, mock_init): """Verify behavior when API client fails to initialize.""" self.create_programs_config() mock_init.side_effect = Exception actual = utils.get_programs(self.user) self.assertEqual(actual, []) self.assertTrue(mock_init.called)
def test_get_programs(self): """Verify programs data can be retrieved.""" self.create_programs_config() self.mock_programs_api() actual = utils.get_programs(self.user) self.assertEqual(actual, self.PROGRAMS_API_RESPONSE['results']) # Verify the API was actually hit (not the cache). self.assertEqual(len(httpretty.httpretty.latest_requests), 1)
def test_get_programs(self): """Verify programs data can be retrieved.""" self.create_programs_config() self.mock_programs_api() actual = utils.get_programs(self.user) self.assertEqual(actual, self.PROGRAMS_API_RESPONSE["results"]) # Verify the API was actually hit (not the cache). self.assertEqual(len(httpretty.httpretty.latest_requests), 1)
def program_details_marketing(request, program_id): """View details about a specific program.""" programs_config = ProgramsApiConfig.current() if not programs_config.show_program_details: raise Http404 auth_user = authenticate( username='******', password='******') if request.user.is_anonymous() else request.user try: # If the ID is a UUID, the requested program resides in the catalog. uuid.UUID(program_id) program_data = get_catalog_programs(auth_user, uuid=program_id) if program_data: program_data = munge_catalog_program(program_data) except ValueError: program_data = utils.get_programs(auth_user, program_id=program_id) if not program_data: raise Http404 program_data = utils.ProgramDataExtender(program_data, auth_user).extend() urls = { 'program_listing_url': reverse('program_listing_view'), 'track_selection_url': strip_course_id( reverse('course_modes_choose', kwargs={'course_id': FAKE_COURSE_KEY})), 'commerce_api_url': reverse('commerce_api:v0:baskets:create'), } context = { 'program_data': program_data, 'urls': urls, 'show_program_listing': programs_config.show_program_listing, 'nav_hidden': True, 'disable_courseware_js': True, 'uses_pattern_library': True, 'user_preferences': get_user_preferences(auth_user) } return render_to_response( 'learner_dashboard/program_details_marketing.html', context)
def program_details(request, program_id): """View details about a specific program.""" show_program_details = ProgramsApiConfig.current().show_program_details if not show_program_details: raise Http404 program_data = get_programs(request.user, program_id=program_id) context = { 'program_data': program_data, 'nav_hidden': True, 'disable_courseware_js': True, 'uses_pattern_library': True } return render_to_response('learner_dashboard/program_details.html', context)
def program_details(request, program_id): """View details about a specific program.""" programs_config = ProgramsApiConfig.current() if not programs_config.show_program_details: raise Http404 try: # If the ID is a UUID, the requested program resides in the catalog. uuid.UUID(program_id) program_data = get_catalog_programs(request.user, uuid=program_id) if program_data: program_data = munge_catalog_program(program_data) except ValueError: program_data = utils.get_programs(request.user, program_id=program_id) if not program_data: raise Http404 program_data = utils.ProgramDataExtender(program_data, request.user).extend() urls = { "program_listing_url": reverse("program_listing_view"), "track_selection_url": strip_course_id(reverse("course_modes_choose", kwargs={"course_id": FAKE_COURSE_KEY})), "commerce_api_url": reverse("commerce_api:v0:baskets:create"), } context = { "program_data": program_data, "urls": urls, "show_program_listing": programs_config.show_program_listing, "nav_hidden": True, "disable_courseware_js": True, "uses_pattern_library": True, "user_preferences": get_user_preferences(request.user), } return render_to_response("learner_dashboard/program_details.html", context)
def test_get_programs_caching(self): """Verify that when enabled, the cache is used for non-staff users.""" self.create_programs_config(cache_ttl=1) self.mock_programs_api() # Warm up the cache. get_programs(self.user) # Hit the cache. get_programs(self.user) # Verify only one request was made. self.assertEqual(len(httpretty.httpretty.latest_requests), 1) staff_user = UserFactory(is_staff=True) # Hit the Programs API twice. for _ in range(2): get_programs(staff_user) # Verify that three requests have been made (one for student, two for staff). self.assertEqual(len(httpretty.httpretty.latest_requests), 3)
def test_get_programs_caching(self): """Verify that when enabled, the cache is used for non-staff users.""" self.create_programs_config(cache_ttl=1) self.mock_programs_api() # Warm up the cache. utils.get_programs(self.user) # Hit the cache. utils.get_programs(self.user) # Verify only one request was made. self.assertEqual(len(httpretty.httpretty.latest_requests), 1) staff_user = UserFactory(is_staff=True) # Hit the Programs API twice. for _ in range(2): utils.get_programs(staff_user) # Verify that three requests have been made (one for student, two for staff). self.assertEqual(len(httpretty.httpretty.latest_requests), 3)
def _load_run_modes(self): """Find all run modes which are part of a program.""" programs = get_programs(self.client.user) self.run_modes = self._flatten(programs)
def _load_run_modes(self, user): """Find all run modes which are part of a program.""" use_catalog = waffle.switch_is_active('get_programs_from_catalog') programs = get_programs(user, use_catalog=use_catalog) self.run_modes = self._flatten(programs)
def test_get_programs_programs_disabled(self): """Verify behavior when programs is disabled.""" self.create_programs_config(enabled=False) actual = get_programs(self.user) self.assertEqual(actual, [])
def test_get_programs_programs_disabled(self): """Verify behavior when programs is disabled.""" self.create_programs_config(enabled=False) actual = utils.get_programs(self.user) self.assertEqual(actual, [])