Esempio n. 1
0
    def test_get_engaged_programs(self):
        """
        Verify that correct programs are returned in the correct order when the user
        has multiple enrollments.
        """
        self.create_programs_config()
        self.mock_programs_api()

        enrollments = self._create_enrollments(*self.COURSE_KEYS)
        actual = get_engaged_programs(self.user, enrollments)

        programs = self.PROGRAMS_API_RESPONSE['results']
        # get_engaged_programs iterates across a list returned by the programs
        # API to create flattened lists keyed by course ID. These lists are
        # joined in order of enrollment creation time when constructing the
        # list of engaged programs. As such, two programs sharing an enrollment
        # should be returned in the same order found in the API response. In this
        # case, the most recently created enrollment is for a run mode present in
        # the last two test programs.
        expected = [
            programs[1],
            programs[2],
            programs[0],
        ]

        self.assertEqual(expected, actual)
Esempio n. 2
0
def view_programs(request):
    """View programs in which the user is engaged."""
    show_program_listing = ProgramsApiConfig.current().show_program_listing
    if not show_program_listing:
        raise Http404

    enrollments = list(get_course_enrollments(request.user, None, []))
    programs = get_engaged_programs(request.user, enrollments)

    # TODO: Pull 'xseries' string from configuration model.
    marketing_root = urljoin(settings.MKTG_URLS.get('ROOT'),
                             'xseries').strip('/')
    for program in programs:
        program['marketing_url'] = '{root}/{slug}'.format(
            root=marketing_root, slug=program['marketing_slug'])

    return render_to_response(
        'learner_dashboard/programs.html', {
            'programs':
            programs,
            'xseries_url':
            marketing_root
            if ProgramsApiConfig.current().show_xseries_ad else None,
            'nav_hidden':
            True,
            'show_program_listing':
            show_program_listing
        })
Esempio n. 3
0
    def test_get_engaged_no_enrollments(self):
        """Verify that no programs are returned when the user has no enrollments."""
        self.create_programs_config()
        self.mock_programs_api()

        actual = get_engaged_programs(self.user, [])
        expected = []

        self.assertEqual(expected, actual)
Esempio n. 4
0
    def test_get_engaged_no_programs(self):
        """Verify that no programs are returned when no programs exist."""
        self.create_programs_config()
        self.mock_programs_api(data=[])

        enrollments = self._create_enrollments(*self.COURSE_KEYS)
        actual = get_engaged_programs(self.user, enrollments)
        expected = []

        self.assertEqual(expected, actual)
Esempio n. 5
0
    def test_get_engaged_programs_shared_enrollment(self):
        """
        Verify that correct programs are returned when the user has a single enrollment
        appearing in multiple programs.
        """
        self.create_programs_config()
        self.mock_programs_api()

        enrollments = self._create_enrollments(self.COURSE_KEYS[-1])
        actual = get_engaged_programs(self.user, enrollments)

        programs = self.PROGRAMS_API_RESPONSE['results']
        expected = programs[-2:]

        self.assertEqual(expected, actual)
Esempio n. 6
0
    def test_get_engaged_programs_single_program(self):
        """
        Verify that correct program is returned when the user has a single enrollment
        appearing in one program.
        """
        self.create_programs_config()
        self.mock_programs_api()

        enrollments = self._create_enrollments(self.COURSE_KEYS[0])
        actual = get_engaged_programs(self.user, enrollments)

        programs = self.PROGRAMS_API_RESPONSE['results']
        for program in programs:
            program['display_category'] = get_display_category(program)
        expected = [programs[0]]

        self.assertEqual(expected, actual)
Esempio n. 7
0
def view_programs(request):
    """View programs in which the user is engaged."""
    if not ProgramsApiConfig.current().is_student_dashboard_enabled:
        raise Http404

    enrollments = list(get_course_enrollments(request.user, None, []))
    programs = get_engaged_programs(request.user, enrollments)

    # TODO: Pull 'xseries' string from configuration model.
    marketing_root = urljoin(settings.MKTG_URLS.get('ROOT'), 'xseries').strip('/')
    for program in programs:
        program['marketing_url'] = '{root}/{slug}'.format(
            root=marketing_root,
            slug=program['marketing_slug']
        )

    return render_to_response('learner_dashboard/programs.html', {
        'programs': programs,
        'xseries_url': marketing_root if ProgramsApiConfig.current().show_xseries_ad else None
    })