"""Tests for ows_abacus_account.""" import httpx from owsclient.test import OwsClientMock from unittest.mock import patch from json_contract_file_import.ows_abacus_state import create_abacus_states from json_contract_file_import.ows_abacus_state import get_abacus_states def test_get_abacus_states( ows_client_mock: OwsClientMock, ) -> None: """Test successful get abacus states.""" mock_response = [ { 'action_name': 'tax_eligibility', 'parent_table_id': 123, 'parent_table_name': 'account_payee' } ] parent_table_name = 'account_payee' parent_table_id = 123 ows_client_mock.get( 'ows-abacus-state', f'/abacus-state/{parent_table_name}/{parent_table_id}', ).mock( return_value=httpx.Response( 200, json=mock_response, ) ) response = get_abacus_states(parent_table_name, str(parent_table_id)) assert response.status_code == 200 assert response.json() == mock_response @patch('json_contract_file_import.ows_abacus_state.logger') def test_get_abacus_states_failed( mock_logger, ows_client_mock: OwsClientMock, ) -> None: """Test failed get abacus states with status code not 200.""" mock_response = { 'error': 'Failed to get abacus states.', } parent_table_name = 'account_payee' parent_table_id = 123 ows_client_mock.get( 'ows-abacus-state', f'/abacus-state/{parent_table_name}/{parent_table_id}', ).mock( return_value=httpx.Response( 500, json=mock_response, ) ) response = get_abacus_states(parent_table_name, str(parent_table_id)) assert response.status_code == 500 assert response.json() == mock_response mock_logger.error.assert_called_once_with( 'ows-abacus-state error: {"error": "Failed to get abacus states."}') def test_create_abacus_states( ows_client_mock: OwsClientMock, ) -> None: """Test successful create abacus states.""" mock_request = [ { 'action_name': 'tax_eligibility', 'parent_table_id': 123, 'parent_table_name': 'account_payee' } ] mock_response = {'message': 'States created successfully'} ows_client_mock.post( 'ows-abacus-state', '/abacus-states', ).mock( return_value=httpx.Response( 201, json=mock_response, ) ) response = create_abacus_states(mock_request) assert response.status_code == 201 assert response.json() == mock_response @patch('json_contract_file_import.ows_abacus_state.logger') def test_create_abacus_states_failed( mock_logger, ows_client_mock: OwsClientMock, ) -> None: """Test failed create abacus states with status code not 201.""" mock_request = [ { 'action_name': 'tax_eligibility', 'parent_table_id': 123, 'parent_table_name': 'account_payee' } ] mock_response = { 'error': 'Failed to create abacus states.', } ows_client_mock.post( 'ows-abacus-state', '/abacus-states', ).mock( return_value=httpx.Response( 500, json=mock_response, ) ) response = create_abacus_states(mock_request) assert response.status_code == 500 assert response.json() == mock_response mock_logger.error.assert_called_once_with( 'ows-abacus-state error: {"error": "Failed to create abacus states."}')