"""Test ows-ledger requests.""" from unittest.mock import patch import httpx from owsclient.test import OwsClientMock from reserves_schedule.ows_ledger import bulk_create_ledger_release_schedule from reserves_schedule.ows_ledger import get_reserve_taken_entries_by_accounting_run @patch('reserves_schedule.ows_ledger.error_handling.raise_service_error') @patch('reserves_schedule.ows_ledger.app_logger') def test_bulk_create_ledger_release_schedule( mock_logger, mock_raise_service_error, mock_ledger_release_schedule_body, ows_client_mock: OwsClientMock ): """Test successfully bulk creating ledger release schedule entries.""" ows_client_mock.post( 'ows-ledger', '/ledger-reserve-release-schedule/bulk', json=mock_ledger_release_schedule_body, ).mock( return_value=httpx.Response( 201, json={'message': 'OK'} ) ) res = bulk_create_ledger_release_schedule(mock_ledger_release_schedule_body) assert res mock_logger.error.assert_not_called() mock_raise_service_error.assert_not_called() @patch('reserves_schedule.ows_ledger.error_handling.raise_service_error') @patch('reserves_schedule.ows_ledger.app_logger') def test_bulk_create_ledger_release_schedule_failure( mock_logger, mock_raise_service_error, mock_ledger_release_schedule_body, ows_client_mock: OwsClientMock ): """Test failure bulk creating ledger release schedule entries.""" ows_client_mock.post( 'ows-ledger', '/ledger-reserve-release-schedule/bulk', json=mock_ledger_release_schedule_body, ).mock( return_value=httpx.Response( 400, json={'error': 'error'} ) ) res = bulk_create_ledger_release_schedule(mock_ledger_release_schedule_body) assert res is None assert mock_logger.error.call_count == 2 mock_raise_service_error.assert_called_once_with( 'ERROR in POST /ledger-reserve-release-schedule/bulk', 'ows-ledger' ) @patch('reserves_schedule.ows_ledger.error_handling.raise_service_error') @patch('reserves_schedule.ows_ledger.app_logger') def test_get_reserve_taken_entries_by_accounting_run( mock_logger, mock_raise_service_error, mock_ledger_reserve_taken_entries, ows_client_mock: OwsClientMock ): """Test successfully get ledger reserve taken entries.""" accounting_run_id = 1 ows_client_mock.get( 'ows-ledger', f'/ledger-reserve-taken/accounting-run/{accounting_run_id}' ).mock( return_value=httpx.Response( 200, json=mock_ledger_reserve_taken_entries ) ) res = get_reserve_taken_entries_by_accounting_run(accounting_run_id) assert res == mock_ledger_reserve_taken_entries mock_logger.error.assert_not_called() mock_raise_service_error.assert_not_called() @patch('reserves_schedule.ows_ledger.error_handling.raise_service_error') @patch('reserves_schedule.ows_ledger.app_logger') def test_get_reserve_taken_entries_by_accounting_run_failure( mock_logger, mock_raise_service_error, ows_client_mock: OwsClientMock ): """Test failure bulk creating ledger release schedule entries.""" accounting_run_id = 1 ows_client_mock.get( 'ows-ledger', f'/ledger-reserve-taken/accounting-run/{accounting_run_id}' ).mock( return_value=httpx.Response( 404, json={'error': 'error'} ) ) res = get_reserve_taken_entries_by_accounting_run( accounting_run_id, limit=10, offset=0) assert res is None mock_logger.error.assert_called_once_with( "ows-ledger error response: {'error': 'error'}" ) mock_raise_service_error.assert_called_once_with( 'ERROR in GET /ledger-reserve-taken/accounting-run/1?limit=10&offset=0', 'ows-ledger' )