From eef3b6553591e561a43e3c6d4db45a3dcad89605 Mon Sep 17 00:00:00 2001 From: usama sadiq Date: Mon, 8 Jul 2019 18:51:37 +0500 Subject: [PATCH] Python3 Update Added future absolute_import Changed unicode() with six.text_type() --- lms/djangoapps/certificates/tests/test_api.py | 21 ++++++------ .../tests/test_cert_management.py | 5 ++- .../certificates/tests/test_models.py | 4 ++- .../certificates/tests/test_services.py | 2 ++ .../certificates/tests/test_signals.py | 33 ++++++++++--------- .../certificates/tests/test_support_views.py | 19 +++++++---- .../certificates/tests/test_tasks.py | 6 ++++ .../certificates/tests/test_views.py | 16 +++++---- lms/djangoapps/certificates/tests/tests.py | 14 +++++--- 9 files changed, 75 insertions(+), 45 deletions(-) diff --git a/lms/djangoapps/certificates/tests/test_api.py b/lms/djangoapps/certificates/tests/test_api.py index 4dcfeae175..69a6ad9c76 100644 --- a/lms/djangoapps/certificates/tests/test_api.py +++ b/lms/djangoapps/certificates/tests/test_api.py @@ -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( diff --git a/lms/djangoapps/certificates/tests/test_cert_management.py b/lms/djangoapps/certificates/tests/test_cert_management.py index 4fef69f08f..61f22ffe92 100644 --- a/lms/djangoapps/certificates/tests/test_cert_management.py +++ b/lms/djangoapps/certificates/tests/test_cert_management.py @@ -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 diff --git a/lms/djangoapps/certificates/tests/test_models.py b/lms/djangoapps/certificates/tests/test_models.py index 3998403911..cecd3d1cae 100644 --- a/lms/djangoapps/certificates/tests/test_models.py +++ b/lms/djangoapps/certificates/tests/test_models.py @@ -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 ( diff --git a/lms/djangoapps/certificates/tests/test_services.py b/lms/djangoapps/certificates/tests/test_services.py index a6e51e43aa..50d4a3b155 100644 --- a/lms/djangoapps/certificates/tests/test_services.py +++ b/lms/djangoapps/certificates/tests/test_services.py @@ -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 diff --git a/lms/djangoapps/certificates/tests/test_signals.py b/lms/djangoapps/certificates/tests/test_signals.py index 7beb27ada9..596a4caf6f 100644 --- a/lms/djangoapps/certificates/tests/test_signals.py +++ b/lms/djangoapps/certificates/tests/test_signals.py @@ -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, } ) diff --git a/lms/djangoapps/certificates/tests/test_support_views.py b/lms/djangoapps/certificates/tests/test_support_views.py index 5565ee2fec..5ba4e51309 100644 --- a/lms/djangoapps/certificates/tests/test_support_views.py +++ b/lms/djangoapps/certificates/tests/test_support_views.py @@ -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) diff --git a/lms/djangoapps/certificates/tests/test_tasks.py b/lms/djangoapps/certificates/tests/test_tasks.py index 7111e27a50..438485f9fa 100644 --- a/lms/djangoapps/certificates/tests/test_tasks.py +++ b/lms/djangoapps/certificates/tests/test_tasks.py @@ -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 diff --git a/lms/djangoapps/certificates/tests/test_views.py b/lms/djangoapps/certificates/tests/test_views.py index c118090f95..db9e43d117 100644 --- a/lms/djangoapps/certificates/tests/test_views.py +++ b/lms/djangoapps/certificates/tests/test_views.py @@ -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) diff --git a/lms/djangoapps/certificates/tests/tests.py b/lms/djangoapps/certificates/tests/tests.py index 655d691f43..a415b20aa1 100644 --- a/lms/djangoapps/certificates/tests/tests.py +++ b/lms/djangoapps/certificates/tests/tests.py @@ -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)