"""Functional tests for getting report runs data.""" import json from oto import status import pytest from collaborator.constants.header import ABACUS_PROFILE, COLLABORATORS_PROFILE from tests.testutils import db, mock_auth @db.test_schema_default_seed @pytest.mark.parametrize( "profile_type, params, expected_data", [ ( ABACUS_PROFILE, {"report_run_id": 1}, [ { "report_run_id": 1, "vendor_id": 24601, "currency": "NOK", "amount": 1234.0, "reports_total_count": 1, "reports_status_error_count": 0, "reports_status_requested_count": 0, "reports_status_generated_count": 1, "reports_with_transaction_count": 1, }, { "report_run_id": 1, "vendor_id": 120594, "currency": "NOK", "amount": 3702.0, "reports_total_count": 3, "reports_status_error_count": 0, "reports_status_requested_count": 0, "reports_status_generated_count": 3, "reports_with_transaction_count": 1, }, ], ), ( COLLABORATORS_PROFILE, {"vendor_id": 24601}, [ { "report_run_id": 1, "vendor_id": 24601, "currency": "NOK", "amount": 1234.0, "reports_total_count": 1, "reports_status_error_count": 0, "reports_status_requested_count": 0, "reports_status_generated_count": 1, "reports_with_transaction_count": 1, }, { "report_run_id": 2, "vendor_id": 24601, "currency": None, "amount": None, "reports_total_count": 1, "reports_status_error_count": 0, "reports_status_requested_count": 1, "reports_status_generated_count": 0, "reports_with_transaction_count": 0, }, ], ), ( COLLABORATORS_PROFILE, {"vendor_id": 24601, "report_run_id": 1}, [ { "report_run_id": 1, "vendor_id": 24601, "currency": "NOK", "amount": 1234.0, "reports_total_count": 1, "reports_status_error_count": 0, "reports_status_requested_count": 0, "reports_status_generated_count": 1, "reports_with_transaction_count": 1, }, ], ), ], ) def test_get_report_run_participations( profile_type, params, expected_data, make_auth_client, mocker, mock_account, ): """Test getting report runs participations.""" mock_auth(mocker, mock_account.id) auth_client = make_auth_client(profile_type) result = auth_client.get("/report-run-participations", query_string=params) result_data = json.loads(result.data.decode()) assert result.status_code == status.OK assert result_data["items"] == expected_data @db.test_schema_default_seed @pytest.mark.parametrize( "profile_type, params, error", [ ( ABACUS_PROFILE, {}, status.BAD_REQUEST, ), ( COLLABORATORS_PROFILE, {"report_run_id": 1}, status.FORBIDDEN, ), ], ) def test_get_report_run_participations_errors( profile_type, params, error, make_auth_client, mocker, mock_account, ): """Test getting report runs participations.""" mock_auth(mocker, mock_account.id) auth_client = make_auth_client(profile_type) result = auth_client.get("/report-run-participations", query_string=params) assert result.status_code == error