"""Tests for POST /report-runs/auto-report-run endpoint.""" import json from oto import status import pytest from collaborator.logic import report_run from tests.testutils import mock_auth def test_trigger_auto_report_run_success( auth_client, mocker, mock_account, mock_identity ): """Test successfully triggering automatic report run creation.""" mock_auth(mocker, mock_account.id) statement_period_id = 123 expected_report_run_id = 456 mock_trigger_auto_report_run = mocker.patch.object( report_run, "trigger_auto_report_run", return_value={"report_run_id": expected_report_run_id}, ) data = {"statement_period_id": statement_period_id} result = auth_client.post( "/report-runs/auto-report-run", data=json.dumps(data), content_type="application/json", ) assert result.status_code == status.OK mock_trigger_auto_report_run.assert_called_once_with( statement_period_id, mock_identity, ) result_data = json.loads(result.data) assert result_data["report_run_id"] == expected_report_run_id @pytest.mark.parametrize( "data", [ {}, # Missing parameter {"statement_period_id": 0}, # Invalid: zero {"statement_period_id": -1}, # Invalid: negative {"statement_period_id": "not_an_integer"}, # Invalid: wrong type ], ) def test_trigger_auto_report_run_invalid_request( data, auth_client, mocker, mock_account ): """Test triggering automatic report run with invalid request data.""" mock_auth(mocker, mock_account.id) mock_trigger_auto_report_run = mocker.patch.object( report_run, "trigger_auto_report_run" ) result = auth_client.post( "/report-runs/auto-report-run", data=json.dumps(data), content_type="application/json", ) assert result.status_code == status.BAD_REQUEST mock_trigger_auto_report_run.assert_not_called()