"""Tests for ows-product model.""" from unittest.mock import MagicMock, patch import pytest from collaborator.constants import error, service_name from collaborator.models.ows import ows_product from collaborator.utils.error import OwsError @pytest.fixture(autouse=True) def clear_cache_after_each(): """Clear cache after each test.""" yield ows_product.get_product.cache_clear() @patch("collaborator.models.ows.ows_product.request") def test_get_product(mock_request): """Test getting a product by id.""" product_id = 2726295 product = { "context_type": "digital", "deletions": "N", "distribution_format_id": 1, "not_for_distribution": "N", "product_id": 2726295, "product_name": "Stuck on the Wall", "product_type_id": 1, "project_id": 4266228, "release_date": "2019-11-08", "status": "in_content", "subaccount_id": 0, "upc": 194491547684, "vendor_id": 7482, } mock_response = MagicMock() mock_response.status_code = 200 mock_response.json.return_value = product mock_response.text = "content" mock_request.get.return_value = mock_response result = ows_product.get_product(product_id) assert result == product mock_request.get.assert_called_with( service_name.OWS_PRODUCT, f"/product/{product_id}" ) @patch("collaborator.models.ows.ows_product.request") def test_get_product_fail(mock_request): """Test failing to get a product by id.""" mock_response = MagicMock() mock_response.status_code = 500 mock_response.json.return_value = dict( code=error.ERROR_CODE_OWS_PRODUCT, message="Some error" ) mock_request.get.return_value = mock_response with pytest.raises(OwsError) as err: ows_product.get_product(2726295) assert err.value.code == error.ERROR_CODE_OWS_PRODUCT assert err.value.message == "Some error" assert err.value.status == 500