"""Functional tests for getting report data.""" import json from oto import status from owsrequest.utils import mock_request import pytest from tests.testutils import db, mock_auth @db.test_schema_default_seed def test_get_reports_no_access(auth_client, mocker, mock_account): """Test get requirements handler.""" mock_auth(mocker, 0) params = {"report_run_uuid": "1234-abcd", "vendor_id": mock_account.id} result = auth_client.get("/reports", query_string=params) assert result.status_code == status.FORBIDDEN @db.test_schema_default_seed @pytest.mark.parametrize( "params, expected_data", [ ( {"has_transaction": True, "vendor_id": 24601}, [ { "id": 1, "report_run_id": 1, "collaborator_id": 1, "exclude_transaction_types": None, "filename": "test.xls", "file_location": "s3://test.xls", "amount": 1234.0, "currency": "NOK", "status": "GENERATED", "requested_datetime": "2019-09-08T07:06:05", "generated_datetime": "2019-10-09T08:07:06", "transaction_id": 2, "deleted_datetime": None, "deleted_by": None, "collaborator_dp_enabled": False, } ], ), ( {"has_transaction": False, "vendor_id": 24601}, [ { "id": 2, "report_run_id": 2, "collaborator_id": 2, "exclude_transaction_types": None, "filename": "test2.xls", "file_location": None, "amount": None, "currency": None, "status": "REQUESTED", "requested_datetime": "2019-10-09T08:07:06", "generated_datetime": None, "transaction_id": None, "deleted_datetime": None, "deleted_by": None, "collaborator_dp_enabled": False, } ], ), ( {"status": "REQUESTED", "vendor_id": 24601}, [ { "id": 2, "report_run_id": 2, "collaborator_id": 2, "exclude_transaction_types": None, "filename": "test2.xls", "file_location": None, "amount": None, "currency": None, "status": "REQUESTED", "requested_datetime": "2019-10-09T08:07:06", "generated_datetime": None, "transaction_id": None, "deleted_datetime": None, "deleted_by": None, "collaborator_dp_enabled": False, } ], ), ({"has_transaction": True, "status": "ERROR", "vendor_id": 24601}, []), ( {"report_run_uuid": "1234-abcd", "vendor_id": 24601}, [ { "id": 2, "report_run_id": 2, "collaborator_id": 2, "exclude_transaction_types": None, "filename": "test2.xls", "file_location": None, "amount": None, "currency": None, "status": "REQUESTED", "requested_datetime": "2019-10-09T08:07:06", "generated_datetime": None, "transaction_id": None, "deleted_datetime": None, "deleted_by": None, "collaborator_dp_enabled": False, } ], ), ( {"collaborator_id": 2, "vendor_id": 24601}, [ { "id": 2, "report_run_id": 2, "collaborator_id": 2, "exclude_transaction_types": None, "filename": "test2.xls", "file_location": None, "amount": None, "currency": None, "status": "REQUESTED", "requested_datetime": "2019-10-09T08:07:06", "generated_datetime": None, "transaction_id": None, "deleted_datetime": None, "deleted_by": None, "collaborator_dp_enabled": False, } ], ), ( {"collaborator_id": 2}, [ { "id": 2, "report_run_id": 2, "collaborator_id": 2, "exclude_transaction_types": None, "filename": "test2.xls", "file_location": None, "amount": None, "currency": None, "status": "REQUESTED", "requested_datetime": "2019-10-09T08:07:06", "generated_datetime": None, "transaction_id": None, "deleted_datetime": None, "deleted_by": None, "collaborator_dp_enabled": False, } ], ), ( {"report_id": 2, "vendor_id": 24601}, [ { "id": 2, "report_run_id": 2, "collaborator_id": 2, "exclude_transaction_types": None, "filename": "test2.xls", "file_location": None, "amount": None, "currency": None, "status": "REQUESTED", "requested_datetime": "2019-10-09T08:07:06", "generated_datetime": None, "transaction_id": None, "deleted_datetime": None, "deleted_by": None, "collaborator_dp_enabled": False, } ], ), ], ) def test_get_reports(params, expected_data, auth_client, mock_account, mocker): """Test getting reports with transactions.""" mock_auth(mocker, mock_account.id) mock_request.get( "ows-accounting", "/accounting_period", {"accounting_period": 9001} ) mock_request.get( "ows-contracts", f"/booked/{mock_account.type}/{mock_account.id}", {"items": [{"payment_interval": "month"}]}, ) mock_request.get( "ows-permissions", "/accounting_period", {"accounting_period": 9001} ) result = auth_client.get("/reports", query_string=params) result_data = json.loads(result.data.decode()) assert result.status_code == status.OK assert result_data["items"] == expected_data