44 VolumeManager as AsyncVolumeManager ,
55)
66from hyperbrowser .client .managers .sync_manager .volume import VolumeManager
7- from hyperbrowser .models import CreateVolumeParams , Volume , VolumeListParams
7+ from hyperbrowser .models import (
8+ CreateVolumeParams ,
9+ Volume ,
10+ VolumeDeleteResult ,
11+ VolumeListParams ,
12+ )
813
914
1015VOLUME_PAYLOAD = {
2631 "perPage" : 20 ,
2732}
2833
34+ VOLUME_DELETE_PAYLOAD = {
35+ "deleted" : True ,
36+ "id" : "2d6f01cf-c5d7-4c61-ae9e-0264f1c8063d" ,
37+ "name" : "project-cache" ,
38+ }
39+
2940
3041class StubResponse :
3142 def __init__ (self , data ):
@@ -55,6 +66,10 @@ def get(self, url, params=None, follow_redirects=False):
5566 return StubResponse (VOLUME_DETAIL_PAYLOAD )
5667 return StubResponse ({})
5768
69+ def delete (self , url ):
70+ self .calls .append ({"method" : "DELETE" , "url" : url })
71+ return StubResponse (VOLUME_DELETE_PAYLOAD )
72+
5873
5974class RecordingAsyncTransport :
6075 def __init__ (self ):
@@ -79,6 +94,10 @@ async def get(self, url, params=None, follow_redirects=False):
7994 return StubResponse (VOLUME_DETAIL_PAYLOAD )
8095 return StubResponse ({})
8196
97+ async def delete (self , url ):
98+ self .calls .append ({"method" : "DELETE" , "url" : url })
99+ return StubResponse (VOLUME_DELETE_PAYLOAD )
100+
82101
83102class FakeSyncClient :
84103 def __init__ (self ):
@@ -131,10 +150,12 @@ def test_sync_volume_manager_uses_expected_wire_keys(use_legacy_model):
131150 created = manager .create (CreateVolumeParams (name = "project-cache" ))
132151 listed = manager .list (list_params )
133152 fetched = manager .get ("2d6f01cf-c5d7-4c61-ae9e-0264f1c8063d" )
153+ deleted = manager .delete ("2d6f01cf-c5d7-4c61-ae9e-0264f1c8063d" )
134154
135155 create_call = client .transport .calls [0 ]
136156 list_call = client .transport .calls [1 ]
137157 get_call = client .transport .calls [2 ]
158+ delete_call = client .transport .calls [3 ]
138159
139160 assert create_call ["method" ] == "POST"
140161 assert create_call ["url" ].endswith ("/volume" )
@@ -153,6 +174,13 @@ def test_sync_volume_manager_uses_expected_wire_keys(use_legacy_model):
153174 assert fetched .name == "project-cache"
154175 assert fetched .transfer_amount is None
155176
177+ assert delete_call ["method" ] == "DELETE"
178+ assert delete_call ["url" ].endswith ("/volume/2d6f01cf-c5d7-4c61-ae9e-0264f1c8063d" )
179+ assert deleted .deleted is True
180+ assert deleted .id == "2d6f01cf-c5d7-4c61-ae9e-0264f1c8063d"
181+ assert deleted .name == "project-cache"
182+ assert isinstance (deleted , VolumeDeleteResult )
183+
156184
157185@pytest .mark .anyio
158186@pytest .mark .parametrize ("use_legacy_model" , [False , True ])
@@ -166,10 +194,12 @@ async def test_async_volume_manager_uses_expected_wire_keys(use_legacy_model):
166194 created = await manager .create ({"name" : "project-cache" })
167195 listed = await manager .list (list_params )
168196 fetched = await manager .get ("2d6f01cf-c5d7-4c61-ae9e-0264f1c8063d" )
197+ deleted = await manager .delete ("2d6f01cf-c5d7-4c61-ae9e-0264f1c8063d" )
169198
170199 create_call = client .transport .calls [0 ]
171200 list_call = client .transport .calls [1 ]
172201 get_call = client .transport .calls [2 ]
202+ delete_call = client .transport .calls [3 ]
173203
174204 assert create_call ["method" ] == "POST"
175205 assert create_call ["url" ].endswith ("/volume" )
@@ -186,6 +216,11 @@ async def test_async_volume_manager_uses_expected_wire_keys(use_legacy_model):
186216 assert created .transfer_amount == 0
187217 assert fetched .name == "project-cache"
188218
219+ assert delete_call ["method" ] == "DELETE"
220+ assert delete_call ["url" ].endswith ("/volume/2d6f01cf-c5d7-4c61-ae9e-0264f1c8063d" )
221+ assert deleted .deleted is True
222+ assert deleted .name == "project-cache"
223+
189224
190225def test_sync_volume_list_without_params_remains_supported ():
191226 client = FakeSyncClient ()
0 commit comments