"""Tests for ows-abacus-state requests.""" from unittest.mock import MagicMock, patch import pytest from adjustment_file_validation.ows_abacus_state import ( SERVICE, get_statement_period_adjustment_file_states, update_statement_period_adjustment_file_state, ) from adjustment_file_validation.requests import OwsServiceException @patch('adjustment_file_validation.ows_abacus_state.requests.get') def test_get_statement_period_adjustment_file_state_success( mock_get, mock_statement_period_adjustment_file_states ): """Test successfully getting statement period adjustment file abacus states in QA environment.""" statement_period_adjustment_file_id = 123 path = f'/abacus-state/statement-period-adjustment-file/{statement_period_adjustment_file_id}' mock_json_response = MagicMock( return_value=mock_statement_period_adjustment_file_states ) mock_response = MagicMock(status_code=200, json=mock_json_response) mock_get.return_value = mock_response result = get_statement_period_adjustment_file_states( statement_period_adjustment_file_id ) assert result == mock_statement_period_adjustment_file_states mock_get.assert_called_once_with(path, SERVICE) @patch('adjustment_file_validation.ows_abacus_state.requests.get') def test_get_statement_period_adjustment_file_state_error(mock_get): """Test error is raised when getting statement_period_adjustment_file_state.""" statement_period_adjustment_file_id = 123 path = f'/abacus-state/statement-period-adjustment-file/{statement_period_adjustment_file_id}' mock_response = MagicMock(status_code=500) mock_get.return_value = mock_response with pytest.raises(OwsServiceException) as e: get_statement_period_adjustment_file_states(statement_period_adjustment_file_id) assert str(e) == f'ERROR in GET {path}' mock_get.assert_called_once_with(path, 'ows-abacus-state') @patch('adjustment_file_validation.ows_abacus_state.requests.put') def test_update_statement_period_adjustment_file_state( mock_put, mock_statement_period_adjustment_file_states ): """Test to update statement_period_adjustment_file_state.""" abacus_state_id = 123 path = f'/abacus-state/{abacus_state_id}' mock_put_request_body = {'action_status': 'error'} mock_json_response = MagicMock( return_value=mock_statement_period_adjustment_file_states ) mock_response = MagicMock(status_code=200, json=mock_json_response) mock_put.return_value = mock_response results = update_statement_period_adjustment_file_state(abacus_state_id, 'error') assert results == mock_statement_period_adjustment_file_states mock_put.assert_called_once_with(path, 'ows-abacus-state', mock_put_request_body) @patch('adjustment_file_validation.ows_abacus_state.requests.put') def test_update_statement_period_adjustment_file_state_error( mock_put, ): """Test error is raised when updating statement_period_adjustment_file_state.""" abacus_state_id = 123 path = f'/abacus-state/{abacus_state_id}' mock_put_request_body = {'action_status': 'error'} mock_response = MagicMock(status_code=500) mock_put.return_value = mock_response with pytest.raises(OwsServiceException) as e: update_statement_period_adjustment_file_state(abacus_state_id, 'error') assert str(e) == f'ERROR in PUT {path}' mock_put.assert_called_once_with(path, 'ows-abacus-state', mock_put_request_body)