"""Test for the collaborator reports logic.""" from collections import namedtuple from collaborator import config from collaborator.logic import report_run from collaborator.utils.typing import User def test_report_runs_dataloader(mocker): """Test the report runs dataloader.""" MockRow = namedtuple("MockRow", ["report_run_id"]) get_report_runs_by_ids_mock = mocker.patch.object( report_run.ReportRunPersister, "get_report_runs_by_ids", return_value=[ MockRow(report_run_id=1), ], ) requested_report_run_ids = [1, 3] results = report_run.report_runs_dataloader( requested_report_run_ids, ) get_report_runs_by_ids_mock.assert_called_with([1, 3]) assert results == [ MockRow(report_run_id=1), None, ] def test_trigger_auto_report_run(mocker): """Test triggering automatic report run creation.""" statement_period_id = 123 expected_response = {"report_run_id": 456} mock_invoke_lambda = mocker.patch.object( report_run, "invoke_lambda", return_value=expected_response ) result = report_run.trigger_auto_report_run( statement_period_id, user=User(id="789", type="Orchard-Identity-Id") ) mock_invoke_lambda.assert_called_once_with( function_name=config.LAMBDA_FUNCTION_AUTO_REPORT_RUN, payload={ "target_type": "statement_period_id", "target_id": statement_period_id, "requestor_identity_uuid": "789", }, ) assert result == expected_response