diff --git a/changelog/204.bugfix.rst b/changelog/204.bugfix.rst new file mode 100644 index 00000000..e50d02f2 --- /dev/null +++ b/changelog/204.bugfix.rst @@ -0,0 +1 @@ +Catch empty return value from data search in `transfer_complete_datasets` and raise a ValueError telling the user what's happening. diff --git a/dkist/net/helpers.py b/dkist/net/helpers.py index ec1e851d..794e9485 100644 --- a/dkist/net/helpers.py +++ b/dkist/net/helpers.py @@ -21,7 +21,11 @@ def _get_dataset_inventory(dataset_id: str): # pragma: no cover """ Do a search for a single dataset id """ - return DKISTClient().search(Dataset(dataset_id)) + results = DKISTClient().search(Dataset(dataset_id)) + if len(results) == 0: + raise ValueError(f"No results available for dataset {dataset_id}") + + return results def transfer_complete_datasets(datasets: Union[str, QueryResponseRow, DKISTQueryResponseTable, UnifiedResponse], diff --git a/dkist/net/tests/test_helpers.py b/dkist/net/tests/test_helpers.py index 85218c85..9bec9600 100644 --- a/dkist/net/tests/test_helpers.py +++ b/dkist/net/tests/test_helpers.py @@ -44,6 +44,17 @@ def test_download_default_keywords(orchestrate_transfer_mock, keywords): ) +def test_transfer_unavailable_data(mocker): + get_inv_mock = mocker.patch( + "dkist.net.client.DKISTClient.search", + autospec=True, + return_value=[], + ) + + with pytest.raises(ValueError, match="No results available for dataset"): + transfer_complete_datasets("null") + + def test_transfer_from_dataset_id(mocker, orchestrate_transfer_mock): get_inv_mock = mocker.patch( "dkist.net.helpers._get_dataset_inventory",