Skip to content

Commit

Permalink
fix: return empty dict if no customer results
Browse files Browse the repository at this point in the history
  • Loading branch information
iloveagent57 committed Feb 26, 2025
1 parent f460eb0 commit 2f57a07
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 5 deletions.
6 changes: 4 additions & 2 deletions enterprise_access/apps/api_client/lms_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -100,8 +100,10 @@ def get_enterprise_customer_data(self, enterprise_customer_uuid=None, enterprise
response = self.client.get(endpoint, timeout=settings.LMS_CLIENT_TIMEOUT)
response.raise_for_status()
payload = response.json()
if results := payload.get('results'):
return results[0]
if 'count' in payload:
if results := payload.get('results'):
return results[0]
return {}
return payload
except requests.exceptions.HTTPError as exc:
logger.exception(exc)
Expand Down
41 changes: 38 additions & 3 deletions enterprise_access/apps/api_client/tests/test_lms_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -140,9 +140,11 @@ def test_get_enterprise_customer_data(
'uuid': 'some-uuid',
'slug': 'some-test-slug',
}
mock_json.return_value = mock_enterprise_customer
if not enterprise_uuid and enterprise_slug:
mock_json.return_value = {'results': [mock_enterprise_customer]}
if enterprise_uuid:
mock_json.return_value = mock_enterprise_customer
else:
mock_json.return_value = {'results': [mock_enterprise_customer], 'count': 1}

mock_oauth_client.return_value.get.return_value = requests.Response()
mock_oauth_client.return_value.get.return_value.status_code = 200

Expand Down Expand Up @@ -174,6 +176,39 @@ def test_get_enterprise_customer_data(
timeout=settings.LMS_CLIENT_TIMEOUT,
)

@mock.patch('requests.Response.json')
@mock.patch('enterprise_access.apps.api_client.base_oauth.OAuthAPIClient')
def test_get_enterprise_customer_data_no_hits(
self,
mock_oauth_client,
mock_json,
):
"""
Verify client returns empty dict if no results when filtering by slug.
"""
mock_json.return_value = {'results': [], 'count': 0}

mock_oauth_client.return_value.get.return_value = requests.Response()
mock_oauth_client.return_value.get.return_value.status_code = 200

client = LmsApiClient()
customer_data = client.get_enterprise_customer_data(
enterprise_customer_slug='nuthin',
)

self.assertEqual(customer_data, {})

expected_url = (
'http://edx-platform.example.com/'
'enterprise/api/v1/'
'enterprise-customer/'
'?slug=nuthin'
)
mock_oauth_client.return_value.get.assert_called_with(
expected_url,
timeout=settings.LMS_CLIENT_TIMEOUT,
)

@mock.patch('requests.Response.json')
@mock.patch('enterprise_access.apps.api_client.base_oauth.OAuthAPIClient')
def test_create_enterprise_customer_data(self, mock_oauth_client, mock_json):
Expand Down

0 comments on commit 2f57a07

Please sign in to comment.