"""Unit tests for ows-royalties requests.""" from unittest.mock import patch import httpx from owsclient.test import OwsClientMock from commit_ledger_account_contract.ows_royalties import ( SERVICE, get_exchange_rates_by_statement_period, ) @patch('commit_ledger_account_contract.ows_royalties.raise_service_error') def test_get_exchange_rates_success( mock_raise_service_error, mock_exchange_rates, ows_client_mock: OwsClientMock, ): """Test successfully getting exchange_rates by statement_period.""" statement_period_id = 300 ows_client_mock.get( SERVICE, f'/statement-period/{statement_period_id}/bulk-exchange-rates', ).mock(return_value=httpx.Response(200, json=mock_exchange_rates)) res = get_exchange_rates_by_statement_period(statement_period_id) assert res == mock_exchange_rates mock_raise_service_error.assert_not_called() @patch('commit_ledger_account_contract.ows_royalties.raise_service_error') def test_get_exchange_rates_failure( mock_raise_service_error, ows_client_mock: OwsClientMock, ): """Test failure getting exchange_rates by statement_period.""" statement_period_id = 300 path = f'/statement-period/{statement_period_id}/bulk-exchange-rates' ows_client_mock.get( SERVICE, path, ).mock(return_value=httpx.Response(404, json={'message': 'nope'})) get_exchange_rates_by_statement_period(statement_period_id) mock_raise_service_error.assert_called_once_with(f'ERROR in GET {path}', SERVICE)