from unittest import mock import pytest from owsclient import OwsClient from pytest_mock import MockerFixture from src.ows_track import get_tracks_for_product def test_get_tracks_for_product(mocker: MockerFixture) -> None: mock_ows_client = mocker.patch( "src.ows_clients.ows_client", side_effect=["get"], ) product_ids = [1, 2] get_tracks_for_product(mock_ows_client, product_ids) product_ids_str = ",".join(list(map(str, product_ids))) assert mock_ows_client.get.call_count == 1 assert mock_ows_client.mock_calls == [ mock.call.get( "ows-track", f"/tracks-bulk?product_ids={product_ids_str}", ), ] @mock.patch("src.ows_clients.ows_client") def test_get_tracks_for_product_exception(mock_ows_client: OwsClient) -> None: with mock.patch("src.ows_clients.ows_client.get") as mock_get: product_ids = [123, 456] mock_get.side_effect = Exception("Request failed") with pytest.raises(Exception) as exc: get_tracks_for_product(mock_ows_client, product_ids) assert str(exc.value) == "Request failed"