"""Test update product.""" from content_utils.exceptions import IneligibleEventError from owsclient import OwsClient import pytest from pytest_mock import MockerFixture from src.logic import update_product def test_update_product_success(mocker: MockerFixture): """Test update product success.""" mock_client = mocker.MagicMock(spec=OwsClient) mock_response = mocker.MagicMock() mock_response.status_code = 200 mock_client.put.return_value = mock_response mocker.patch.object(update_product, 'get_ows_client', return_value=mock_client) actual = update_product.call_update_endpoint(321, {}) mock_client.put.assert_called_once_with( 'ows-product-digital', '/product/audio/321', json={}, ) assert actual is None def test_update_product_not_found(mocker: MockerFixture): """Test update product not found.""" mock_client = mocker.MagicMock(spec=OwsClient) mock_response = mocker.MagicMock() mock_response.status_code = 404 mock_client.put.return_value = mock_response mocker.patch.object(update_product, 'get_ows_client', return_value=mock_client) with pytest.raises(IneligibleEventError) as e: update_product.call_update_endpoint(321, {}) assert e.value.args[0] == 'Release not found.' def test_update_product_error(mocker: MockerFixture): """Test update product not found.""" mock_client = mocker.MagicMock(spec=OwsClient) mock_response = mocker.MagicMock() mock_response.status_code = 500 mock_response.text = '{"code": "INTERNAL_SERVER_ERROR"}' mock_client.put.return_value = mock_response mocker.patch.object(update_product, 'get_ows_client', return_value=mock_client) with pytest.raises(Exception) as e: update_product.call_update_endpoint(321, {}) assert e.value.args[0] == 'Failed updating release.' assert e.value.args[1] == '{"code": "INTERNAL_SERVER_ERROR"}'