from unittest import TestCase

import ddt
from mock import patch

from lms.djangoapps.certificates.tasks import generate_certificate


@ddt.ddt
class GenerateUserCertificateTest(TestCase):
    @patch('lms.djangoapps.certificates.tasks.generate_user_certificates')
    def test_cert_task(self, generate_user_certs_mock):
        generate_certificate(student='a', course_key='b', otherarg='c', otherotherarg='d')
        generate_user_certs_mock.assert_called_with(student='a', course_key='b', otherarg='c', otherotherarg='d')

    @ddt.data('student', 'course_key')
    def test_cert_task_missing_args(self, missing_arg):
        kwargs = {'student': 'a', 'course_key': 'b', 'otherarg': 'c'}
        del kwargs[missing_arg]
        with self.assertRaisesRegexp(KeyError, missing_arg):
            generate_certificate(**kwargs)