Skip to content

Commit 8f5fce4

Browse files
Actually write a test for stream errors
1 parent 7f98b0c commit 8f5fce4

File tree

1 file changed

+32
-2
lines changed

1 file changed

+32
-2
lines changed

tests/codegen/stream/test_stream.py

Lines changed: 32 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@
44
import pytest
55
from pytest_snapshot.plugin import Snapshot
66

7-
from replit_river.client import Client
7+
from replit_river.client import Client, RiverUnknownError
88
from tests.codegen.snapshot.codegen_snapshot_fixtures import validate_codegen
9-
from tests.common_handlers import basic_stream
9+
from tests.common_handlers import basic_stream, error_stream
1010

1111
_AlreadyGenerated = False
1212

@@ -54,3 +54,33 @@ async def emit() -> AsyncIterable[Stream_MethodInput]:
5454
assert f"Stream response for {i}" == datum.data, f"{i} == {datum.data}"
5555
i = i + 1
5656
assert i == 5
57+
58+
59+
@pytest.mark.parametrize("handlers", [{**error_stream}])
60+
@pytest.mark.parametrize("phase", [0, 1, 2, 3])
61+
async def test_error_stream(
62+
stream_client_codegen: Literal[True],
63+
erroringClient: Client,
64+
phase: int,
65+
) -> None:
66+
from tests.codegen.snapshot.snapshots.test_basic_stream import (
67+
StreamClient, # noqa: E501
68+
)
69+
70+
async def emit() -> AsyncIterable[int]:
71+
yield phase
72+
73+
res = await StreamClient(erroringClient).test_service.emit_error(emit())
74+
75+
async for datum in res:
76+
match phase:
77+
case 0:
78+
assert datum
79+
case 1:
80+
assert not datum
81+
case 2:
82+
assert not isinstance(datum, bool)
83+
assert datum.code == "DATA_LOSS"
84+
case 3:
85+
assert isinstance(datum, RiverUnknownError)
86+
assert datum.code == "UNIMPLEMENTED"

0 commit comments

Comments
 (0)