Commit ffd1e29d by Renzo Lucioni

Show Programs tab on program detail pages

parent f8be1ed1
...@@ -6,6 +6,7 @@ import json ...@@ -6,6 +6,7 @@ import json
import unittest import unittest
from urlparse import urljoin from urlparse import urljoin
from bs4 import BeautifulSoup
from django.conf import settings from django.conf import settings
from django.core.urlresolvers import reverse from django.core.urlresolvers import reverse
from django.test import override_settings, TestCase from django.test import override_settings, TestCase
...@@ -51,7 +52,6 @@ class TestProgramListing( ...@@ -51,7 +52,6 @@ class TestProgramListing(
ClientFactory(name=CredentialsApiConfig.OAUTH2_CLIENT_NAME, client_type=CONFIDENTIAL) ClientFactory(name=CredentialsApiConfig.OAUTH2_CLIENT_NAME, client_type=CONFIDENTIAL)
ClientFactory(name=ProgramsApiConfig.OAUTH2_CLIENT_NAME, client_type=CONFIDENTIAL) ClientFactory(name=ProgramsApiConfig.OAUTH2_CLIENT_NAME, client_type=CONFIDENTIAL)
self.student = UserFactory() self.student = UserFactory()
self.create_programs_config(xseries_ad_enabled=True, program_listing_enabled=True)
def _create_course_and_enroll(self, student, org, course, run): def _create_course_and_enroll(self, student, org, course, run):
""" """
...@@ -107,6 +107,7 @@ class TestProgramListing( ...@@ -107,6 +107,7 @@ class TestProgramListing(
@httpretty.activate @httpretty.activate
def test_get_program_with_no_enrollment(self): def test_get_program_with_no_enrollment(self):
self.create_programs_config()
response = self._setup_and_get_program() response = self._setup_and_get_program()
for program_element in self._get_program_checklist(0): for program_element in self._get_program_checklist(0):
self.assertNotContains(response, program_element) self.assertNotContains(response, program_element)
...@@ -115,6 +116,7 @@ class TestProgramListing( ...@@ -115,6 +116,7 @@ class TestProgramListing(
@httpretty.activate @httpretty.activate
def test_get_one_program(self): def test_get_one_program(self):
self.create_programs_config()
self._create_course_and_enroll(self.student, *self.COURSE_KEYS[0].split('/')) self._create_course_and_enroll(self.student, *self.COURSE_KEYS[0].split('/'))
response = self._setup_and_get_program() response = self._setup_and_get_program()
for program_element in self._get_program_checklist(0): for program_element in self._get_program_checklist(0):
...@@ -126,6 +128,7 @@ class TestProgramListing( ...@@ -126,6 +128,7 @@ class TestProgramListing(
@httpretty.activate @httpretty.activate
def test_get_both_program(self): def test_get_both_program(self):
self.create_programs_config()
self._create_course_and_enroll(self.student, *self.COURSE_KEYS[0].split('/')) self._create_course_and_enroll(self.student, *self.COURSE_KEYS[0].split('/'))
self._create_course_and_enroll(self.student, *self.COURSE_KEYS[5].split('/')) self._create_course_and_enroll(self.student, *self.COURSE_KEYS[5].split('/'))
response = self._setup_and_get_program() response = self._setup_and_get_program()
...@@ -143,7 +146,7 @@ class TestProgramListing( ...@@ -143,7 +146,7 @@ class TestProgramListing(
self.assertEqual(response.status_code, 404) self.assertEqual(response.status_code, 404)
def test_xseries_advertise_disabled(self): def test_xseries_advertise_disabled(self):
self.create_programs_config(program_listing_enabled=True, xseries_ad_enabled=False) self.create_programs_config(xseries_ad_enabled=False)
self.client.login(username=self.student.username, password=self.PASSWORD) self.client.login(username=self.student.username, password=self.PASSWORD)
response = self.client.get(self.url) response = self.client.get(self.url)
x_series_url = urljoin(settings.MKTG_URLS.get('ROOT'), 'xseries') x_series_url = urljoin(settings.MKTG_URLS.get('ROOT'), 'xseries')
...@@ -194,7 +197,7 @@ class TestProgramListing( ...@@ -194,7 +197,7 @@ class TestProgramListing(
@httpretty.activate @httpretty.activate
def test_get_xseries_certificates_with_data(self): def test_get_xseries_certificates_with_data(self):
self.create_programs_config(program_listing_enabled=True) self.create_programs_config()
self.create_credentials_config(is_learner_issuance_enabled=True) self.create_credentials_config(is_learner_issuance_enabled=True)
self.client.login(username=self.student.username, password=self.PASSWORD) self.client.login(username=self.student.username, password=self.PASSWORD)
...@@ -213,7 +216,7 @@ class TestProgramListing( ...@@ -213,7 +216,7 @@ class TestProgramListing(
@httpretty.activate @httpretty.activate
def test_get_xseries_certificates_without_data(self): def test_get_xseries_certificates_without_data(self):
self.create_programs_config(program_listing_enabled=True) self.create_programs_config()
self.create_credentials_config(is_learner_issuance_enabled=True) self.create_credentials_config(is_learner_issuance_enabled=True)
self.client.login(username=self.student.username, password=self.PASSWORD) self.client.login(username=self.student.username, password=self.PASSWORD)
...@@ -283,8 +286,16 @@ class TestProgramDetails(ProgramsApiConfigMixin, SharedModuleStoreTestCase): ...@@ -283,8 +286,16 @@ class TestProgramDetails(ProgramsApiConfigMixin, SharedModuleStoreTestCase):
def _assert_program_data_present(self, response): def _assert_program_data_present(self, response):
"""Verify that program data is present.""" """Verify that program data is present."""
self.assertContains(response, 'programData') self.assertContains(response, 'programData')
self.assertContains(response, 'programListingUrl')
self.assertContains(response, self.data['name']) self.assertContains(response, self.data['name'])
self.assertContains(response, reverse('program_listing_view')) self._assert_programs_tab_present(response)
def _assert_programs_tab_present(self, response):
"""Verify that the programs tab is present in the nav."""
soup = BeautifulSoup(response.content, 'html.parser')
self.assertTrue(
any(soup.find_all('a', class_='tab-nav-link', href=reverse('program_listing_view')))
)
def test_login_required(self): def test_login_required(self):
""" """
......
...@@ -63,10 +63,12 @@ def program_details(request, program_id): ...@@ -63,10 +63,12 @@ def program_details(request, program_id):
raise Http404 raise Http404
program_data = utils.supplement_program_data(program_data, request.user) program_data = utils.supplement_program_data(program_data, request.user)
show_program_listing = ProgramsApiConfig.current().show_program_listing
context = { context = {
'program_data': program_data, 'program_data': program_data,
'program_listing_url': reverse('program_listing_view'), 'program_listing_url': reverse('program_listing_view'),
'show_program_listing': show_program_listing,
'nav_hidden': True, 'nav_hidden': True,
'disable_courseware_js': True, 'disable_courseware_js': True,
'uses_pattern_library': True 'uses_pattern_library': True
......
...@@ -22,6 +22,7 @@ class ProgramsApiConfigMixin(object): ...@@ -22,6 +22,7 @@ class ProgramsApiConfigMixin(object):
'enable_studio_tab': True, 'enable_studio_tab': True,
'enable_certification': True, 'enable_certification': True,
'xseries_ad_enabled': True, 'xseries_ad_enabled': True,
'program_listing_enabled': True,
'program_details_enabled': True, 'program_details_enabled': True,
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment