"""Unit testcases for ows-ledger requests.""" from unittest.mock import patch import httpx from owsclient.test import OwsClientMock import simplejson as json from correction_apply.ows_ledger import create_ledger_correction_entries from correction_apply.ows_ledger import create_ledger_entries @patch('correction_apply.ows_ledger.raise_service_error') def test_create_ledger_entries_success( mock_raise_service_error, mock_ledger_account_contract, ows_client_mock: OwsClientMock ): """Test successfully creating ledger entries.""" post_body = json.loads( json.dumps([mock_ledger_account_contract], allow_nan=False) ) mock_response = {'result': 'Ok'} ows_client_mock.post( 'ows-ledger', '/ledger/bulk', json=post_body ).mock( return_value=httpx.Response( 201, json=mock_response ) ) res = create_ledger_entries(post_body) assert res == mock_response mock_raise_service_error.assert_not_called() @patch('correction_apply.ows_ledger.raise_service_error') def test_create_ledger_entries_bad_request_failure( mock_raise_service_error, mock_ledger_account_contract, ows_client_mock: OwsClientMock ): """Test failure creating ledger entries.""" post_body = json.loads( json.dumps([mock_ledger_account_contract], allow_nan=False) ) ows_client_mock.post( 'ows-ledger', '/ledger/bulk', json=post_body ).mock( return_value=httpx.Response( 400, json={'message': 'mock error'} ) ) create_ledger_entries(post_body) mock_raise_service_error.assert_called_once_with( 'ERROR in POST /ledger/bulk', 'ows-ledger' ) @patch('correction_apply.ows_ledger.raise_service_error') def test_create_ledger_correction_entries_success( mock_raise_service_error, mock_ledger_correction, ows_client_mock: OwsClientMock ): """Test successfully creating ledger_correction entries.""" post_body = [mock_ledger_correction] mock_response = {'result': 'Ok'} ows_client_mock.post( 'ows-ledger', '/ledger-correction/bulk', json=post_body ).mock( return_value=httpx.Response( 201, json=mock_response ) ) res = create_ledger_correction_entries(post_body) assert res == mock_response mock_raise_service_error.assert_not_called() @patch('correction_apply.ows_ledger.raise_service_error') def test_create_ledger_correction_entries_bad_request_failure( mock_raise_service_error, mock_ledger_correction, ows_client_mock: OwsClientMock ): """Test failure creating ledger_correction entries.""" post_body = [mock_ledger_correction] ows_client_mock.post( 'ows-ledger', '/ledger-correction/bulk', json=post_body ).mock( return_value=httpx.Response( 400, json={'message': 'mock error'} ) ) create_ledger_correction_entries(post_body) mock_raise_service_error.assert_called_once_with( 'ERROR in POST /ledger-correction/bulk', 'ows-ledger' )