"""Test ows-royalties requests.""" from unittest.mock import MagicMock, patch import pytest from adjustment_file_validation.ows_royalties import ( get_statement_period_adjustment_file, update_statement_period_adjustment_file, ) from adjustment_file_validation.requests import OwsServiceException @patch('adjustment_file_validation.ows_royalties.requests.get') def test_get_statement_period_adjustment_file(mock_get): """Test to get statement_period_adjustment_file.""" statement_period_adjustment_file_id = 100 path = f'/statement-period-adjustment-file/{statement_period_adjustment_file_id}' mock_statement_period_adjustment_file = { 'file_name': 'test.xlsx', 'statement_period_id': 282, 'statement_period_adjustment_file_id': 100, } mock_json_response = MagicMock(return_value=mock_statement_period_adjustment_file) mock_response = MagicMock(status_code=200, json=mock_json_response) mock_get.return_value = mock_response results = get_statement_period_adjustment_file(statement_period_adjustment_file_id) assert results == mock_statement_period_adjustment_file mock_get.assert_called_once_with(path, 'ows-royalties') @patch('adjustment_file_validation.ows_royalties.requests.get') def test_get_statement_period_adjustment_file_error(mock_get): """Test error is raised when getting statement_period_adjustment_file.""" statement_period_adjustment_file_id = 100 path = f'/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(statement_period_adjustment_file_id) assert str(e) == f'ERROR in GET {path}' mock_get.assert_called_once_with(path, 'ows-royalties') @patch('adjustment_file_validation.ows_royalties.requests.put') def test_update_statement_period_adjustment_file(mock_put): """Test to update statement_period_adjustment_file.""" statement_period_adjustment_file_id = 100 statement_period_id = 290 path = f'/statement-period/{statement_period_id}/adjustment-file/{statement_period_adjustment_file_id}' mock_put_request_body = { 'valid_file_location': 's3://test.xlsx', 'valid_row_count': 28, 'invalid_row_count': 10, } mock_statement_period_adjustment_file = { 'file_name': 'test.xlsx', 'statement_period_id': 282, 'statement_period_adjustment_file_id': 100, } mock_json_response = MagicMock(return_value=mock_statement_period_adjustment_file) mock_response = MagicMock(status_code=201, json=mock_json_response) mock_put.return_value = mock_response results = update_statement_period_adjustment_file( mock_put_request_body, statement_period_id, statement_period_adjustment_file_id ) assert results == mock_statement_period_adjustment_file mock_put.assert_called_once_with(path, 'ows-royalties', mock_put_request_body) @patch('adjustment_file_validation.ows_royalties.requests.put') def test_update_statement_period_adjustment_file_error(mock_put): """Test error is raised when updating statement_period_adjustment_file record.""" statement_period_adjustment_file_id = 100 statement_period_id = 290 path = f'/statement-period/{statement_period_id}/adjustment-file/{statement_period_adjustment_file_id}' mock_put_request_body = { 'valid_file_location': 's3://test.xlsx', 'valid_row_count': 28, 'invalid_row_count': 10, } mock_response = MagicMock(status_code=500) mock_put.return_value = mock_response with pytest.raises(OwsServiceException) as e: update_statement_period_adjustment_file( mock_put_request_body, statement_period_id, statement_period_adjustment_file_id, ) assert str(e) == f'ERROR in PUT {path}' mock_put.assert_called_once_with(path, 'ows-royalties', mock_put_request_body)