11"""Tests for query function."""
22
3- import json
43from collections .abc import AsyncIterator
54
65import pytest
@@ -13,72 +12,8 @@ class TestQuery:
1312 """Tests for query function."""
1413
1514 @pytest .mark .asyncio
16- async def test_query_with_string_prompt (self , default_options , test_prompt ):
17- """Test query with a string prompt."""
18- # Note: This test requires ripperdoc CLI to be installed
19- # In CI/CD, this should be mocked or skipped if CLI not available
20- messages : list [Message ] = []
21- try :
22- async for msg in query (prompt = test_prompt , options = default_options ):
23- messages .append (msg )
24- # Break after first message for testing
25- if isinstance (msg , AssistantMessage ):
26- break
27- except Exception as e :
28- pytest .skip (f"Ripperdoc CLI not available: { e } " )
29-
30- @pytest .mark .asyncio
31- async def test_query_with_default_options (self , test_prompt ):
32- """Test query with default options (None)."""
33- messages : list [Message ] = []
34- try :
35- async for msg in query (prompt = test_prompt ):
36- messages .append (msg )
37- if isinstance (msg , AssistantMessage ):
38- break
39- except Exception as e :
40- pytest .skip (f"Ripperdoc CLI not available: { e } " )
41-
42- @pytest .mark .asyncio
43- async def test_query_with_custom_options (self , test_prompt ):
44- """Test query with custom options."""
45- options = RipperdocAgentOptions (
46- permission_mode = "acceptEdits" ,
47- )
48- messages : list [Message ] = []
49- try :
50- async for msg in query (prompt = test_prompt , options = options ):
51- messages .append (msg )
52- if isinstance (msg , AssistantMessage ):
53- break
54- except Exception as e :
55- pytest .skip (f"Ripperdoc CLI not available: { e } " )
56-
57- @pytest .mark .asyncio
58- async def test_query_with_streaming_prompt (self ):
59- """Test query with streaming prompt (AsyncIterable)."""
60-
61- async def stream_prompt () -> AsyncIterator [dict ]:
62- """Stream prompt as a series of messages."""
63- yield {"type" : "user" , "content" : [{"type" : "text" , "text" : "Hello" }]}
64-
65- messages : list [Message ] = []
66- try :
67- async for msg in query (prompt = stream_prompt ()):
68- messages .append (msg )
69- if isinstance (msg , AssistantMessage ):
70- break
71- except Exception as e :
72- pytest .skip (f"Ripperdoc CLI not available: { e } " )
73-
74- @pytest .mark .asyncio
75- async def test_query_returns_iterator (self , test_prompt ):
15+ async def test_query_returns_iterator (self ):
7616 """Test that query returns an async iterator."""
77- try :
78- result = query (prompt = test_prompt )
79- assert hasattr (result , "__aiter__" )
80- # Consume the iterator
81- async for _ in result :
82- break
83- except Exception as e :
84- pytest .skip (f"Ripperdoc CLI not available: { e } " )
17+ # Just verify the interface, don't actually connect
18+ result = query (prompt = "test" )
19+ assert hasattr (result , "__aiter__" )
0 commit comments