Skip to content

Commit d4fc8d8

Browse files
committed
Refactor to reduce code complexity and increase test coverage
1 parent ae429d1 commit d4fc8d8

File tree

2 files changed

+23
-7
lines changed

2 files changed

+23
-7
lines changed

ils_middleware/tasks/sinopia/metadata_check.py

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import rdflib
66
import requests # type: ignore
77

8-
from typing import Optional
8+
from typing import Optional, Union
99

1010
logger = logging.getLogger(__name__)
1111

@@ -33,6 +33,16 @@ def _query_for_ils_info(graph_jsonld: str, uri: str) -> dict:
3333
return output
3434

3535

36+
def _get_relationships(resource_uri: str) -> Union[list, None]:
37+
result = requests.get(f"{resource_uri}/relationships")
38+
if result.status_code > 399:
39+
msg = f"Failed to retrieve {resource_uri}: {result.status_code}\n{result.text}"
40+
logging.error(msg)
41+
return None
42+
43+
return result.json().get("sinopiaHasLocalAdminMetadataInferredRefs")
44+
45+
3646
def _get_retrieve_metadata_resource(uri: str) -> Optional[dict]:
3747
"""Retrieves AdminMetadata resource and extracts any ILS identifiers"""
3848
metadata_result = requests.get(uri)
@@ -76,13 +86,10 @@ def _retrieve_all_resource_refs(
7686
if target_resource_id:
7787
retrieved_resources[resource_uri] = [{default_ils: target_resource_id}]
7888
continue
79-
result = requests.get(f"{resource_uri}/relationships")
80-
if result.status_code > 399:
81-
msg = f"Failed to retrieve {resource_uri}: {result.status_code}\n{result.text}"
82-
logging.error(msg)
83-
continue
8489

85-
metadata_uris = result.json().get("sinopiaHasLocalAdminMetadataInferredRefs")
90+
metadata_uris = _get_relationships(resource_uri)
91+
if metadata_uris is None:
92+
continue
8693

8794
ils_info = _retrieve_all_metadata(metadata_uris)
8895
if ils_info:

tests/tasks/sinopia/test_metadata_check.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
from ils_middleware.tasks.sinopia.metadata_check import (
1717
existing_metadata_check,
1818
_get_retrieve_metadata_resource,
19+
_get_relationships,
1920
_retrieve_all_metadata,
2021
)
2122

@@ -184,3 +185,11 @@ def test_dups_in_retrieve_all_metadata(mock_requests):
184185
)
185186

186187
assert result == [{"SIRSI": "13704749"}]
188+
189+
190+
def test_get_relationships_no_resource(mock_requests, caplog):
191+
missing_result = _get_relationships("https://sinopia.io/resource/no-resource")
192+
assert missing_result is None
193+
assert (
194+
"Failed to retrieve https://sinopia.io/resource/no-resource: 401" in caplog.text
195+
)

0 commit comments

Comments
 (0)