"""Functional tests for the vendor-wide payments endpoint.""" from oto import status as response_code from tests.testutils import db, mock_auth TEST_VENDOR = 120594 @db.test_schema_default_seed def test_get_payments_filters_by_status(auth_client, mocker): """payment_statuses CSV is split and applied as a filter.""" mock_auth(mocker, TEST_VENDOR) result = auth_client.get( "/payments", query_string={ "vendor_id": TEST_VENDOR, "payment_statuses": "incoming_payment_waiting", }, ) assert result.status_code == response_code.OK body = result.json assert set(body) == {"items", "pagination"} assert body["pagination"]["total_records"] == len(body["items"]) assert len(body["items"]) >= 1 assert all(item["status"] == "incoming_payment_waiting" for item in body["items"]) @db.test_schema_default_seed def test_get_payments_multiple_statuses(auth_client, mocker): """A comma-separated list of statuses returns rows matching any of them.""" mock_auth(mocker, TEST_VENDOR) result = auth_client.get( "/payments", query_string={ "vendor_id": TEST_VENDOR, "payment_statuses": "incoming_payment_waiting,cancelled", }, ) assert result.status_code == response_code.OK statuses = {item["status"] for item in result.json["items"]} assert len(result.json["items"]) >= 1 assert statuses <= {"incoming_payment_waiting", "cancelled"} @db.test_schema_default_seed def test_get_payments_requires_vendor_id(auth_client, mocker): """vendor_id is required.""" mock_auth(mocker, TEST_VENDOR) result = auth_client.get("/payments") assert result.status_code == 400