"""Test ows-royalties requests.""" from unittest.mock import MagicMock, patch import httpx from owsclient.test import OwsClientMock from adjustments_apply.ows_royalties import ( SERVICE, get_current_statement_period, get_exchange_rates_by_statement_period_id, get_statement_period_payment_entity_statuses, ) @patch('adjustments_apply.ows_royalties.raise_service_error') def test_get_exchange_rates_by_statement_period_id( mock_raise_service_error, mock_exchange_rates, ows_client_mock: OwsClientMock, ): """Test get exchange rates from ows-royalties. success case """ statement_period_id = 1 ows_client_mock.get( 'ows-royalties', 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_id(statement_period_id) assert res == mock_exchange_rates mock_raise_service_error.assert_not_called() @patch('adjustments_apply.ows_royalties.raise_service_error') def test_get_exchange_rates_by_statement_period_id_failure( mock_raise_service_error, mock_exchange_rates, ows_client_mock: OwsClientMock, ): """Test get exchange rates from ows-royalties. failure case """ statement_period_id = 1 ows_client_mock.get( 'ows-royalties', f'/statement-period/{statement_period_id}/bulk-exchange-rates', ).mock(return_value=httpx.Response(400)) res = get_exchange_rates_by_statement_period_id(statement_period_id) assert res is None mock_raise_service_error.assert_called_once_with( f'ERROR in GET /statement-period/{statement_period_id}/bulk-exchange-rates', 'ows-royalties', ) @patch('adjustments_apply.ows_royalties.raise_service_error') def test_get_current_statement_period( mock_raise_service_error, mock_current_statement_period, ows_client_mock: OwsClientMock, ): """Test to get current statement period.""" ows_client_mock.get( 'ows-royalties', '/statement-period/current', ).mock( return_value=httpx.Response( 200, json=mock_current_statement_period, ) ) res = get_current_statement_period() assert res == mock_current_statement_period mock_raise_service_error.assert_not_called() @patch('adjustments_apply.ows_royalties.raise_service_error') def test_get_current_statement_period_failure( mock_raise_service_error, mock_exchange_rates, ows_client_mock: OwsClientMock, ): """Test to get current statement period failed.""" ows_client_mock.get( 'ows-royalties', '/statement-period/current', ).mock( return_value=httpx.Response( 400, text='error', ) ) res = get_current_statement_period() assert res is None mock_raise_service_error.assert_called_once_with( 'ERROR in GET /statement-period/current', 'ows-royalties' ) @patch('adjustments_apply.ows_royalties.raise_service_error') @patch('adjustments_apply.ows_royalties.get') def test_get_statement_period_payment_entity_states_success( mock_get, mock_raise_service_error, mock_payment_entity_close_balance_statuses ): """Test successfully getting statement_period_payment_entity abacus_states.""" statement_period_id = 1 path = f'/statement-period/{statement_period_id}/payment-entities/states' mock_json_response = MagicMock( return_value=mock_payment_entity_close_balance_statuses ) mock_response = MagicMock(status_code=200, json=mock_json_response) mock_get.return_value = mock_response res = get_statement_period_payment_entity_statuses(statement_period_id) assert res == mock_payment_entity_close_balance_statuses mock_get.assert_called_once_with(SERVICE, path) mock_raise_service_error.assert_not_called() @patch('adjustments_apply.ows_royalties.raise_service_error') @patch('adjustments_apply.ows_royalties.get') def test_get_statement_period_payment_entity_states_failure( mock_get, mock_raise_service_error ): """Test when getting statement_period_payment_entity states fails.""" statement_period_id = 1 path = f'/statement-period/{statement_period_id}/payment-entities/states' mock_error_response = MagicMock(status_code=400) mock_get.return_value = mock_error_response res = get_statement_period_payment_entity_statuses(statement_period_id) assert res is None mock_get.assert_called_once_with(SERVICE, path) mock_raise_service_error.assert_called_once_with(f'ERROR in GET {path}', SERVICE)