Skip to content

Commit

Permalink
testing: unit tests for canvas, blackboard and cornerstone for learne…
Browse files Browse the repository at this point in the history
…r exporter
  • Loading branch information
justEhmadSaeed committed Dec 21, 2023
1 parent fe1db64 commit 13cd893
Show file tree
Hide file tree
Showing 4 changed files with 118 additions and 1 deletion.
2 changes: 1 addition & 1 deletion integrated_channels/canvas/exporters/learner_data.py
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ def get_learner_data_records(
course_id=course_id,
).first()
if learner_transmission_record is None:
CanvasLearnerDataTransmissionAudit(
learner_transmission_record = CanvasLearnerDataTransmissionAudit(
enterprise_course_enrollment_id=enterprise_enrollment.id,
canvas_user_email=enterprise_customer_user.user_email,
user_email=enterprise_customer_user.user_email,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
"""
Tests for Blackboard learner data exporters.
"""

import unittest
from unittest import mock

from pytest import mark

from integrated_channels.blackboard.exporters.learner_data import BlackboardLearnerExporter
from test_utils import factories


@mark.django_db
class TestBlackboardLearnerDataExporter(unittest.TestCase):
"""
Test BlackboardLearnerDataExporter
"""

def setUp(self):
super().setUp()
self.enterprise_customer = factories.EnterpriseCustomerFactory()
self.enterprise_customer_user = factories.EnterpriseCustomerUserFactory(
enterprise_customer=self.enterprise_customer,
)
self.course_id = 'course-v1:edX+DemoX+DemoCourse'
self.course_key = 'edX+DemoX'
self.config = factories.BlackboardEnterpriseCustomerConfigurationFactory(
enterprise_customer=self.enterprise_customer,
blackboard_base_url='foobar',
client_id='client_id',
client_secret='client_secret',
refresh_token='token',
)

@mock.patch('enterprise.api_client.discovery.CourseCatalogApiServiceClient')
def test_retrieve_same_learner_data_record(self, mock_course_catalog_api):
"""
If a learner data record already exists for the enrollment, it should be retrieved instead of created.
"""
enterprise_course_enrollment = factories.EnterpriseCourseEnrollmentFactory(
course_id=self.course_id,
enterprise_customer_user=self.enterprise_customer_user,
)
mock_course_catalog_api.return_value.get_course_id.return_value = self.course_key
exporter = BlackboardLearnerExporter('fake-user', self.config)
learner_data_records_1 = exporter.get_learner_data_records(enterprise_course_enrollment)[0]
learner_data_records_1.save()
learner_data_records_2 = exporter.get_learner_data_records(enterprise_course_enrollment)[0]
learner_data_records_2.save()

assert learner_data_records_1.id == learner_data_records_2.id
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
"""
Tests for Canvas learner data exporters.
"""

import unittest
from unittest import mock

from pytest import mark

from integrated_channels.canvas.exporters.learner_data import CanvasLearnerExporter
from test_utils import factories


@mark.django_db
class TestCanvasLearnerDataExporter(unittest.TestCase):
"""
Test CanvasLearnerDataExporter
"""

def setUp(self):
super().setUp()
self.user = factories.UserFactory(id=1, email='example@email.com')
self.enterprise_customer = factories.EnterpriseCustomerFactory()
self.enterprise_customer_user = factories.EnterpriseCustomerUserFactory(
user_id=self.user.id,
enterprise_customer=self.enterprise_customer,
)
self.course_id = 'course-v1:edX+DemoX+DemoCourse'
self.course_key = 'edX+DemoX'
self.config = factories.CanvasEnterpriseCustomerConfigurationFactory(
enterprise_customer=self.enterprise_customer,
canvas_base_url='foobar',
)

@mock.patch('enterprise.api_client.discovery.CourseCatalogApiServiceClient')
def test_retrieve_same_learner_data_record(self, mock_course_catalog_api):
"""
If a learner data record already exists for the enrollment, it should be retrieved instead of created.
"""
enterprise_course_enrollment = factories.EnterpriseCourseEnrollmentFactory(
course_id=self.course_id,
enterprise_customer_user=self.enterprise_customer_user,
)
mock_course_catalog_api.return_value.get_course_id.return_value = self.course_key
exporter = CanvasLearnerExporter('fake-user', self.config)
learner_data_records_1 = exporter.get_learner_data_records(enterprise_course_enrollment)[0]
learner_data_records_1.save()
learner_data_records_2 = exporter.get_learner_data_records(enterprise_course_enrollment)[0]
learner_data_records_2.save()

assert learner_data_records_1.id == learner_data_records_2.id
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,20 @@ def test_get_learner_data_record(self, completed_date):
self.NOW if completed_date is not None else None
)

@mock.patch('enterprise.api_client.discovery.CourseCatalogApiServiceClient')
def test_retrieve_same_learner_data_record(self, mock_course_catalog_api):
"""
If a learner data record already exists for the enrollment, it should be retrieved instead of created.
"""
mock_course_catalog_api.return_value.get_course_id.return_value = self.course_key
exporter = CornerstoneLearnerExporter('fake-user', self.config)
learner_data_records_1 = exporter.get_learner_data_records(self.enterprise_course_enrollment)[0]
learner_data_records_1.save()
learner_data_records_2 = exporter.get_learner_data_records(self.enterprise_course_enrollment)[0]
learner_data_records_2.save()

assert learner_data_records_1.id == learner_data_records_2.id

def test_get_learner_data_record_not_exist(self):
"""
If learner data is not already exist, nothing is returned.
Expand Down

0 comments on commit 13cd893

Please sign in to comment.