@@ -28,7 +28,10 @@ const callLoader = (request: Request, cli: Record<string, unknown>) => {
2828
2929const callAction = ( request : Request , cli : Record < string , unknown > ) => {
3030 const context = new RouterContextProvider ( ) ;
31- context . set ( ploneClientContext , cli as any ) ;
31+ context . set ( ploneClientContext , {
32+ config : { apiPath : 'http://example.com/Plone' } ,
33+ ...cli ,
34+ } as any ) ;
3235 return action ( {
3336 request,
3437 params : { } ,
@@ -156,7 +159,9 @@ describe('recycle bin route', () => {
156159 } ) ;
157160
158161 it ( 'restores selected items' , async ( ) => {
159- const restoreRecycleBinItem = vi . fn ( ) . mockResolvedValue ( { } ) ;
162+ const restoreRecycleBinItem = vi . fn ( ) . mockResolvedValue ( {
163+ data : { restored_item : { '@id' : 'http://example.com/Plone/restored' } } ,
164+ } ) ;
160165 const formData = new FormData ( ) ;
161166 formData . append ( '_action' , 'restore-selected' ) ;
162167 formData . append ( 'selected_items' , 'one' ) ;
@@ -180,6 +185,27 @@ describe('recycle bin route', () => {
180185 } ) ;
181186 } ) ;
182187
188+ it ( 'redirects to the restored item when one selected item is restored' , async ( ) => {
189+ const restoreRecycleBinItem = vi . fn ( ) . mockResolvedValue ( {
190+ data : {
191+ restored_item : { '@id' : 'http://example.com/Plone/restored-item' } ,
192+ } ,
193+ } ) ;
194+ const formData = new FormData ( ) ;
195+ formData . append ( '_action' , 'restore-selected' ) ;
196+ formData . append ( 'selected_items' , 'one' ) ;
197+
198+ const result = await callAction (
199+ new Request ( 'http://example.com/@@recyclebin' , {
200+ method : 'POST' ,
201+ body : formData ,
202+ } ) ,
203+ { restoreRecycleBinItem } ,
204+ ) ;
205+
206+ expect ( ( result as Response ) . headers . get ( 'Location' ) ) . toBe ( '/restored-item' ) ;
207+ } ) ;
208+
183209 it ( 'purges selected items' , async ( ) => {
184210 const purgeRecycleBinItem = vi . fn ( ) . mockResolvedValue ( { } ) ;
185211 const formData = new FormData ( ) ;
0 commit comments