Skip to content

Commit

Permalink
Merge pull request #290 from openedx/Muneeb/ENT-5008
Browse files Browse the repository at this point in the history
feat: add create_dummy_data command for LPR v1 and add tests
  • Loading branch information
muneebGH committed Mar 7, 2022
2 parents 46b6319 + 6ede25c commit 0273702
Show file tree
Hide file tree
Showing 5 changed files with 85 additions and 3 deletions.
4 changes: 4 additions & 0 deletions CHANGELOG.rst
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,10 @@ Unreleased
----------

=========================
[4.1.2] - 2022-03-06
---------------------
* Created a new management command for adding dummy EnterpriseLearner and EnterpriseLearnerEnrollment data for learner progress report v1.

[4.1.1] - 2022-03-01
---------------------
* Created a new management command for adding EnterpriseLearnerEnrollment dummy data for learner progress report v1.
Expand Down
2 changes: 1 addition & 1 deletion enterprise_data/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,6 @@
Enterprise data api application. This Django app exposes API endpoints used by enterprises.
"""

__version__ = "4.1.1"
__version__ = "4.1.2"

default_app_config = "enterprise_data.apps.EnterpriseDataAppConfig" # pylint: disable=invalid-name
43 changes: 43 additions & 0 deletions enterprise_data/management/commands/create_dummy_data_lpr_v1.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
"""
management command for creating enterprise enrollments in bulk
"""

from random import choice

from django.core.management.base import BaseCommand, CommandError

from enterprise_data.tests.test_utils import EnterpriseLearnerEnrollmentFactory, EnterpriseLearnerFactory


class Command(BaseCommand):
"""
management command class for creating enterprise enrollments in bulk for learner progress report (LPR) v1
"""
help = 'Creates 10 enterprise learners with 5 random enterprise learner enrollments each with random consent grants'

def add_arguments(self, parser):
parser.add_argument(
'enterprise_customer_uuid',
type=str,
help='UUID for an enterprise'
)

def handle(self, *args, **options):
enterprise_customer_uuid = options['enterprise_customer_uuid']
try:
for _ in range(10):
ent_user = EnterpriseLearnerFactory(
enterprise_customer_uuid=enterprise_customer_uuid
)
for _ in range(5):
EnterpriseLearnerEnrollmentFactory(
enterprise_customer_uuid=enterprise_customer_uuid,
enterprise_user_id=ent_user.enterprise_user_id,
is_consent_granted=choice([True, False]),
)
except Exception as exc:
info = (
'Error trying to create Enrollments for enterprise '
'{}: {}'.format(enterprise_customer_uuid, exc)
)
raise CommandError(info) from exc
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
"""
Tests for create_dummy_data_lpr_v1 management command
"""
import uuid
from unittest import TestCase

from pytest import mark

from django.core.management import call_command

from enterprise_data.models import EnterpriseLearner, EnterpriseLearnerEnrollment


@mark.django_db
class TestCreateEnterpriseLearnerCommand(TestCase):
"""
Tests to validate the behavior of `./manage.py create_dummy_data_lpr_v1` management command.
"""

def setUp(self):
super().setUp()
self.enterprise_customer_uuid = uuid.uuid4()

def test_create_enterprise_learners_with_enrollments(self):
"""
Management command should successfully be able to create 10 EnterpriseLearners with 5 enrollments each
"""
assert EnterpriseLearner.objects.count() == 0
assert EnterpriseLearnerEnrollment.objects.count() == 0

args = [self.enterprise_customer_uuid]
call_command('create_dummy_data_lpr_v1', *args)

assert EnterpriseLearner.objects.count() == 10
assert EnterpriseLearnerEnrollment.objects.count() == 50
4 changes: 2 additions & 2 deletions enterprise_data/tests/test_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,7 @@ class Meta:
lambda x: FAKER.random_int(min=1, max=999999) # pylint: disable=no-member
)
enterprise_enrollment_id = factory.lazy_attribute(
lambda x: FAKER.random_int(min=1, max=999999) # pylint: disable=no-member,invalid-name
lambda x: FAKER.random_int(min=1, max=999999) # pylint: disable=no-member
)
enterprise_customer_uuid = str(FAKER.uuid4()) # pylint: disable=no-member
courserun_key = factory.lazy_attribute(lambda x: FAKER.slug()) # pylint: disable=no-member
Expand All @@ -169,7 +169,7 @@ class Meta:
letter_grade = factory.lazy_attribute(lambda x: ' '.join(FAKER.words(nb=2)).title())
progress_status = factory.lazy_attribute(lambda x: ' '.join(FAKER.words(nb=2)).title())
enterprise_user_id = factory.lazy_attribute(
lambda x: FAKER.random_int(min=1, max=999999) # pylint: disable=no-member,invalid-name
lambda x: FAKER.random_int(min=1, max=999999) # pylint: disable=no-member
)
user_email = factory.lazy_attribute(lambda x: FAKER.email()) # pylint: disable=no-member
user_username = factory.Sequence('robot{}'.format) # pylint: disable=no-member
Expand Down

0 comments on commit 0273702

Please sign in to comment.