@@ -5,7 +5,7 @@ use assert_json_diff::assert_json_eq;
55use collab:: core:: collab:: { CollabOptions , default_client_id} ;
66use collab:: core:: origin:: CollabOrigin ;
77use collab:: database:: database:: { DatabaseBody , DatabaseData , gen_row_id} ;
8- use collab:: database:: entity:: CreateViewParams ;
8+ use collab:: database:: entity:: { CreateDatabaseParams , CreateViewParams } ;
99use collab:: database:: fields:: Field ;
1010use collab:: database:: rows:: { CreateRowParams , Row } ;
1111use collab:: database:: views:: { DatabaseLayout , LayoutSetting , OrderObjectPosition } ;
@@ -249,11 +249,52 @@ async fn duplicate_database_view_test() {
249249 assert_eq ! ( view. database_id, duplicated_view. database_id) ;
250250}
251251
252+ #[ tokio:: test]
253+ async fn duplicate_database_excludes_embedded_views_test ( ) {
254+ let database_id = uuid:: Uuid :: new_v4 ( ) ;
255+ let mut database_test = create_database_with_default_data ( 1 , & database_id. to_string ( ) ) . await ;
256+
257+ let embedded_view_id = Uuid :: new_v4 ( ) ;
258+ database_test
259+ . create_linked_view ( CreateViewParams {
260+ database_id,
261+ view_id : embedded_view_id,
262+ name : "embedded view" . to_string ( ) ,
263+ embedded : true ,
264+ ..Default :: default ( )
265+ } )
266+ . unwrap ( ) ;
267+
268+ let data = database_test
269+ . get_database_data ( 20 , false , true )
270+ . await
271+ . unwrap ( ) ;
272+
273+ let non_embedded_view_id = data. views . iter ( ) . find ( |v| !v. embedded ) . unwrap ( ) . id ;
274+
275+ let params_without_embedded = CreateDatabaseParams :: from_database_data (
276+ data. clone ( ) ,
277+ non_embedded_view_id,
278+ Uuid :: new_v4 ( ) ,
279+ false ,
280+ ) ;
281+ assert_eq ! ( params_without_embedded. views. len( ) , 1 ) ;
282+ assert ! ( params_without_embedded. views. iter( ) . all( |v| !v. embedded) ) ;
283+
284+ let params_with_embedded =
285+ CreateDatabaseParams :: from_database_data ( data, non_embedded_view_id, Uuid :: new_v4 ( ) , true ) ;
286+ assert_eq ! ( params_with_embedded. views. len( ) , 2 ) ;
287+ assert ! ( params_with_embedded. views. iter( ) . any( |v| v. embedded) ) ;
288+ }
289+
252290#[ tokio:: test]
253291async fn database_data_serde_test ( ) {
254292 let database_id = uuid:: Uuid :: new_v4 ( ) ;
255293 let database_test = create_database_with_default_data ( 1 , & database_id. to_string ( ) ) . await ;
256- let database_data = database_test. get_database_data ( 20 , false ) . await . unwrap ( ) ;
294+ let database_data = database_test
295+ . get_database_data ( 20 , false , false )
296+ . await
297+ . unwrap ( ) ;
257298
258299 let json = database_data. to_json ( ) . unwrap ( ) ;
259300 let database_data2 = DatabaseData :: from_json ( & json) . unwrap ( ) ;
0 commit comments