Files
edx-platform/lms/djangoapps/certificates/tests/test_services.py
Feanil Patel 9cf2f9f298 Run 2to3 -f future . -w
This will remove imports from __future__ that are no longer needed.

https://docs.python.org/3.5/library/2to3.html#2to3fixer-future
2019-12-30 10:35:30 -05:00

64 lines
2.2 KiB
Python

"""
Unit Tests for the Certificate service
"""
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
}
)