Files
edx-platform/lms/djangoapps/certificates/tests/test_services.py
usama sadiq eef3b65535 Python3 Update
Added future absolute_import
Changed unicode() with six.text_type()
2019-07-08 19:41:58 +05:00

64 lines
2.2 KiB
Python

"""
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
from student.tests.factories import UserFactory
from xmodule.modulestore.tests.django_utils import ModuleStoreTestCase
from xmodule.modulestore.tests.factories import CourseFactory
class CertificateServiceTests(ModuleStoreTestCase):
"""
Tests for the Certificate service
"""
def setUp(self):
super(CertificateServiceTests, self).setUp()
self.service = CertificateService()
self.course = CourseFactory()
self.user = UserFactory()
self.user_id = self.user.id
self.course_id = self.course.id
GeneratedCertificateFactory.create(
status=CertificateStatuses.downloadable,
user=self.user,
course_id=self.course.id,
grade=1.0
)
def generated_certificate_to_dict(self, generated_certificate):
"""
Converts a Generated Certificate instance to a Python dictionary
"""
return {
'verify_uuid': generated_certificate.verify_uuid,
'download_uuid': generated_certificate.download_uuid,
'download_url': generated_certificate.download_url,
'grade': generated_certificate.grade,
'status': generated_certificate.status
}
def test_invalidate_certificate(self):
"""
Verify that CertificateService invalidates the user certificate
"""
self.service.invalidate_certificate(self.user_id, self.course_id)
invalid_generated_certificate = GeneratedCertificate.objects.get(
user=self.user_id,
course_id=self.course_id
)
self.assertDictEqual(
self.generated_certificate_to_dict(invalid_generated_certificate),
{
'verify_uuid': '',
'download_uuid': '',
'download_url': '',
'grade': '',
'status': CertificateStatuses.unavailable
}
)