Пример #1
0
    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)
Пример #2
0
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)
Пример #3
0
    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)
Пример #4
0
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)
Пример #5
0
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)
Пример #6
0
    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)
Пример #7
0
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)
Пример #8
0
 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)
Пример #9
0
 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)
Пример #10
0
    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)
Пример #11
0
    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)
Пример #12
0
    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)
Пример #13
0
    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)
Пример #14
0
    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)
Пример #15
0
 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)
Пример #16
0
    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)
Пример #17
0
    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)
Пример #18
0
    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)
Пример #19
0
    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)
Пример #20
0
    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)
Пример #21
0
    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)
Пример #22
0
    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'),
        )
Пример #23
0
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)
Пример #24
0
    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
        )
Пример #25
0
 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)