def test_course_course_ended(self, days_offset): self.course.end = timezone.now() + datetime.timedelta(days=days_offset) self.course = self.update_course(self.course, self.user.id) # pylint: disable=no-member data = utils.supplement_program_data(self.program, self.user) self._assert_supplemented(data)
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 test_student_enrollment_status(self, is_enrolled, enrolled_mode, is_upgrade_required, mock_get_mode): """Verify that program data is supplemented with the student's enrollment status.""" expected_upgrade_url = '{root}/{path}?sku={sku}'.format( root=ECOMMERCE_URL_ROOT, path=self.checkout_path.strip('/'), sku=self.sku, ) update_commerce_config(enabled=True, checkout_page=self.checkout_path) mock_mode = mock.Mock() mock_mode.sku = self.sku mock_get_mode.return_value = mock_mode if is_enrolled: CourseEnrollmentFactory(user=self.user, course_id=self.course.id, mode=enrolled_mode) # pylint: disable=no-member data = utils.supplement_program_data(self.program, self.user) self._assert_supplemented( data, is_enrolled=is_enrolled, upgrade_url=expected_upgrade_url if is_upgrade_required else None)
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.""" 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 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_organization_logo_missing(self, mock_get_organization_by_short_name): """ Verify the logo image is not set if the organizations api returns organization, but the logo is not available """ mock_get_organization_by_short_name.return_value = {'logo': None} data = utils.supplement_program_data(self.program, self.user) self.assertEqual(data['organizations'][0].get('img'), None)
def test_student_enrollment_status(self, is_enrolled): """Verify that program data is supplemented correctly.""" if is_enrolled: CourseEnrollmentFactory(user=self.user, course_id=self.course.id) # pylint: disable=no-member data = utils.supplement_program_data(self.program, self.user) self._assert_supplemented(data, is_enrolled=is_enrolled)
def test_course_enrollment_status(self, start_offset, end_offset, is_enrollment_open): """Verify that course enrollment status is reflected correctly.""" self.course.enrollment_start = timezone.now() - datetime.timedelta(days=start_offset) self.course.enrollment_end = timezone.now() - datetime.timedelta(days=end_offset) self.course = self.update_course(self.course, self.user.id) # pylint: disable=no-member data = utils.supplement_program_data(self.program, self.user) self._assert_supplemented(data, is_enrollment_open=is_enrollment_open)
def test_organization_logo_exists(self, mock_get_organization_by_short_name): """ Verify the logo image is set from the organizations api """ mock_logo_url = "edx/logo.png" mock_image = mock.Mock() mock_image.url = mock_logo_url mock_get_organization_by_short_name.return_value = {"logo": mock_image} data = utils.supplement_program_data(self.program, self.user) self.assertEqual(data["organizations"][0].get("img"), mock_logo_url)
def test_organization_logo_exists(self, mock_get_organization_by_short_name): """ Verify the logo image is set from the organizations api """ mock_logo_url = 'edx/logo.png' mock_image = mock.Mock() mock_image.url = mock_logo_url mock_get_organization_by_short_name.return_value = {'logo': mock_image} data = utils.supplement_program_data(self.program, self.user) self.assertEqual(data['organizations'][0].get('img'), mock_logo_url)
def test_inactive_enrollment_no_upgrade(self, enrolled_mode): """Verify that a student with an inactive enrollment isn't encouraged to upgrade.""" update_commerce_config(enabled=True, checkout_page=self.checkout_path) CourseEnrollmentFactory( user=self.user, course_id=self.course.id, mode=enrolled_mode, is_active=False # pylint: disable=no-member ) data = utils.supplement_program_data(self.program, self.user) self._assert_supplemented(data)
def test_certificate_url_retrieval(self, is_uuid_available, mock_html_certs_enabled, mock_get_cert_data): """Verify that the student's run mode certificate is included, when available.""" test_uuid = uuid.uuid4().hex mock_get_cert_data.return_value = {'uuid': test_uuid} if is_uuid_available else {} mock_html_certs_enabled.return_value = True data = utils.supplement_program_data(self.program, self.user) if is_uuid_available: expected_url = reverse('certificates:render_cert_by_uuid', kwargs={'certificate_uuid': test_uuid}) self._assert_supplemented(data, certificate_url=expected_url) else: self._assert_supplemented(data)
def test_ecommerce_disabled(self, mock_get_mode): """Verify that the utility can operate when the ecommerce service is disabled.""" update_commerce_config(enabled=False, checkout_page=self.checkout_path) mock_mode = mock.Mock() mock_mode.sku = self.sku mock_get_mode.return_value = mock_mode CourseEnrollmentFactory(user=self.user, course_id=self.course.id, mode=MODES.audit) # pylint: disable=no-member data = utils.supplement_program_data(self.program, self.user) self._assert_supplemented(data, is_enrolled=True, upgrade_url=None)
def test_inactive_enrollment_no_upgrade(self, enrolled_mode): """Verify that a student with an inactive enrollment isn't encouraged to upgrade.""" update_commerce_config(enabled=True, checkout_page=self.checkout_path) CourseEnrollmentFactory( user=self.user, course_id=self.course.id, # pylint: disable=no-member mode=enrolled_mode, is_active=False, ) data = utils.supplement_program_data(self.program, self.user) self._assert_supplemented(data)
def test_no_enrollment_start_date(self): """Verify that a closed course with no explicit enrollment start date doesn't cause an error. Regression test for ECOM-4973. """ self.course.enrollment_end = timezone.now() - datetime.timedelta(days=1) self.course = self.update_course(self.course, self.user.id) # pylint: disable=no-member data = utils.supplement_program_data(self.program, self.user) self._assert_supplemented( data, is_enrollment_open=False, enrollment_open_date=strftime_localized(utils.DEFAULT_ENROLLMENT_START_DATE, 'SHORT_DATE'), )
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) program_data = utils.supplement_program_data(program_data, request.user) 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 test_student_enrollment_status(self, is_enrolled, enrolled_mode, is_upgrade_required, mock_get_mode): """Verify that program data is supplemented with the student's enrollment status.""" expected_upgrade_url = "{root}/{path}?sku={sku}".format( root=ECOMMERCE_URL_ROOT, path=self.checkout_path.strip("/"), sku=self.sku ) update_commerce_config(enabled=True, checkout_page=self.checkout_path) mock_mode = mock.Mock() mock_mode.sku = self.sku mock_get_mode.return_value = mock_mode if is_enrolled: CourseEnrollmentFactory( user=self.user, course_id=self.course.id, mode=enrolled_mode ) # pylint: disable=no-member data = utils.supplement_program_data(self.program, self.user) self._assert_supplemented( data, is_enrolled=is_enrolled, upgrade_url=expected_upgrade_url if is_upgrade_required else None )
def test_organization_missing(self, mock_get_organization_by_short_name): """ Verify the logo image is not set if the organizations api returns None """ mock_get_organization_by_short_name.return_value = None data = utils.supplement_program_data(self.program, self.user) self.assertEqual(data["organizations"][0].get("img"), None)