"""Unit tests for ows-ledger service requests.""" from unittest.mock import patch import httpx from owsclient.test import OwsClientMock from reserves_release.ows_ledger import bulk_post_ledger_account from reserves_release.ows_ledger import bulk_post_ledger_release_reserve from reserves_release.ows_ledger import get_ledger_release_reserve_schedules @patch('reserves_release.ows_ledger.raise_service_error') def test_bulk_post_ledger_release_reserve_success( mock_raise_service_error, ows_client_mock: OwsClientMock, mock_ledger_release_reserve ): """Test successfully created ledger_release_reserve records.""" post_body = mock_ledger_release_reserve mock_response = mock_ledger_release_reserve ows_client_mock.post( 'ows-ledger', '/ledger-reserve-release/bulk/', json=post_body, ).mock( return_value=httpx.Response( 201, json=mock_response, ) ) res = bulk_post_ledger_release_reserve(post_body) assert res == mock_response mock_raise_service_error.assert_not_called() @patch('reserves_release.ows_ledger.raise_service_error') def test_bulk_post_ledger_release_reserve_failure( mock_raise_service_error, ows_client_mock: OwsClientMock, mock_ledger_release_reserve ): """Test failure creating ledger_release_reserve's.""" post_body = mock_ledger_release_reserve ows_client_mock.post( 'ows-ledger', '/ledger-reserve-release/bulk/', json=post_body, ).mock( return_value=httpx.Response( 400, json={'error': 'error'}, ) ) bulk_post_ledger_release_reserve(post_body) mock_raise_service_error.assert_called_once_with( 'ERROR in POST /ledger-reserve-release/bulk/', 'ows-ledger' ) @patch('reserves_release.ows_ledger.raise_service_error') def test_bulk_post_ledger_account_success( mock_raise_service_error, ows_client_mock: OwsClientMock, mock_ledger_account ): """Test successfully created ledger_account records.""" post_body = mock_ledger_account mock_response = mock_ledger_account ows_client_mock.post( 'ows-ledger', '/ledger/bulk/', json=post_body, ).mock( return_value=httpx.Response( 201, json=mock_response, ) ) res = bulk_post_ledger_account(post_body) assert res == mock_response mock_raise_service_error.assert_not_called() @patch('reserves_release.ows_ledger.raise_service_error') def test_bulk_post_ledger_account_failure( mock_raise_service_error, ows_client_mock: OwsClientMock, mock_ledger_account ): """Test failure creating ledger_account's.""" post_body = mock_ledger_account ows_client_mock.post( 'ows-ledger', '/ledger/bulk/', json=post_body, ).mock( return_value=httpx.Response( 400, json={'error': 'error'}, ) ) bulk_post_ledger_account(post_body) mock_raise_service_error.assert_called_once_with( 'ERROR in POST /ledger/bulk/', 'ows-ledger' ) def test_get_ledger_release_reserve_schedules( ows_client_mock: OwsClientMock, mock_ledger_reserve_release_schedule ): """Test to get ledger_release_reserve_schedule records.""" release_statement_period_id = 1 mock_response = mock_ledger_reserve_release_schedule ows_client_mock.get( 'ows-ledger', f'/ledger-reserve-release-schedule/statement-period/{release_statement_period_id}/release/', # noqa: E501 ).mock( return_value=httpx.Response( 200, json=mock_response, ) ) res = get_ledger_release_reserve_schedules(release_statement_period_id) assert res == mock_response