Merge pull request #12572 from edx/renzo/program-detail-routing
Adjust program detail page URL routing
This commit is contained in:
@@ -24,7 +24,7 @@ class ProgramListingPage(PageObject):
|
||||
|
||||
class ProgramDetailsPage(PageObject):
|
||||
"""Program details page."""
|
||||
url = BASE_URL + '/dashboard/programs/123'
|
||||
url = BASE_URL + '/dashboard/programs/123/program-name/'
|
||||
|
||||
def is_browser_on_page(self):
|
||||
return self.q(css='.js-program-details-wrapper').present
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
"""
|
||||
Tests for viewing the programs enrolled by a learner.
|
||||
Unit tests covering the program listing and detail pages.
|
||||
"""
|
||||
import datetime
|
||||
import httpretty
|
||||
import unittest
|
||||
from urlparse import urljoin
|
||||
|
||||
@@ -10,6 +9,7 @@ from django.conf import settings
|
||||
from django.core.urlresolvers import reverse
|
||||
from django.test import override_settings, TestCase
|
||||
from edx_oauth2_provider.tests.factories import ClientFactory
|
||||
import httpretty
|
||||
from opaque_keys.edx import locator
|
||||
from provider.constants import CONFIDENTIAL
|
||||
|
||||
@@ -234,14 +234,20 @@ class TestProgramDetails(ProgramsApiConfigMixin, TestCase):
|
||||
"""
|
||||
def setUp(self):
|
||||
super(TestProgramDetails, self).setUp()
|
||||
|
||||
self.user = UserFactory()
|
||||
self.details_page = reverse('program_details_view', args=['123'])
|
||||
|
||||
self.client.login(username=self.user.username, password='test')
|
||||
|
||||
def test_login_required(self):
|
||||
"""
|
||||
Verify that login is required to access the page.
|
||||
"""
|
||||
self.create_programs_config()
|
||||
|
||||
self.client.logout()
|
||||
|
||||
response = self.client.get(self.details_page)
|
||||
self.assertRedirects(
|
||||
response,
|
||||
@@ -249,6 +255,7 @@ class TestProgramDetails(ProgramsApiConfigMixin, TestCase):
|
||||
)
|
||||
|
||||
self.client.login(username=self.user.username, password='test')
|
||||
|
||||
response = self.client.get(self.details_page)
|
||||
self.assertEquals(response.status_code, 200)
|
||||
|
||||
@@ -257,6 +264,19 @@ class TestProgramDetails(ProgramsApiConfigMixin, TestCase):
|
||||
Verify that the page 404s if disabled.
|
||||
"""
|
||||
self.create_programs_config(program_details_enabled=False)
|
||||
self.client.login(username=self.user.username, password='test')
|
||||
|
||||
response = self.client.get(self.details_page)
|
||||
self.assertEquals(response.status_code, 404)
|
||||
|
||||
def test_page_routing(self):
|
||||
"""Verify that the page can be hit with or without a program name in the URL."""
|
||||
self.create_programs_config()
|
||||
|
||||
response = self.client.get(self.details_page)
|
||||
self.assertEquals(response.status_code, 200)
|
||||
|
||||
response = self.client.get(self.details_page + 'program_name/')
|
||||
self.assertEquals(response.status_code, 200)
|
||||
|
||||
response = self.client.get(self.details_page + 'program_name/invalid/')
|
||||
self.assertEquals(response.status_code, 404)
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
"""
|
||||
Learner's Dashboard urls
|
||||
"""
|
||||
|
||||
"""Learner dashboard URL routing configuration"""
|
||||
from django.conf.urls import url
|
||||
|
||||
from . import views
|
||||
|
||||
|
||||
urlpatterns = [
|
||||
url(r'^programs/(?P<program_uuid>[0-9a-f-]+)/$', views.program_details, name='program_details_view'),
|
||||
url(r'^programs/$', views.view_programs, name='program_listing_view'),
|
||||
# Matches paths like 'programs/123/' and 'programs/123/foo/', but not 'programs/123/foo/bar/'.
|
||||
url(r'^programs/(?P<program_id>\d+)/[\w\-]*/?$', views.program_details, name='program_details_view'),
|
||||
]
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
"""New learner dashboard views."""
|
||||
"""Learner dashboard views"""
|
||||
from urlparse import urljoin
|
||||
|
||||
from django.conf import settings
|
||||
@@ -50,8 +50,8 @@ def view_programs(request):
|
||||
|
||||
@login_required
|
||||
@require_GET
|
||||
def program_details(request, program_uuid): # pylint: disable=unused-argument
|
||||
"""View programs in which the user is engaged."""
|
||||
def program_details(request, program_id): # pylint: disable=unused-argument
|
||||
"""View details about a specific program."""
|
||||
show_program_details = ProgramsApiConfig.current().show_program_details
|
||||
if not show_program_details:
|
||||
raise Http404
|
||||
|
||||
Reference in New Issue
Block a user