@@ -41,6 +41,38 @@ async def test_process_image_to_image() -> None:
4141 assert result == b"fake image data"
4242
4343
44+ @pytest .mark .asyncio
45+ async def test_process_image_to_image_with_reference_image () -> None :
46+ """Test image-to-image with optional reference_image."""
47+ client = DecartClient (api_key = "test-key" )
48+
49+ with patch ("aiohttp.ClientSession" ) as mock_session_cls :
50+ mock_response = MagicMock ()
51+ mock_response .ok = True
52+ mock_response .read = AsyncMock (return_value = b"fake image data" )
53+
54+ mock_session = MagicMock ()
55+ mock_session .__aenter__ = AsyncMock (return_value = mock_session )
56+ mock_session .__aexit__ = AsyncMock (return_value = None )
57+ mock_session .post = MagicMock ()
58+ mock_session .post .return_value .__aenter__ = AsyncMock (return_value = mock_response )
59+ mock_session .post .return_value .__aexit__ = AsyncMock (return_value = None )
60+
61+ mock_session_cls .return_value = mock_session
62+
63+ result = await client .process (
64+ {
65+ "model" : models .image ("lucy-pro-i2i" ),
66+ "prompt" : "Add the object from the reference image" ,
67+ "data" : b"fake input image" ,
68+ "reference_image" : b"fake reference image" ,
69+ "enhance_prompt" : False ,
70+ }
71+ )
72+
73+ assert result == b"fake image data"
74+
75+
4476@pytest .mark .asyncio
4577async def test_process_rejects_video_models () -> None :
4678 """Test that process() rejects video models with helpful error message."""
0 commit comments