"""Unit testcases for ows-royalties requests.""" from unittest.mock import MagicMock from unittest.mock import patch import pytest from adjustment_file_import.ows_royalties import \ get_statement_period_adjustment_file from adjustment_file_import.ows_royalties import \ get_statement_periods_by_years from adjustment_file_import.requests import OwsServiceException @patch('adjustment_file_import.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_import.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_import.ows_royalties.requests.post') def test_get_statement_periods_by_years(mock_post): """Test to get statement periods by statement years.""" mock_post_request_payload = [2024, 2025] mock_statement_periods = [{ 'statement_period_id': 253, 'statement_period_name': 'January 2024', 'statement_period_status': 'closed', 'statement_month': 1, 'statement_year': 2024, 'closed_date': None, 'exchange_rates_delivered': False }] path = '/statement-periods/' mock_json_response = MagicMock(return_value=mock_statement_periods) mock_response = MagicMock(status_code=200, json=mock_json_response) mock_post.return_value = mock_response results = get_statement_periods_by_years(mock_post_request_payload) assert results == mock_statement_periods mock_post.assert_called_once_with(mock_post_request_payload, path, 'ows-royalties') @patch('adjustment_file_import.ows_royalties.requests.post') def test_get_statement_periods_by_years_error(mock_post): """Test error is raised when getting statement periods.""" mock_post_request_payload = [2024, 2025] path = '/statement-periods/' mock_response = MagicMock(status_code=500) mock_post.return_value = mock_response with pytest.raises(OwsServiceException) as e: get_statement_periods_by_years(mock_post_request_payload) assert str(e) == f'ERROR in GET {path}' mock_post.assert_called_once_with(mock_post_request_payload, path, 'ows-royalties')