import pytest from flask import url_for from http import HTTPStatus from tests.legacy.apollo_api import factories as apollo_factories def get_result(*args) -> dict: return {"items": [{"user_id": f"user_id_{i}", "email": f"email{i}@test.com"} for i in args]} @pytest.mark.parametrize( "params,expected_status,expected_result", ( ({}, HTTPStatus.BAD_REQUEST, {}), ({"id": "id1,id2"}, HTTPStatus.OK, get_result()), ({"id": "user_id_2,user_id_4,user_id_6"}, HTTPStatus.OK, get_result(2, 4)), ), ) def test_users_emails(params, expected_status, expected_result, client, patch_auth_user, user_id, db_session): patch_auth_user(user_id) for index in range(1, 6): apollo_factories.UserMarketFactory(user_id=f"user_id_{index}", market_id=index, email=f"email{index}@test.com") response = client.get(url_for("users_emails.get_users_emails", **params)) assert response.status_code == expected_status if expected_status == HTTPStatus.OK: result = response.json result["items"] = sorted(result["items"], key=lambda i: i["user_id"]) assert result == expected_result