Skip to content

Commit

Permalink
fix: ensure correct admin_users in EnterpriseCustomerUserViewSet resp…
Browse files Browse the repository at this point in the history
…onse
  • Loading branch information
adamstankiewicz committed Nov 14, 2024
1 parent b5f2126 commit d825d49
Show file tree
Hide file tree
Showing 4 changed files with 50 additions and 2 deletions.
4 changes: 4 additions & 0 deletions CHANGELOG.rst
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,10 @@ Unreleased
----------
* nothing unreleased

[4.32.2]
--------
* fix: ensure admin_users in EnterpriseCustomerUserViewSet is correct.

[4.32.1]
--------
* feat: enable search filter on learner data transmission audit admin views for all integrated channels.
Expand Down
2 changes: 1 addition & 1 deletion enterprise/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@
Your project description goes here.
"""

__version__ = "4.32.1"
__version__ = "4.32.2"
15 changes: 14 additions & 1 deletion enterprise/api/v1/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -721,12 +721,25 @@ class Meta:
)

user = UserSerializer()
enterprise_customer = EnterpriseCustomerSerializer()
data_sharing_consent_records = serializers.SerializerMethodField()
groups = serializers.SerializerMethodField()
role_assignments = serializers.SerializerMethodField()
enterprise_group = serializers.SerializerMethodField()

def to_representation(self, instance):
"""
Override to pass the instance of `enterprise_customer` to the nested serializer.
"""
representation = super().to_representation(instance)
enterprise_customer_instance = instance.enterprise_customer
enterprise_customer_serializer = EnterpriseCustomerSerializer(
instance=enterprise_customer_instance,
context=self.context
)
representation['enterprise_customer'] = enterprise_customer_serializer.data

return representation

def _get_role_assignments_by_ecu_id(self, enterprise_customer_users):
"""
Get enterprise role assignments for each enterprise customer user.
Expand Down
31 changes: 31 additions & 0 deletions tests/test_enterprise/api/test_views.py
Original file line number Diff line number Diff line change
Expand Up @@ -555,6 +555,37 @@ def test_get_enterprise_customer_user_contains_features(self):
response = self.load_json(response.content)
assert response['enterprise_features'] is not None

def test_get_enterprise_customer_user_contains_admin_users(self):
"""
Assert whether the paginated response contains `enterprise_customer.admin_users`.
"""
user = factories.UserFactory()
enterprise_customer = factories.EnterpriseCustomerFactory(uuid=FAKE_UUIDS[0])
factories.EnterpriseCustomerUserFactory(
user_id=user.id,
enterprise_customer=enterprise_customer
)
admin_user = factories.UserFactory()
SystemWideEnterpriseUserRoleAssignment.objects.create(
role=admin_role(),
user=admin_user,
enterprise_customer=enterprise_customer
)
response = self.client.get(
'{host}{path}?username={username}'.format(
host=settings.TEST_SERVER,
path=ENTERPRISE_LEARNER_LIST_ENDPOINT,
username=user.username
)
)
response = self.load_json(response.content)
assert response['results'][0]['enterprise_customer']['admin_users'] == [
{
'email': admin_user.email,
'lms_user_id': admin_user.id,
}
]

def test_get_enterprise_customer_user_contains_consent_records(self):
user = factories.UserFactory()
enterprise_customer = factories.EnterpriseCustomerFactory(uuid=FAKE_UUIDS[0])
Expand Down

0 comments on commit d825d49

Please sign in to comment.