Commit 02550cb3 by Chris Dodge Committed by Brian Beggs

Disable posting to LinkedIn feature for microsites until we can support multiple LinkedIn accounts

parent 2f0b8497
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
import unittest import unittest
import ddt import ddt
import mock
from django.conf import settings from django.conf import settings
from django.core.urlresolvers import reverse from django.core.urlresolvers import reverse
...@@ -15,9 +16,18 @@ from certificates.tests.factories import GeneratedCertificateFactory # pylint: ...@@ -15,9 +16,18 @@ from certificates.tests.factories import GeneratedCertificateFactory # pylint:
from certificates.api import get_certificate_url # pylint: disable=import-error from certificates.api import get_certificate_url # pylint: disable=import-error
from course_modes.models import CourseMode from course_modes.models import CourseMode
from student.models import LinkedInAddToProfileConfiguration
# pylint: disable=no-member # pylint: disable=no-member
def _fake_is_request_in_microsite():
"""
Mocked version of microsite helper method to always return true
"""
return True
@ddt.ddt @ddt.ddt
@unittest.skipUnless(settings.ROOT_URLCONF == 'lms.urls', 'Test only valid in lms') @unittest.skipUnless(settings.ROOT_URLCONF == 'lms.urls', 'Test only valid in lms')
class CertificateDisplayTest(ModuleStoreTestCase): class CertificateDisplayTest(ModuleStoreTestCase):
...@@ -98,6 +108,60 @@ class CertificateDisplayTest(ModuleStoreTestCase): ...@@ -98,6 +108,60 @@ class CertificateDisplayTest(ModuleStoreTestCase):
self.assertContains(response, u'View Test_Certificate') self.assertContains(response, u'View Test_Certificate')
self.assertContains(response, test_url) self.assertContains(response, test_url)
def test_post_to_linkedin_invisibility(self):
"""
Verifies that the post certificate to linked button
does not appear by default (when config is not set)
"""
self._create_certificate('honor')
# until we set up the configuration, the LinkedIn action
# button should not be visible
self._check_linkedin_visibility(False)
def test_post_to_linkedin_visibility(self):
"""
Verifies that the post certificate to linked button appears
as expected
"""
self._create_certificate('honor')
config = LinkedInAddToProfileConfiguration(
company_identifier='0_mC_o2MizqdtZEmkVXjH4eYwMj4DnkCWrZP_D9',
enabled=True
)
config.save()
# now we should see it
self._check_linkedin_visibility(True)
@mock.patch("microsite_configuration.microsite.is_request_in_microsite", _fake_is_request_in_microsite)
def test_post_to_linkedin_microsite(self):
"""
Verifies behavior for microsites which disables the post to LinkedIn
feature (for now)
"""
self._create_certificate('honor')
config = LinkedInAddToProfileConfiguration(
company_identifier='0_mC_o2MizqdtZEmkVXjH4eYwMj4DnkCWrZP_D9',
enabled=True
)
config.save()
# now we should not see it because we are in a microsite
self._check_linkedin_visibility(False)
def _check_linkedin_visibility(self, is_visible):
"""
Performs assertions on the Dashboard
"""
response = self.client.get(reverse('dashboard'))
if is_visible:
self.assertContains(response, u'Add Certificate to LinkedIn Profile')
else:
self.assertNotContains(response, u'Add Certificate to LinkedIn Profile')
def _create_certificate(self, enrollment_mode): def _create_certificate(self, enrollment_mode):
"""Simulate that the user has a generated certificate. """ """Simulate that the user has a generated certificate. """
CourseEnrollmentFactory.create(user=self.user, course_id=self.course.id, mode=enrollment_mode) CourseEnrollmentFactory.create(user=self.user, course_id=self.course.id, mode=enrollment_mode)
......
...@@ -363,7 +363,10 @@ def _cert_info(user, course_overview, cert_status, course_mode): # pylint: disa ...@@ -363,7 +363,10 @@ def _cert_info(user, course_overview, cert_status, course_mode): # pylint: disa
# Clicking this button sends the user to LinkedIn where they # Clicking this button sends the user to LinkedIn where they
# can add the certificate information to their profile. # can add the certificate information to their profile.
linkedin_config = LinkedInAddToProfileConfiguration.current() linkedin_config = LinkedInAddToProfileConfiguration.current()
if linkedin_config.enabled:
# posting certificates to LinkedIn is not currently
# supported in microsites/White Labels
if linkedin_config.enabled and not microsite.is_request_in_microsite():
status_dict['linked_in_url'] = linkedin_config.add_to_profile_url( status_dict['linked_in_url'] = linkedin_config.add_to_profile_url(
course_overview.id, course_overview.id,
course_overview.display_name, course_overview.display_name,
......
...@@ -3,6 +3,7 @@ ...@@ -3,6 +3,7 @@
import json import json
import ddt import ddt
import mock
from uuid import uuid4 from uuid import uuid4
from nose.plugins.attrib import attr from nose.plugins.attrib import attr
from mock import patch from mock import patch
...@@ -49,6 +50,13 @@ FEATURES_WITH_CUSTOM_CERTS_ENABLED = { ...@@ -49,6 +50,13 @@ FEATURES_WITH_CUSTOM_CERTS_ENABLED = {
FEATURES_WITH_CUSTOM_CERTS_ENABLED.update(FEATURES_WITH_CERTS_ENABLED) FEATURES_WITH_CUSTOM_CERTS_ENABLED.update(FEATURES_WITH_CERTS_ENABLED)
def _fake_is_request_in_microsite():
"""
Mocked version of microsite helper method to always return true
"""
return True
@attr('shard_1') @attr('shard_1')
@ddt.ddt @ddt.ddt
class CertificatesViewsTests(ModuleStoreTestCase, EventTrackingTestCase): class CertificatesViewsTests(ModuleStoreTestCase, EventTrackingTestCase):
...@@ -161,7 +169,23 @@ class CertificatesViewsTests(ModuleStoreTestCase, EventTrackingTestCase): ...@@ -161,7 +169,23 @@ class CertificatesViewsTests(ModuleStoreTestCase, EventTrackingTestCase):
course_id=unicode(self.course.id) course_id=unicode(self.course.id)
) )
response = self.client.get(test_url) response = self.client.get(test_url)
self.assertTrue(urllib.quote_plus(self.request.build_absolute_uri(test_url)) in response.content) self.assertIn(urllib.quote_plus(self.request.build_absolute_uri(test_url)), response.content)
@override_settings(FEATURES=FEATURES_WITH_CERTS_ENABLED)
@mock.patch("microsite_configuration.microsite.is_request_in_microsite", _fake_is_request_in_microsite)
def test_linkedin_share_microsites(self):
"""
Test: LinkedIn share URL should not be visible when called from within a microsite (for now)
"""
self._add_course_certificates(count=1, signatory_count=1, is_active=True)
test_url = get_certificate_url(
user_id=self.user.id,
course_id=unicode(self.course.id)
)
response = self.client.get(test_url)
# the URL should not be present
self.assertNotIn(urllib.quote_plus(self.request.build_absolute_uri(test_url)), response.content)
@override_settings(FEATURES=FEATURES_WITH_CERTS_ENABLED) @override_settings(FEATURES=FEATURES_WITH_CERTS_ENABLED)
def test_rendering_course_organization_data(self): def test_rendering_course_organization_data(self):
......
...@@ -430,7 +430,10 @@ def render_html_view(request, user_id, course_id): ...@@ -430,7 +430,10 @@ def render_html_view(request, user_id, course_id):
# Clicking this button sends the user to LinkedIn where they # Clicking this button sends the user to LinkedIn where they
# can add the certificate information to their profile. # can add the certificate information to their profile.
linkedin_config = LinkedInAddToProfileConfiguration.current() linkedin_config = LinkedInAddToProfileConfiguration.current()
if linkedin_config.enabled:
# posting certificates to LinkedIn is not currently
# supported in microsites/White Labels
if linkedin_config.enabled and not microsite.is_request_in_microsite():
context['linked_in_url'] = linkedin_config.add_to_profile_url( context['linked_in_url'] = linkedin_config.add_to_profile_url(
course.id, course.id,
course.display_name, course.display_name,
......
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