"""Tests for ows-assets model.""" from unittest.mock import MagicMock import pytest from owsrequest import request from owsrequest.test_utils import MockOwsResponse from product_review.constants import error, services from product_review.models import ows_assets def test_validate_audio_success(mocker): """Test success response for audio validation.""" product_id = 123 mock_json = {"errorMsgs": []} mock_response = MockOwsResponse(200, mock_json) mocker.patch.object(request, "get", return_value=mock_response) result = ows_assets.validate_audio(product_id) request.get.assert_called_once_with( services.OWS_ASSETS, "/v2/validators/product/{}/audio".format(product_id), ) assert result == mock_json def test_validate_audio_failure(mocker): """Test failure response for audio validation.""" product_id = 123 mock_response = MockOwsResponse(500, "error") mocker.patch.object(request, "get", return_value=mock_response) with pytest.raises(Exception): ows_assets.validate_audio(product_id) request.get.assert_called_once_with( services.OWS_ASSETS, "/v2/validators/product/{}/audio".format(product_id), ) def test_apply_corrections_success(mocker): """Test apply corrections.""" product_id = 123 mock_json = {"token": "123", "product_id": product_id} mock_response = MockOwsResponse(200, mock_json) mocker.patch.object(request, "put", return_value=mock_response) result = ows_assets.apply_corrections(product_id) request.put.assert_called_once_with( services.OWS_ASSETS, "/v2/asset/product/{}/corrections/apply".format(product_id), ) assert result == mock_json def test_apply_corrections_not_found(mocker): """Test apply corrections returns none when not found.""" product_id = 123 mock_response = MagicMock(status_code=404) mock_response.json.return_value = {"message": error.ERROR_MESSAGE_NO_ROWS_UPDATED} mocker.patch.object(request, "put", return_value=mock_response) result = ows_assets.apply_corrections(product_id) request.put.assert_called_once_with( services.OWS_ASSETS, "/v2/asset/product/{}/corrections/apply".format(product_id), ) assert result is None def test_apply_corrections_failure(mocker): """Test apply corrections raises error on failure.""" product_id = 123 mock_response = MockOwsResponse(500, "error") mocker.patch.object(request, "put", return_value=mock_response) with pytest.raises(Exception): ows_assets.apply_corrections(product_id) request.put.assert_called_once_with( services.OWS_ASSETS, "/v2/asset/product/{}/corrections/apply".format(product_id), )