-
Notifications
You must be signed in to change notification settings - Fork 11
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat: Management command for EnterpriseLearnerEnrollment dummy data (#…
…289)
- Loading branch information
1 parent
0b720ed
commit 46b6319
Showing
6 changed files
with
194 additions
and
6 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
58 changes: 58 additions & 0 deletions
58
enterprise_data/management/commands/create_enterprise_learner_enrollment_lpr_v1.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,58 @@ | ||
""" | ||
Management command for creating enterprise learner enrollments | ||
""" | ||
|
||
|
||
import sys | ||
|
||
from django.core.management.base import BaseCommand, CommandError | ||
|
||
import enterprise_data.tests.test_utils | ||
|
||
|
||
class Command(BaseCommand): | ||
""" Management command for creating dummy `EnterpriseLearnerEnrollment` instances for (LPR) V1.""" | ||
|
||
help = 'Creates an EnterpriseLearnerEnrollment with randomized attributes' | ||
|
||
def add_arguments(self, parser): | ||
parser.add_argument( | ||
'enterprise_customer_uuid', | ||
type=str, | ||
help='UUID for an enterprise' | ||
) | ||
parser.add_argument( | ||
'enterprise_user_id', | ||
type=int, | ||
default=None, | ||
help='enterprise_user_id for an enterprise_user' | ||
) | ||
# this is optional and will be marked as False if not available in argumnets. | ||
parser.add_argument('--consent_granted', action='store_true') | ||
|
||
def handle(self, *args, **options): | ||
enterprise_customer_uuid = options['enterprise_customer_uuid'] | ||
enterprise_user_id = options.get('enterprise_user_id') | ||
is_consent_granted = options.get('consent_granted') | ||
|
||
try: | ||
enterprise_data.tests.test_utils.EnterpriseLearnerEnrollmentFactory( | ||
enterprise_customer_uuid=enterprise_customer_uuid, | ||
enterprise_user_id=enterprise_user_id, | ||
is_consent_granted=is_consent_granted, | ||
) | ||
info = ( | ||
'\nCreated EnterpriseLearnerEnrollment with enterprise_customer_uuid ' | ||
'{} for EnterpriseUser with enterprise_user_id of {} and consent {}\n\n'.format( | ||
enterprise_customer_uuid, | ||
enterprise_user_id, | ||
is_consent_granted, | ||
) | ||
) | ||
sys.stdout.write(info) | ||
except Exception as exc: | ||
info = ( | ||
'Error trying to create EnterpriseUser with uuid ' | ||
'{}: {}'.format(enterprise_customer_uuid, exc) | ||
) | ||
raise CommandError(info) from exc |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
81 changes: 81 additions & 0 deletions
81
...rprise_data/management/commands/tests/test_create_enterprise_learner_enrollment_lpr_v1.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,81 @@ | ||
""" | ||
Tests for create_enterprise_learner_enrollment_lpr_v1 management command | ||
""" | ||
from unittest import TestCase, mock | ||
|
||
from pytest import mark | ||
|
||
from django.core.management import call_command | ||
|
||
from enterprise_data.models import EnterpriseLearner, EnterpriseLearnerEnrollment | ||
from enterprise_data.tests.test_utils import EnterpriseLearnerFactory | ||
|
||
|
||
@mark.django_db | ||
class TestCreateEnterpriseLearnerEnrollmentCommand(TestCase): | ||
""" Tests for create_enterprise_learner_enrollment_lpr_v1 management command""" | ||
|
||
def setUp(self): | ||
super().setUp() | ||
self.uuid = 'a'*32 | ||
self.enterprise_user = EnterpriseLearnerFactory(enterprise_customer_uuid=self.uuid) | ||
|
||
def test_create_enterprise_learner_enrollment_lpr_v1_with_dsc_disabled(self): | ||
""" | ||
Management command should successfully be able to create EnterpriseLearnerEnrollment with DSC Disabled | ||
""" | ||
assert EnterpriseLearner.objects.count() == 1 | ||
assert EnterpriseLearnerEnrollment.objects.count() == 0 | ||
|
||
args = [self.uuid, self.enterprise_user.enterprise_user_id] | ||
call_command('create_enterprise_learner_enrollment_lpr_v1', *args) | ||
|
||
assert EnterpriseLearnerEnrollment.objects.count() == 1 | ||
enterprise_learner_enrollment = EnterpriseLearnerEnrollment.objects.filter( | ||
enterprise_customer_uuid=args[0] | ||
) | ||
assert enterprise_learner_enrollment.count() == 1 | ||
assert enterprise_learner_enrollment[0].progress_status is not None | ||
assert enterprise_learner_enrollment[0].letter_grade is not None | ||
assert enterprise_learner_enrollment[0].enterprise_user_id is not None | ||
assert enterprise_learner_enrollment[0].user_username is not None | ||
assert enterprise_learner_enrollment[0].user_email is not None | ||
assert enterprise_learner_enrollment[0].enterprise_user is not None | ||
|
||
def test_create_enterprise_learner_enrollment_lpr_v1_with_dsc_enabled(self): | ||
""" | ||
Management command should successfully be able to create EnterpriseLearnerEnrollment with DSC enabled | ||
""" | ||
assert EnterpriseLearner.objects.count() == 1 | ||
assert EnterpriseLearnerEnrollment.objects.count() == 0 | ||
|
||
args = [self.uuid, self.enterprise_user.enterprise_user_id, '--consent_granted'] | ||
call_command('create_enterprise_learner_enrollment_lpr_v1', *args) | ||
|
||
assert EnterpriseLearnerEnrollment.objects.count() == 1 | ||
enterprise_learner_enrollment = EnterpriseLearnerEnrollment.objects.filter( | ||
enterprise_customer_uuid=args[0] | ||
) | ||
assert enterprise_learner_enrollment.count() == 1 | ||
assert enterprise_learner_enrollment[0].letter_grade is None | ||
assert enterprise_learner_enrollment[0].last_activity_date is None | ||
assert enterprise_learner_enrollment[0].progress_status is None | ||
assert enterprise_learner_enrollment[0].enterprise_user_id is None | ||
assert enterprise_learner_enrollment[0].user_username is None | ||
assert enterprise_learner_enrollment[0].enterprise_user is None | ||
assert enterprise_learner_enrollment[0].user_email is None | ||
assert EnterpriseLearner.objects.count() == 1 | ||
|
||
def test_create_enterprise_learner_enrollment_lpr_v1_error(self): | ||
""" | ||
Management command will not create enrollment if an error is thrown | ||
""" | ||
assert EnterpriseLearnerEnrollment.objects.count() == 0 | ||
|
||
args = [self.uuid, self.enterprise_user.enterprise_user_id] | ||
with mock.patch('enterprise_data.tests.test_utils.EnterpriseLearnerEnrollmentFactory') as mock_factory: | ||
mock_factory.side_effect = [Exception] | ||
with self.assertRaises(Exception): | ||
call_command('create_enterprise_learner_enrollment_lpr_v1', *args) | ||
|
||
assert EnterpriseLearnerEnrollment.objects.count() == 0 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters