test_create_fake_cert.py 1.98 KB
Newer Older
1 2
"""Tests for the create_fake_certs management command. """
from django.core.management.base import CommandError
3
from django.test import TestCase
4
from nose.plugins.attrib import attr
5
from opaque_keys.edx.locator import CourseLocator
6

7 8
from certificates.management.commands import create_fake_cert
from certificates.models import GeneratedCertificate
9
from student.tests.factories import UserFactory
10 11


12
@attr(shard=1)
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
class CreateFakeCertTest(TestCase):
    """Tests for the create_fake_certs management command. """

    USERNAME = "test"
    COURSE_KEY = CourseLocator(org='edX', course='DemoX', run='Demo_Course')

    def setUp(self):
        super(CreateFakeCertTest, self).setUp()
        self.user = UserFactory.create(username=self.USERNAME)

    def test_create_fake_cert(self):
        # No existing cert, so create it
        self._run_command(
            self.USERNAME,
            unicode(self.COURSE_KEY),
            cert_mode='verified',
            grade='0.89'
        )
31
        cert = GeneratedCertificate.eligible_certificates.get(user=self.user, course_id=self.COURSE_KEY)
32 33 34 35 36 37 38 39 40 41 42 43
        self.assertEqual(cert.status, 'downloadable')
        self.assertEqual(cert.mode, 'verified')
        self.assertEqual(cert.grade, '0.89')
        self.assertEqual(cert.download_uuid, 'test')
        self.assertEqual(cert.download_url, 'http://www.example.com')

        # Cert already exists; modify it
        self._run_command(
            self.USERNAME,
            unicode(self.COURSE_KEY),
            cert_mode='honor'
        )
44
        cert = GeneratedCertificate.eligible_certificates.get(user=self.user, course_id=self.COURSE_KEY)
45 46 47 48 49 50 51 52 53 54
        self.assertEqual(cert.mode, 'honor')

    def test_too_few_args(self):
        with self.assertRaisesRegexp(CommandError, 'Usage'):
            self._run_command(self.USERNAME)

    def _run_command(self, *args, **kwargs):
        """Run the management command to generate a fake cert. """
        command = create_fake_cert.Command()
        return command.handle(*args, **kwargs)