"""Tests for ows-royalties Model.""" import pytest from unittest.mock import MagicMock, patch from src.utils import constants from src.models import ows_royalties import config @patch('src.models.ows_royalties.requests.process') def test_get_all_active_contract_mechanical_deductions_success( mock_process, mock_get_all_active_contract_mechanical_deductions_response, ): """Test successful GET request for all active contract mechanical deductions.""" mock_response = MagicMock() mock_response.status_code = 200 mock_response.json.return_value = mock_get_all_active_contract_mechanical_deductions_response mock_process.return_value = mock_response result = ows_royalties.get_all_active_contract_mechanical_deductions() assert result == mock_get_all_active_contract_mechanical_deductions_response mock_process.assert_called_once_with( application=config.APPLICATION_NAME, environment=config.ENVIRONMENT, method='GET', service_name=constants.OWS_ROYALTIES, path='/contracts/mechanical-deductions/active' ) @patch('src.models.ows_royalties.requests.process') def test_get_all_active_contract_mechanical_deductions_api_error(mock_process): """Test Royalties API returns non-200 response and raises Exception.""" mock_response = MagicMock() mock_response.status_code = 400 mock_response.text = '{"code": "error", "message": "Invalid date format. Expected YYYY-MM-DD."}' mock_process.return_value = mock_response with pytest.raises(Exception, match=r'Royalties API error 400'): ows_royalties.get_all_active_contract_mechanical_deductions() @patch('src.models.ows_royalties.requests.process') def test_get_all_active_contract_mechanical_deductions_exception(mock_process): """Test GET request for all active contract mechanical deductions when an exception occurs.""" mock_process.side_effect = Exception('error') with pytest.raises(Exception, match='error'): ows_royalties.get_all_active_contract_mechanical_deductions()