"""Tests for ows_product model.""" from unittest.mock import MagicMock import pytest import requests from src.constants.urls import OWS_PRODUCT_ERROR from src.models import ows_product def test_get_product_document(mocker, product_document_fixture): """Test get product info from ows-product successfully.""" mocker.patch( "requests.get", return_value=MagicMock( spec=requests.models.Response, status_code=200, json=lambda: product_document_fixture ), ) result = ows_product.get_product_document(55555) assert result == product_document_fixture def test_get_product_document_not_found(mocker, ows_not_found_response): """Test get product document from ows-product not found.""" mocker.patch("requests.get", return_value=ows_not_found_response) result = ows_product.get_product_document(55555) assert result == {} def test_get_product_document_error(mocker, ows_error_response): """Test get product document from ows-product error.""" mocker.patch("requests.get", return_value=ows_error_response) with pytest.raises(Exception, match=OWS_PRODUCT_ERROR): ows_product.get_product_document(55555) def test_get_release_info( mocker, release_info_success_response, test_release_id, get_release_info_fixture ): """Test get release info from ows-product successfully.""" mocker.patch("requests.get", return_value=release_info_success_response) result = ows_product.get_release_info(test_release_id) assert result == get_release_info_fixture def test_get_release_info_with_spatial( mocker, release_info_with_spatial_success_response, test_release_id, get_release_info_fixture ): """Test get release info from ows-product successfully.""" mocker.patch("requests.get", return_value=release_info_with_spatial_success_response) result = ows_product.get_release_info(test_release_id) assert result == { **get_release_info_fixture, "spatial_upc": 154558, "spatial_isrc_list": ["one", "two"], } def test_get_release_info_not_found( mocker, ows_not_found_response, test_release_id, get_release_info_not_found_fixture ): """Test get release info from ows-product not found.""" mocker.patch("requests.get", return_value=ows_not_found_response) result = ows_product.get_release_info(test_release_id) assert result == get_release_info_not_found_fixture def test_get_release_info_empty_release_id( mocker, ows_not_found_response, get_release_info_not_found_fixture ): """Test get release info from ows-product not found.""" mocker.patch("requests.get", return_value=ows_not_found_response) result = ows_product.get_release_info(0) assert result == get_release_info_not_found_fixture def test_get_release_info_error(mocker, ows_error_response, test_release_id): """Test get release info from ows-product error.""" mocker.patch("requests.get", return_value=ows_error_response) with pytest.raises(Exception, match=OWS_PRODUCT_ERROR): ows_product.get_release_info(test_release_id)