"""Test ows-ledger requests.""" from unittest.mock import patch import httpx from owsclient.test import OwsClientMock from adjustments_apply.ows_ledger import ( bulk_insert_ledger_adjustment_applied, bulk_insert_ledger_contract_flowthrough_entries, bulk_insert_ledger_entries, ) @patch('adjustments_apply.ows_ledger.raise_service_error') def test_bulk_insert_ledger_adjustment_applied( mock_raise_service_error, mock_ledger_adjustment_applied, ows_client_mock: OwsClientMock, ): """Test get pending adjustments from ows-ledger. success case """ statement_period_adjustment_file_id = 2 ows_client_mock.post( 'ows-ledger', '/ledger-adjustment-applied/bulk', json=mock_ledger_adjustment_applied, ).mock( return_value=httpx.Response( 201, json={'message': 'OK'}, ) ) res = bulk_insert_ledger_adjustment_applied( statement_period_adjustment_file_id, mock_ledger_adjustment_applied ) assert res == {'message': 'OK'} mock_raise_service_error.assert_not_called() @patch('adjustments_apply.ows_ledger.raise_service_error') def test_bulk_insert_ledger_adjustment_applied_failure( mock_raise_service_error, mock_ledger_adjustment_applied, ows_client_mock: OwsClientMock, ): """Test get pending adjustments from ows-ledger. failure case """ statement_period_adjustment_file_id = 2 ows_client_mock.post( 'ows-ledger', '/ledger-adjustment-applied/bulk', json=mock_ledger_adjustment_applied, ).mock( return_value=httpx.Response( 400, ) ) res = bulk_insert_ledger_adjustment_applied( statement_period_adjustment_file_id, mock_ledger_adjustment_applied ) assert res is None error_string = 'ERROR in POST /ledger-adjustment-applied/bulk' mock_raise_service_error.assert_called_once_with(error_string, 'ows-ledger') @patch('adjustments_apply.ows_ledger.raise_service_error') def test_bulk_insert_ledger_entries( mock_raise_service_error, mock_ledger_accounts, ows_client_mock: OwsClientMock, ): """Test bulk insert ledger entries to ows-ledger. success case """ statement_period_adjustment_file_id = 2 ows_client_mock.post( 'ows-ledger', '/ledger/bulk', json=mock_ledger_accounts, ).mock( return_value=httpx.Response( 201, json={'message': 'OK'}, ) ) res = bulk_insert_ledger_entries( statement_period_adjustment_file_id, mock_ledger_accounts ) assert res == {'message': 'OK'} mock_raise_service_error.assert_not_called() @patch('adjustments_apply.ows_ledger.raise_service_error') def test_bulk_insert_ledger_entries_failure( mock_raise_service_error, mock_ledger_accounts, ows_client_mock: OwsClientMock, ): """Test bulk insert ledger entries to ows-ledger. failure case """ statement_period_adjustment_file_id = 2 ows_client_mock.post( 'ows-ledger', '/ledger/bulk', json=mock_ledger_accounts, ).mock( return_value=httpx.Response( 400, ) ) res = bulk_insert_ledger_entries( statement_period_adjustment_file_id, mock_ledger_accounts ) assert res is None error_string = 'ERROR in POST /ledger/bulk' mock_raise_service_error.assert_called_once_with(error_string, 'ows-ledger') @patch('adjustments_apply.ows_ledger.raise_service_error') def test_bulk_insert_ledger_contract_flowthrough_entries( mock_raise_service_error, mock_ledger_accounts, ows_client_mock: OwsClientMock, ): """Test bulk insert ledger_contract_flowthrough entries to ows-ledger. success case """ statement_period_adjustment_file_id = 2 ows_client_mock.post( 'ows-ledger', '/ledger-contract-flowthrough/bulk', json=mock_ledger_accounts, ).mock( return_value=httpx.Response( 201, json={'message': 'OK'}, ) ) res = bulk_insert_ledger_contract_flowthrough_entries( statement_period_adjustment_file_id, mock_ledger_accounts ) assert res == {'message': 'OK'} mock_raise_service_error.assert_not_called() @patch('adjustments_apply.ows_ledger.raise_service_error') def test_bulk_insert_ledger_contract_flowthrough_entries_failure( mock_raise_service_error, mock_ledger_accounts, ows_client_mock: OwsClientMock, ): """Test bulk insert ledger_contract_flowthrough entries to ows-ledger. failure case """ statement_period_adjustment_file_id = 2 ows_client_mock.post( 'ows-ledger', '/ledger-contract-flowthrough/bulk', json=mock_ledger_accounts, ).mock( return_value=httpx.Response( 400, ) ) res = bulk_insert_ledger_contract_flowthrough_entries( statement_period_adjustment_file_id, mock_ledger_accounts ) assert res is None error_string = 'ERROR in POST /ledger-contract-flowthrough/bulk' mock_raise_service_error.assert_called_once_with(error_string, 'ows-ledger')