1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
|
import contextlib
import pytest
from inline_snapshot import snapshot
from tests.conftest import skip_if_gql_32
from tests.http.clients.base import HttpClient
pytestmark = skip_if_gql_32("GraphQL 3.3.0 is required for incremental execution")
async def test_basic_stream(http_client: HttpClient):
response = await http_client.query(
method="get",
query="""
query Stream {
streamableField @stream
}
""",
)
async with contextlib.aclosing(response.streaming_json()) as stream:
initial = await stream.__anext__()
assert initial == snapshot(
{
"data": {"streamableField": []},
"hasNext": True,
"pending": [{"id": "0", "path": ["streamableField"]}],
"extensions": None,
}
)
first = await stream.__anext__()
assert first == snapshot(
{
"hasNext": True,
"extensions": None,
"incremental": [
{
"items": ["Hello 0"],
"id": "0",
"path": ["streamableField"],
"label": None,
}
],
}
)
second = await stream.__anext__()
assert second == snapshot(
{
"hasNext": True,
"extensions": None,
"incremental": [
{
"items": ["Hello 1"],
"id": "0",
"path": ["streamableField"],
"label": None,
}
],
}
)
third = await stream.__anext__()
assert third == snapshot(
{"hasNext": False, "extensions": None, "completed": [{"id": "0"}]}
)
with pytest.raises(StopAsyncIteration):
await stream.__anext__()
|