Commit c5912ea3 by Zia Fazal

refactored code as described in SOL-1386

further code refactoring and added test

fixed tests and internationalisation issues

added translators comment and pulled text to same line

changes based on feedback

updated doctoring to make it more unstandable

further optimizations
parent 685572cb
...@@ -38,6 +38,11 @@ class BadgeAssertionFactory(DjangoModelFactory): ...@@ -38,6 +38,11 @@ class BadgeAssertionFactory(DjangoModelFactory):
model = BadgeAssertion model = BadgeAssertion
mode = 'honor' mode = 'honor'
data = {
'image': 'http://www.example.com/image.png',
'json': {'id': 'http://www.example.com/assertion.json'},
'issuer': 'http://www.example.com/issuer.json',
}
class BadgeImageConfigurationFactory(DjangoModelFactory): class BadgeImageConfigurationFactory(DjangoModelFactory):
...@@ -75,7 +80,8 @@ class CertificateHtmlViewConfigurationFactory(DjangoModelFactory): ...@@ -75,7 +80,8 @@ class CertificateHtmlViewConfigurationFactory(DjangoModelFactory):
}, },
"honor": { "honor": {
"certificate_type": "Honor Code", "certificate_type": "Honor Code",
"certificate_title": "Certificate of Achievement" "certificate_title": "Certificate of Achievement",
"logo_url": "http://www.edx.org/honor_logo.png"
}, },
"verified": { "verified": {
"certificate_type": "Verified", "certificate_type": "Verified",
...@@ -84,6 +90,13 @@ class CertificateHtmlViewConfigurationFactory(DjangoModelFactory): ...@@ -84,6 +90,13 @@ class CertificateHtmlViewConfigurationFactory(DjangoModelFactory):
"xseries": { "xseries": {
"certificate_title": "XSeries Certificate of Achievement", "certificate_title": "XSeries Certificate of Achievement",
"certificate_type": "XSeries" "certificate_type": "XSeries"
},
"microsites": {
"testmicrosite": {
"company_about_url": "http://www.testmicrosite.org/about-us",
"company_privacy_url": "http://www.testmicrosite.org/edx-privacy-policy",
"company_tos_url": "http://www.testmicrosite.org/edx-terms-service"
}
} }
}""" }"""
......
...@@ -187,16 +187,6 @@ class UpdateExampleCertificateViewTest(TestCase): ...@@ -187,16 +187,6 @@ class UpdateExampleCertificateViewTest(TestCase):
self.assertEqual(content['return_code'], 0) self.assertEqual(content['return_code'], 0)
def fakemicrosite(name, default=None):
"""
This is a test mocking function to return a microsite configuration
"""
if name == 'microsite_config_key':
return 'test_microsite'
else:
return default
@attr('shard_1') @attr('shard_1')
class MicrositeCertificatesViewsTests(ModuleStoreTestCase): class MicrositeCertificatesViewsTests(ModuleStoreTestCase):
""" """
...@@ -270,7 +260,6 @@ class MicrositeCertificatesViewsTests(ModuleStoreTestCase): ...@@ -270,7 +260,6 @@ class MicrositeCertificatesViewsTests(ModuleStoreTestCase):
self.course.save() self.course.save()
self.store.update_item(self.course, self.user.id) self.store.update_item(self.course, self.user.id)
@patch("microsite_configuration.microsite.get_value", fakemicrosite)
@override_settings(FEATURES=FEATURES_WITH_CERTS_ENABLED) @override_settings(FEATURES=FEATURES_WITH_CERTS_ENABLED)
def test_html_view_for_microsite(self): def test_html_view_for_microsite(self):
test_configuration_string = """{ test_configuration_string = """{
...@@ -285,18 +274,20 @@ class MicrositeCertificatesViewsTests(ModuleStoreTestCase): ...@@ -285,18 +274,20 @@ class MicrositeCertificatesViewsTests(ModuleStoreTestCase):
"logo_src": "/static/certificates/images/logo-edx.svg", "logo_src": "/static/certificates/images/logo-edx.svg",
"logo_url": "http://www.edx.org" "logo_url": "http://www.edx.org"
}, },
"test_microsite": { "microsites": {
"accomplishment_class_append": "accomplishment-certificate", "testmicrosite": {
"platform_name": "platform_microsite", "accomplishment_class_append": "accomplishment-certificate",
"company_about_url": "http://www.microsite.org/about-us", "platform_name": "platform_microsite",
"company_privacy_url": "http://www.microsite.org/edx-privacy-policy", "company_about_url": "http://www.microsite.org/about-us",
"company_tos_url": "http://www.microsite.org/microsite-terms-service", "company_privacy_url": "http://www.microsite.org/edx-privacy-policy",
"company_verified_certificate_url": "http://www.microsite.org/verified-certificate", "company_tos_url": "http://www.microsite.org/microsite-terms-service",
"document_stylesheet_url_application": "/static/certificates/sass/main-ltr.css", "company_verified_certificate_url": "http://www.microsite.org/verified-certificate",
"logo_src": "/static/certificates/images/logo-microsite.svg", "document_stylesheet_url_application": "/static/certificates/sass/main-ltr.css",
"logo_url": "http://www.microsite.org", "logo_src": "/static/certificates/images/logo-microsite.svg",
"company_about_description": "This is special microsite aware company_about_description content", "logo_url": "http://www.microsite.org",
"company_about_title": "Microsite title" "company_about_description": "This is special microsite aware company_about_description content",
"company_about_title": "Microsite title"
}
}, },
"honor": { "honor": {
"certificate_type": "Honor Code" "certificate_type": "Honor Code"
...@@ -310,13 +301,12 @@ class MicrositeCertificatesViewsTests(ModuleStoreTestCase): ...@@ -310,13 +301,12 @@ class MicrositeCertificatesViewsTests(ModuleStoreTestCase):
course_id=unicode(self.course.id) course_id=unicode(self.course.id)
) )
self._add_course_certificates(count=1, signatory_count=2) self._add_course_certificates(count=1, signatory_count=2)
response = self.client.get(test_url) response = self.client.get(test_url, HTTP_HOST=settings.MICROSITE_TEST_HOSTNAME)
self.assertIn('platform_microsite', response.content) self.assertIn('platform_microsite', response.content)
self.assertIn('http://www.microsite.org', response.content) self.assertIn('http://www.microsite.org', response.content)
self.assertIn('This is special microsite aware company_about_description content', response.content) self.assertIn('This is special microsite aware company_about_description content', response.content)
self.assertIn('Microsite title', response.content) self.assertIn('Microsite title', response.content)
@patch("microsite_configuration.microsite.get_value", fakemicrosite)
@override_settings(FEATURES=FEATURES_WITH_CERTS_ENABLED) @override_settings(FEATURES=FEATURES_WITH_CERTS_ENABLED)
def test_html_view_microsite_configuration_missing(self): def test_html_view_microsite_configuration_missing(self):
test_configuration_string = """{ test_configuration_string = """{
...@@ -343,7 +333,7 @@ class MicrositeCertificatesViewsTests(ModuleStoreTestCase): ...@@ -343,7 +333,7 @@ class MicrositeCertificatesViewsTests(ModuleStoreTestCase):
course_id=unicode(self.course.id) course_id=unicode(self.course.id)
) )
self._add_course_certificates(count=1, signatory_count=2) self._add_course_certificates(count=1, signatory_count=2)
response = self.client.get(test_url) response = self.client.get(test_url, HTTP_HOST=settings.MICROSITE_TEST_HOSTNAME)
self.assertIn('edX', response.content) self.assertIn('edX', response.content)
self.assertNotIn('platform_microsite', response.content) self.assertNotIn('platform_microsite', response.content)
self.assertNotIn('http://www.microsite.org', response.content) self.assertNotIn('http://www.microsite.org', response.content)
......
...@@ -23,7 +23,6 @@ from xmodule.modulestore.tests.django_utils import ModuleStoreTestCase ...@@ -23,7 +23,6 @@ from xmodule.modulestore.tests.django_utils import ModuleStoreTestCase
from certificates.api import get_certificate_url from certificates.api import get_certificate_url
from certificates.models import ( from certificates.models import (
GeneratedCertificate, GeneratedCertificate,
BadgeAssertion,
CertificateStatuses, CertificateStatuses,
CertificateSocialNetworks, CertificateSocialNetworks,
CertificateTemplate, CertificateTemplate,
...@@ -33,6 +32,7 @@ from certificates.models import ( ...@@ -33,6 +32,7 @@ from certificates.models import (
from certificates.tests.factories import ( from certificates.tests.factories import (
CertificateHtmlViewConfigurationFactory, CertificateHtmlViewConfigurationFactory,
LinkedInAddToProfileConfigurationFactory, LinkedInAddToProfileConfigurationFactory,
BadgeAssertionFactory,
) )
from util import organizations_helpers as organizations_api from util import organizations_helpers as organizations_api
from django.test.client import RequestFactory from django.test.client import RequestFactory
...@@ -222,6 +222,104 @@ class CertificatesViewsTests(ModuleStoreTestCase, EventTrackingTestCase): ...@@ -222,6 +222,104 @@ class CertificatesViewsTests(ModuleStoreTestCase, EventTrackingTestCase):
self.assertIn('logo_test1.png', response.content) self.assertIn('logo_test1.png', response.content)
@override_settings(FEATURES=FEATURES_WITH_CERTS_ENABLED) @override_settings(FEATURES=FEATURES_WITH_CERTS_ENABLED)
@patch.dict("django.conf.settings.SOCIAL_SHARING_SETTINGS", {
"CERTIFICATE_TWITTER": True,
"CERTIFICATE_FACEBOOK": True,
})
def test_rendering_maximum_data(self):
"""
Tests at least one data item from different context update methods to
make sure every context update method is invoked while rendering certificate template.
"""
long_org_name = 'Long org name'
short_org_name = 'short_org_name'
test_organization_data = {
'name': long_org_name,
'short_name': short_org_name,
'description': 'Test Organization Description',
'active': True,
'logo': '/logo_test1.png'
}
test_org = organizations_api.add_organization(organization_data=test_organization_data)
organizations_api.add_organization_course(organization_data=test_org, course_id=unicode(self.course.id))
self._add_course_certificates(count=1, signatory_count=1, is_active=True)
BadgeAssertionFactory.create(
user=self.user, course_id=self.course_id,
)
self.course.cert_html_view_overrides = {
"logo_src": "/static/certificates/images/course_override_logo.png"
}
self.course.save()
self.store.update_item(self.course, self.user.id)
test_url = get_certificate_url(
user_id=self.user.id,
course_id=unicode(self.course.id)
)
response = self.client.get(test_url, HTTP_HOST=settings.MICROSITE_TEST_HOSTNAME)
# Test an item from basic info
self.assertIn(
'Terms of Service & Honor Code',
response.content
)
self.assertIn(
'Certificate ID Number',
response.content
)
# Test an item from html cert configuration
self.assertIn(
'<a class="logo" href="http://www.edx.org/honor_logo.png">',
response.content
)
# Test an item from course info
self.assertIn(
'course_title_0',
response.content
)
# Test an item from user info
self.assertIn(
"{fullname}, you've earned a certificate!".format(fullname=self.user.profile.name),
response.content
)
# Test an item from social info
self.assertIn(
"Post on Facebook",
response.content
)
self.assertIn(
"Share on Twitter",
response.content
)
# Test an item from certificate/org info
self.assertIn(
"a course of study offered by {partner_short_name}, "
"an online learning initiative of {partner_long_name} "
"through {platform_name}.".format(
partner_short_name=short_org_name,
partner_long_name=long_org_name,
platform_name='Test Microsite'
),
response.content
)
# Test item from badge info
self.assertIn(
"Add to Mozilla Backpack",
response.content
)
# Test item from microsite info
self.assertIn(
"http://www.testmicrosite.org/about-us",
response.content
)
# Test course overrides
self.assertIn(
"/static/certificates/images/course_override_logo.png",
response.content
)
@override_settings(FEATURES=FEATURES_WITH_CERTS_ENABLED)
def test_render_html_view_valid_certificate(self): def test_render_html_view_valid_certificate(self):
test_url = get_certificate_url( test_url = get_certificate_url(
user_id=self.user.id, user_id=self.user.id,
...@@ -398,7 +496,7 @@ class CertificatesViewsTests(ModuleStoreTestCase, EventTrackingTestCase): ...@@ -398,7 +496,7 @@ class CertificatesViewsTests(ModuleStoreTestCase, EventTrackingTestCase):
course_id=unicode(self.course.id) course_id=unicode(self.course.id)
) )
response = self.client.get(test_url + '?preview=honor') response = self.client.get(test_url + '?preview=honor')
#accessing certificate web view in preview mode without # accessing certificate web view in preview mode without
# staff or instructor access should show invalid certificate # staff or instructor access should show invalid certificate
self.assertIn('Cannot Find Certificate', response.content) self.assertIn('Cannot Find Certificate', response.content)
...@@ -495,16 +593,9 @@ class CertificatesViewsTests(ModuleStoreTestCase, EventTrackingTestCase): ...@@ -495,16 +593,9 @@ class CertificatesViewsTests(ModuleStoreTestCase, EventTrackingTestCase):
test_url = '{}?evidence_visit=1'.format(cert_url) test_url = '{}?evidence_visit=1'.format(cert_url)
self._add_course_certificates(count=1, signatory_count=2) self._add_course_certificates(count=1, signatory_count=2)
self.recreate_tracker() self.recreate_tracker()
assertion = BadgeAssertion( assertion = BadgeAssertionFactory.create(
user=self.user, course_id=self.course_id, mode='honor', user=self.user, course_id=self.course_id,
data={
'image': 'http://www.example.com/image.png',
'json': {'id': 'http://www.example.com/assertion.json'},
'issuer': 'http://www.example.com/issuer.json',
}
) )
assertion.save()
response = self.client.get(test_url) response = self.client.get(test_url)
self.assertEqual(response.status_code, 200) self.assertEqual(response.status_code, 200)
assert_event_matches( assert_event_matches(
......
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