@@ -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,61 @@ 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
274+ . views
275+ . iter ( )
276+ . find ( |v| !v. embedded )
277+ . unwrap ( )
278+ . id ;
279+
280+ let params_without_embedded = CreateDatabaseParams :: from_database_data (
281+ data. clone ( ) ,
282+ non_embedded_view_id,
283+ Uuid :: new_v4 ( ) ,
284+ false ,
285+ ) ;
286+ assert_eq ! ( params_without_embedded. views. len( ) , 1 ) ;
287+ assert ! ( params_without_embedded. views. iter( ) . all( |v| !v. embedded) ) ;
288+
289+ let params_with_embedded = CreateDatabaseParams :: from_database_data (
290+ data,
291+ non_embedded_view_id,
292+ Uuid :: new_v4 ( ) ,
293+ true ,
294+ ) ;
295+ assert_eq ! ( params_with_embedded. views. len( ) , 2 ) ;
296+ assert ! ( params_with_embedded. views. iter( ) . any( |v| v. embedded) ) ;
297+ }
298+
252299#[ tokio:: test]
253300async fn database_data_serde_test ( ) {
254301 let database_id = uuid:: Uuid :: new_v4 ( ) ;
255302 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 ( ) ;
303+ let database_data = database_test
304+ . get_database_data ( 20 , false , false )
305+ . await
306+ . unwrap ( ) ;
257307
258308 let json = database_data. to_json ( ) . unwrap ( ) ;
259309 let database_data2 = DatabaseData :: from_json ( & json) . unwrap ( ) ;
0 commit comments