@@ -92,6 +92,7 @@ describe('useAddDatabaseView', () => {
9292 activeViewId ,
9393 expect . objectContaining ( {
9494 parent_view_id : containerId ,
95+ prev_view_id : activeViewId ,
9596 database_id : databaseId ,
9697 layout : ViewLayout . Calendar ,
9798 name : 'Calendar' ,
@@ -154,6 +155,7 @@ describe('useAddDatabaseView', () => {
154155 baseViewId ,
155156 expect . objectContaining ( {
156157 parent_view_id : documentId ,
158+ prev_view_id : baseViewId ,
157159 database_id : databaseId ,
158160 layout : ViewLayout . Board ,
159161 name : 'Board' ,
@@ -221,5 +223,69 @@ describe('useAddDatabaseView', () => {
221223 embedded : false ,
222224 } )
223225 ) ;
226+
227+ const [ , payload ] = createDatabaseView . mock . calls [ 0 ] ;
228+
229+ expect ( payload . prev_view_id ) . toBeUndefined ( ) ;
230+ } ) ;
231+
232+ it ( 'uses the container last child as prev_view_id when the current route is the container itself' , async ( ) => {
233+ const databaseId = 'db-1' ;
234+ const containerId = 'container-view-id' ;
235+ const firstChildId = 'grid-view-id' ;
236+ const secondChildId = 'board-view-id' ;
237+
238+ const createDatabaseView = jest . fn ( ) . mockResolvedValue ( {
239+ view_id : 'new-view-id' ,
240+ database_id : databaseId ,
241+ } ) ;
242+
243+ const loadViewMeta = jest . fn ( async ( viewId : string ) => {
244+ if ( viewId === containerId ) {
245+ return createView ( {
246+ view_id : containerId ,
247+ layout : ViewLayout . Grid ,
248+ extra : { is_space : false , is_database_container : true } ,
249+ children : [
250+ createView ( { view_id : firstChildId , layout : ViewLayout . Grid , parent_view_id : containerId } ) ,
251+ createView ( { view_id : secondChildId , layout : ViewLayout . Board , parent_view_id : containerId } ) ,
252+ ] ,
253+ } ) ;
254+ }
255+
256+ return null ;
257+ } ) ;
258+
259+ const contextValue : DatabaseContextState = {
260+ readOnly : false ,
261+ databaseDoc : createDatabaseDoc ( databaseId ) ,
262+ databasePageId : containerId ,
263+ activeViewId : containerId ,
264+ rowDocMap : { } ,
265+ workspaceId : 'workspace-id' ,
266+ createDatabaseView,
267+ loadViewMeta,
268+ isDocumentBlock : false ,
269+ } ;
270+
271+ const { result } = renderHook ( ( ) => useAddDatabaseView ( ) , {
272+ wrapper : ( { children } ) => < DatabaseContext . Provider value = { contextValue } > { children } </ DatabaseContext . Provider > ,
273+ } ) ;
274+
275+ await act ( async ( ) => {
276+ await result . current ( DatabaseViewLayout . Calendar , 'Calendar' ) ;
277+ } ) ;
278+
279+ expect ( createDatabaseView ) . toHaveBeenCalledWith (
280+ containerId ,
281+ expect . objectContaining ( {
282+ parent_view_id : containerId ,
283+ prev_view_id : secondChildId ,
284+ database_id : databaseId ,
285+ layout : ViewLayout . Calendar ,
286+ name : 'Calendar' ,
287+ embedded : false ,
288+ } )
289+ ) ;
224290 } ) ;
225291} ) ;
0 commit comments