Python3 Update
Added future absolute_import Changed unicode() with six.text_type()
This commit is contained in:
@@ -1,22 +1,23 @@
|
||||
"""Tests for the certificates Python API. """
|
||||
from __future__ import absolute_import
|
||||
|
||||
import uuid
|
||||
from contextlib import contextmanager
|
||||
from functools import wraps
|
||||
from datetime import datetime, timedelta
|
||||
|
||||
import ddt
|
||||
from datetime import datetime
|
||||
from datetime import timedelta
|
||||
import pytz
|
||||
import six
|
||||
from config_models.models import cache
|
||||
from django.conf import settings
|
||||
from django.urls import reverse
|
||||
from django.test import RequestFactory, TestCase
|
||||
from django.test.utils import override_settings
|
||||
from django.urls import reverse
|
||||
from django.utils import timezone
|
||||
from freezegun import freeze_time
|
||||
from mock import patch
|
||||
from opaque_keys.edx.keys import CourseKey
|
||||
from opaque_keys.edx.locator import CourseLocator
|
||||
import pytz
|
||||
|
||||
from course_modes.models import CourseMode
|
||||
from course_modes.tests.factories import CourseModeFactory
|
||||
@@ -476,7 +477,7 @@ class CertificateGetTests(SharedModuleStoreTestCase):
|
||||
'certificates:html_view',
|
||||
kwargs={
|
||||
"user_id": str(self.student.id),
|
||||
"course_id": unicode(self.web_cert_course.id),
|
||||
"course_id": six.text_type(self.web_cert_course.id),
|
||||
}
|
||||
)
|
||||
|
||||
@@ -546,7 +547,7 @@ class GenerateUserCertificatesTest(EventTestMixin, WebCertificateTestMixin, Modu
|
||||
self.assert_event_emitted(
|
||||
'edx.certificate.created',
|
||||
user_id=self.student.id,
|
||||
course_id=unicode(self.course.id),
|
||||
course_id=six.text_type(self.course.id),
|
||||
certificate_url=certs_api.get_certificate_url(self.student.id, self.course.id),
|
||||
certificate_id=cert.verify_uuid,
|
||||
enrollment_mode=cert.mode,
|
||||
@@ -637,7 +638,7 @@ class CertificateGenerationEnabledTest(EventTestMixin, TestCase):
|
||||
event_name = '.'.join(['edx', 'certificate', 'generation', cert_event_type])
|
||||
self.assert_event_emitted(
|
||||
event_name,
|
||||
course_id=unicode(self.COURSE_KEY),
|
||||
course_id=six.text_type(self.COURSE_KEY),
|
||||
)
|
||||
|
||||
self._assert_enabled_for_course(self.COURSE_KEY, expect_enabled)
|
||||
@@ -762,7 +763,7 @@ class CertificatesBrandingTest(TestCase):
|
||||
|
||||
# Make sure there are not unexpected keys in dict returned by 'get_certificate_header_context'
|
||||
self.assertItemsEqual(
|
||||
data.keys(),
|
||||
list(data.keys()),
|
||||
['logo_src', 'logo_url']
|
||||
)
|
||||
self.assertIn(
|
||||
@@ -787,7 +788,7 @@ class CertificatesBrandingTest(TestCase):
|
||||
|
||||
# Make sure there are not unexpected keys in dict returned by 'get_certificate_footer_context'
|
||||
self.assertItemsEqual(
|
||||
data.keys(),
|
||||
list(data.keys()),
|
||||
['company_about_url', 'company_privacy_url', 'company_tos_url']
|
||||
)
|
||||
self.assertIn(
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
"""Tests for the resubmit_error_certificates management command. """
|
||||
from __future__ import absolute_import
|
||||
|
||||
import ddt
|
||||
from django.core.management import call_command
|
||||
from django.core.management.base import CommandError
|
||||
@@ -6,12 +8,13 @@ from django.test.utils import override_settings
|
||||
from mock import patch
|
||||
from opaque_keys.edx.locator import CourseLocator
|
||||
from six import text_type
|
||||
from six.moves import range
|
||||
|
||||
from badges.events.course_complete import get_completion_badge
|
||||
from badges.models import BadgeAssertion
|
||||
from badges.tests.factories import BadgeAssertionFactory, CourseCompleteImageConfigurationFactory
|
||||
from lms.djangoapps.certificates.models import CertificateStatuses, GeneratedCertificate
|
||||
from course_modes.models import CourseMode
|
||||
from lms.djangoapps.certificates.models import CertificateStatuses, GeneratedCertificate
|
||||
from lms.djangoapps.grades.tests.utils import mock_passing_grade
|
||||
from student.tests.factories import CourseEnrollmentFactory, UserFactory
|
||||
from xmodule.modulestore.tests.django_utils import ModuleStoreTestCase
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
"""Tests for certificate Django models. """
|
||||
from __future__ import absolute_import
|
||||
|
||||
import json
|
||||
|
||||
import ddt
|
||||
@@ -7,7 +9,7 @@ from django.core.exceptions import ValidationError
|
||||
from django.core.files.uploadedfile import SimpleUploadedFile
|
||||
from django.test import TestCase
|
||||
from django.test.utils import override_settings
|
||||
from opaque_keys.edx.locator import CourseLocator, CourseKey
|
||||
from opaque_keys.edx.locator import CourseKey, CourseLocator
|
||||
from path import Path as path
|
||||
|
||||
from lms.djangoapps.certificates.models import (
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
"""
|
||||
Unit Tests for the Certificate service
|
||||
"""
|
||||
from __future__ import absolute_import
|
||||
|
||||
from lms.djangoapps.certificates.models import CertificateStatuses, GeneratedCertificate
|
||||
from lms.djangoapps.certificates.services import CertificateService
|
||||
from lms.djangoapps.certificates.tests.factories import GeneratedCertificateFactory
|
||||
|
||||
@@ -2,17 +2,20 @@
|
||||
Unit tests for enabling self-generated certificates for self-paced courses
|
||||
and disabling for instructor-paced courses.
|
||||
"""
|
||||
from __future__ import absolute_import
|
||||
|
||||
import ddt
|
||||
import mock
|
||||
import six
|
||||
|
||||
from lms.djangoapps.certificates import api as certs_api
|
||||
from lms.djangoapps.certificates.models import (
|
||||
CertificateGenerationConfiguration,
|
||||
CertificateWhitelist,
|
||||
GeneratedCertificate,
|
||||
CertificateStatuses,
|
||||
CertificateWhitelist,
|
||||
GeneratedCertificate
|
||||
)
|
||||
from lms.djangoapps.certificates.signals import fire_ungenerated_certificate_task, CERTIFICATE_DELAY_SECONDS
|
||||
from lms.djangoapps.certificates.signals import CERTIFICATE_DELAY_SECONDS, fire_ungenerated_certificate_task
|
||||
from lms.djangoapps.grades.course_grade_factory import CourseGradeFactory
|
||||
from lms.djangoapps.grades.tests.utils import mock_passing_grade
|
||||
from lms.djangoapps.verify_student.models import IDVerificationAttempt, SoftwareSecurePhotoVerification
|
||||
@@ -95,8 +98,8 @@ class WhitelistGeneratedCertificatesTest(ModuleStoreTestCase):
|
||||
mock_generate_certificate_apply_async.assert_called_with(
|
||||
countdown=CERTIFICATE_DELAY_SECONDS,
|
||||
kwargs={
|
||||
'student': unicode(self.user.id),
|
||||
'course_key': unicode(self.course.id),
|
||||
'student': six.text_type(self.user.id),
|
||||
'course_key': six.text_type(self.course.id),
|
||||
}
|
||||
)
|
||||
|
||||
@@ -123,8 +126,8 @@ class WhitelistGeneratedCertificatesTest(ModuleStoreTestCase):
|
||||
mock_generate_certificate_apply_async.assert_called_with(
|
||||
countdown=CERTIFICATE_DELAY_SECONDS,
|
||||
kwargs={
|
||||
'student': unicode(self.user.id),
|
||||
'course_key': unicode(self.ip_course.id),
|
||||
'student': six.text_type(self.user.id),
|
||||
'course_key': six.text_type(self.ip_course.id),
|
||||
}
|
||||
)
|
||||
|
||||
@@ -175,8 +178,8 @@ class PassingGradeCertsTest(ModuleStoreTestCase):
|
||||
mock_generate_certificate_apply_async.assert_called_with(
|
||||
countdown=CERTIFICATE_DELAY_SECONDS,
|
||||
kwargs={
|
||||
'student': unicode(self.user.id),
|
||||
'course_key': unicode(self.course.id),
|
||||
'student': six.text_type(self.user.id),
|
||||
'course_key': six.text_type(self.course.id),
|
||||
}
|
||||
)
|
||||
|
||||
@@ -196,8 +199,8 @@ class PassingGradeCertsTest(ModuleStoreTestCase):
|
||||
mock_generate_certificate_apply_async.assert_called_with(
|
||||
countdown=CERTIFICATE_DELAY_SECONDS,
|
||||
kwargs={
|
||||
'student': unicode(self.user.id),
|
||||
'course_key': unicode(self.ip_course.id),
|
||||
'student': six.text_type(self.user.id),
|
||||
'course_key': six.text_type(self.ip_course.id),
|
||||
}
|
||||
)
|
||||
|
||||
@@ -319,8 +322,8 @@ class LearnerTrackChangeCertsTest(ModuleStoreTestCase):
|
||||
mock_generate_certificate_apply_async.assert_called_with(
|
||||
countdown=CERTIFICATE_DELAY_SECONDS,
|
||||
kwargs={
|
||||
'student': unicode(self.user_one.id),
|
||||
'course_key': unicode(self.course_one.id),
|
||||
'student': six.text_type(self.user_one.id),
|
||||
'course_key': six.text_type(self.course_one.id),
|
||||
'expected_verification_status': IDVerificationAttempt.STATUS.approved,
|
||||
}
|
||||
)
|
||||
@@ -340,8 +343,8 @@ class LearnerTrackChangeCertsTest(ModuleStoreTestCase):
|
||||
mock_generate_certificate_apply_async.assert_called_with(
|
||||
countdown=CERTIFICATE_DELAY_SECONDS,
|
||||
kwargs={
|
||||
'student': unicode(self.user_two.id),
|
||||
'course_key': unicode(self.course_two.id),
|
||||
'student': six.text_type(self.user_two.id),
|
||||
'course_key': six.text_type(self.course_two.id),
|
||||
'expected_verification_status': IDVerificationAttempt.STATUS.approved,
|
||||
}
|
||||
)
|
||||
|
||||
@@ -2,12 +2,15 @@
|
||||
Tests for certificate app views used by the support team.
|
||||
"""
|
||||
|
||||
from __future__ import absolute_import
|
||||
|
||||
import json
|
||||
|
||||
import ddt
|
||||
import six
|
||||
from django.conf import settings
|
||||
from django.urls import reverse
|
||||
from django.test.utils import override_settings
|
||||
from django.urls import reverse
|
||||
from opaque_keys.edx.keys import CourseKey
|
||||
|
||||
from lms.djangoapps.certificates.models import CertificateInvalidation, CertificateStatuses, GeneratedCertificate
|
||||
@@ -157,8 +160,10 @@ class CertificateSearchTests(CertificateSupportTestCase):
|
||||
("bar@example.com", False),
|
||||
("", False),
|
||||
(CertificateSupportTestCase.STUDENT_USERNAME, False, 'invalid_key'),
|
||||
(CertificateSupportTestCase.STUDENT_USERNAME, False, unicode(CertificateSupportTestCase.COURSE_NOT_EXIST_KEY)),
|
||||
(CertificateSupportTestCase.STUDENT_USERNAME, True, unicode(CertificateSupportTestCase.EXISTED_COURSE_KEY_1)),
|
||||
(CertificateSupportTestCase.STUDENT_USERNAME, False,
|
||||
six.text_type(CertificateSupportTestCase.COURSE_NOT_EXIST_KEY)),
|
||||
(CertificateSupportTestCase.STUDENT_USERNAME, True,
|
||||
six.text_type(CertificateSupportTestCase.EXISTED_COURSE_KEY_1)),
|
||||
)
|
||||
@ddt.unpack
|
||||
def test_search(self, user_filter, expect_result, course_filter=None):
|
||||
@@ -194,10 +199,10 @@ class CertificateSearchTests(CertificateSupportTestCase):
|
||||
retrieved_cert = results[0]
|
||||
|
||||
self.assertEqual(retrieved_cert["username"], self.STUDENT_USERNAME)
|
||||
self.assertEqual(retrieved_cert["course_key"], unicode(self.CERT_COURSE_KEY))
|
||||
self.assertEqual(retrieved_cert["course_key"], six.text_type(self.CERT_COURSE_KEY))
|
||||
self.assertEqual(retrieved_cert["created"], self.cert.created_date.isoformat())
|
||||
self.assertEqual(retrieved_cert["modified"], self.cert.modified_date.isoformat())
|
||||
self.assertEqual(retrieved_cert["grade"], unicode(self.CERT_GRADE))
|
||||
self.assertEqual(retrieved_cert["grade"], six.text_type(self.CERT_GRADE))
|
||||
self.assertEqual(retrieved_cert["status"], self.CERT_STATUS)
|
||||
self.assertEqual(retrieved_cert["type"], self.CERT_MODE)
|
||||
self.assertEqual(retrieved_cert["download_url"], self.CERT_DOWNLOAD_URL)
|
||||
@@ -305,7 +310,7 @@ class CertificateRegenerateTests(CertificateSupportTestCase):
|
||||
|
||||
def test_regenerate_no_such_user(self):
|
||||
response = self._regenerate(
|
||||
course_key=unicode(self.CERT_COURSE_KEY),
|
||||
course_key=six.text_type(self.CERT_COURSE_KEY),
|
||||
username="invalid_username",
|
||||
)
|
||||
self.assertEqual(response.status_code, 400)
|
||||
@@ -481,7 +486,7 @@ class CertificateGenerateTests(CertificateSupportTestCase):
|
||||
|
||||
def test_generate_no_such_user(self):
|
||||
response = self._generate(
|
||||
course_key=unicode(self.EXISTED_COURSE_KEY_2),
|
||||
course_key=six.text_type(self.EXISTED_COURSE_KEY_2),
|
||||
username="invalid_username",
|
||||
)
|
||||
self.assertEqual(response.status_code, 400)
|
||||
|
||||
@@ -1,3 +1,9 @@
|
||||
"""
|
||||
Test module for user certificate generation.
|
||||
"""
|
||||
|
||||
from __future__ import absolute_import
|
||||
|
||||
import ddt
|
||||
from django.test import TestCase
|
||||
from mock import call, patch
|
||||
|
||||
@@ -1,16 +1,20 @@
|
||||
"""Tests for certificates views. """
|
||||
|
||||
from __future__ import absolute_import
|
||||
|
||||
import datetime
|
||||
import json
|
||||
from uuid import uuid4
|
||||
|
||||
import ddt
|
||||
import datetime
|
||||
import six
|
||||
from django.conf import settings
|
||||
from django.core.cache import cache
|
||||
from django.urls import reverse
|
||||
from django.test.client import Client
|
||||
from django.test.utils import override_settings
|
||||
from django.urls import reverse
|
||||
from opaque_keys.edx.locator import CourseLocator
|
||||
from six.moves import range
|
||||
|
||||
from lms.djangoapps.certificates.api import get_certificate_url
|
||||
from lms.djangoapps.certificates.models import (
|
||||
@@ -255,7 +259,7 @@ class CertificatesViewsSiteTests(ModuleStoreTestCase):
|
||||
'organization': 'Signatory_Organization ' + str(i),
|
||||
'signature_image_path': '/static/certificates/images/demo-sig{}.png'.format(i),
|
||||
'id': i,
|
||||
} for i in xrange(signatory_count)
|
||||
} for i in range(signatory_count)
|
||||
|
||||
]
|
||||
|
||||
@@ -268,7 +272,7 @@ class CertificatesViewsSiteTests(ModuleStoreTestCase):
|
||||
'signatories': signatories,
|
||||
'version': 1,
|
||||
'is_active': is_active
|
||||
} for i in xrange(count)
|
||||
} for i in range(count)
|
||||
]
|
||||
|
||||
self.course.certificates = {'certificates': certificates}
|
||||
@@ -281,7 +285,7 @@ class CertificatesViewsSiteTests(ModuleStoreTestCase):
|
||||
def test_html_view_for_site(self):
|
||||
test_url = get_certificate_url(
|
||||
user_id=self.user.id,
|
||||
course_id=unicode(self.course.id)
|
||||
course_id=six.text_type(self.course.id)
|
||||
)
|
||||
self._add_course_certificates(count=1, signatory_count=2)
|
||||
response = self.client.get(test_url)
|
||||
@@ -293,7 +297,7 @@ class CertificatesViewsSiteTests(ModuleStoreTestCase):
|
||||
def test_html_view_site_configuration_missing(self):
|
||||
test_url = get_certificate_url(
|
||||
user_id=self.user.id,
|
||||
course_id=unicode(self.course.id)
|
||||
course_id=six.text_type(self.course.id)
|
||||
)
|
||||
self._add_course_certificates(count=1, signatory_count=2)
|
||||
response = self.client.get(test_url)
|
||||
|
||||
@@ -1,12 +1,16 @@
|
||||
"""
|
||||
Tests for the certificates models.
|
||||
"""
|
||||
from __future__ import absolute_import
|
||||
|
||||
from datetime import datetime, timedelta
|
||||
|
||||
import six
|
||||
from ddt import data, ddt, unpack
|
||||
from pytz import UTC
|
||||
from django.conf import settings
|
||||
from milestones.tests.utils import MilestonesTestCaseMixin
|
||||
from mock import patch
|
||||
from pytz import UTC
|
||||
|
||||
from badges.tests.factories import CourseCompleteImageConfigurationFactory
|
||||
from lms.djangoapps.certificates.models import (
|
||||
@@ -194,9 +198,9 @@ class CertificatesModelTest(ModuleStoreTestCase, MilestonesTestCaseMixin):
|
||||
course = CourseFactory.create(org='edx', number='998', display_name='Test Course')
|
||||
pre_requisite_course = CourseFactory.create(org='edx', number='999', display_name='Pre requisite Course')
|
||||
# set pre-requisite course
|
||||
set_prerequisite_courses(course.id, [unicode(pre_requisite_course.id)])
|
||||
set_prerequisite_courses(course.id, [six.text_type(pre_requisite_course.id)])
|
||||
# get milestones collected by user before completing the pre-requisite course
|
||||
completed_milestones = milestones_achieved_by_user(student, unicode(pre_requisite_course.id))
|
||||
completed_milestones = milestones_achieved_by_user(student, six.text_type(pre_requisite_course.id))
|
||||
self.assertEqual(len(completed_milestones), 0)
|
||||
|
||||
GeneratedCertificateFactory.create(
|
||||
@@ -206,9 +210,9 @@ class CertificatesModelTest(ModuleStoreTestCase, MilestonesTestCaseMixin):
|
||||
mode='verified'
|
||||
)
|
||||
# get milestones collected by user after user has completed the pre-requisite course
|
||||
completed_milestones = milestones_achieved_by_user(student, unicode(pre_requisite_course.id))
|
||||
completed_milestones = milestones_achieved_by_user(student, six.text_type(pre_requisite_course.id))
|
||||
self.assertEqual(len(completed_milestones), 1)
|
||||
self.assertEqual(completed_milestones[0]['namespace'], unicode(pre_requisite_course.id))
|
||||
self.assertEqual(completed_milestones[0]['namespace'], six.text_type(pre_requisite_course.id))
|
||||
|
||||
@patch.dict(settings.FEATURES, {'ENABLE_OPENBADGES': True})
|
||||
@patch('badges.backends.badgr.BadgrBackend', spec=True)
|
||||
|
||||
Reference in New Issue
Block a user