| 
									
										
										
										
											2023-08-27 22:31:32 +08:00
										 |  |  | use flowy_database2::entities::FieldType;
 | 
					
						
							|  |  |  | use flowy_database2::entities::FieldVisibility;
 | 
					
						
							| 
									
										
										
										
											2023-11-06 14:48:59 +08:00
										 |  |  | use flowy_database2::services::field_settings::DEFAULT_WIDTH;
 | 
					
						
							| 
									
										
										
										
											2023-08-27 22:31:32 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | use crate::database::field_settings_test::script::FieldSettingsTest;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /// Check default field settings for grid, kanban and calendar
 | 
					
						
							|  |  |  | #[tokio::test]
 | 
					
						
							| 
									
										
										
										
											2023-12-04 14:20:07 -08:00
										 |  |  | async fn get_default_grid_field_settings() {
 | 
					
						
							|  |  |  |   // grid
 | 
					
						
							| 
									
										
										
										
											2023-08-27 22:31:32 +08:00
										 |  |  |   let mut test = FieldSettingsTest::new_grid().await;
 | 
					
						
							| 
									
										
										
										
											2023-12-04 14:20:07 -08:00
										 |  |  |   test
 | 
					
						
							|  |  |  |     .assert_all_field_settings(FieldVisibility::AlwaysShown, DEFAULT_WIDTH)
 | 
					
						
							|  |  |  |     .await;
 | 
					
						
							|  |  |  | }
 | 
					
						
							| 
									
										
										
										
											2023-08-27 22:31:32 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-12-04 14:20:07 -08:00
										 |  |  | #[tokio::test]
 | 
					
						
							|  |  |  | async fn get_default_board_field_settings() {
 | 
					
						
							|  |  |  |   // board
 | 
					
						
							| 
									
										
										
										
											2023-08-27 22:31:32 +08:00
										 |  |  |   let mut test = FieldSettingsTest::new_board().await;
 | 
					
						
							| 
									
										
										
										
											2023-09-01 22:40:17 +08:00
										 |  |  |   let non_primary_field_ids: Vec<String> = test
 | 
					
						
							|  |  |  |     .get_fields()
 | 
					
						
							|  |  |  |     .into_iter()
 | 
					
						
							|  |  |  |     .filter(|field| !field.is_primary)
 | 
					
						
							|  |  |  |     .map(|field| field.id)
 | 
					
						
							|  |  |  |     .collect();
 | 
					
						
							|  |  |  |   let primary_field_id = test.get_first_field(FieldType::RichText).id;
 | 
					
						
							| 
									
										
										
										
											2023-12-04 14:20:07 -08:00
										 |  |  |   test
 | 
					
						
							|  |  |  |     .assert_field_settings(
 | 
					
						
							|  |  |  |       non_primary_field_ids.clone(),
 | 
					
						
							|  |  |  |       FieldVisibility::HideWhenEmpty,
 | 
					
						
							|  |  |  |       DEFAULT_WIDTH,
 | 
					
						
							|  |  |  |     )
 | 
					
						
							|  |  |  |     .await;
 | 
					
						
							|  |  |  |   test
 | 
					
						
							|  |  |  |     .assert_field_settings(
 | 
					
						
							|  |  |  |       vec![primary_field_id.clone()],
 | 
					
						
							|  |  |  |       FieldVisibility::AlwaysShown,
 | 
					
						
							|  |  |  |       DEFAULT_WIDTH,
 | 
					
						
							|  |  |  |     )
 | 
					
						
							|  |  |  |     .await;
 | 
					
						
							|  |  |  | }
 | 
					
						
							| 
									
										
										
										
											2023-08-27 22:31:32 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-12-04 14:20:07 -08:00
										 |  |  | #[tokio::test]
 | 
					
						
							|  |  |  | async fn get_default_calendar_field_settings() {
 | 
					
						
							|  |  |  |   // calendar
 | 
					
						
							| 
									
										
										
										
											2023-08-27 22:31:32 +08:00
										 |  |  |   let mut test = FieldSettingsTest::new_calendar().await;
 | 
					
						
							| 
									
										
										
										
											2023-09-01 22:40:17 +08:00
										 |  |  |   let non_primary_field_ids: Vec<String> = test
 | 
					
						
							|  |  |  |     .get_fields()
 | 
					
						
							|  |  |  |     .into_iter()
 | 
					
						
							|  |  |  |     .filter(|field| !field.is_primary)
 | 
					
						
							|  |  |  |     .map(|field| field.id)
 | 
					
						
							|  |  |  |     .collect();
 | 
					
						
							|  |  |  |   let primary_field_id = test.get_first_field(FieldType::RichText).id;
 | 
					
						
							| 
									
										
										
										
											2023-12-04 14:20:07 -08:00
										 |  |  |   test
 | 
					
						
							|  |  |  |     .assert_field_settings(
 | 
					
						
							|  |  |  |       non_primary_field_ids.clone(),
 | 
					
						
							|  |  |  |       FieldVisibility::HideWhenEmpty,
 | 
					
						
							|  |  |  |       DEFAULT_WIDTH,
 | 
					
						
							|  |  |  |     )
 | 
					
						
							|  |  |  |     .await;
 | 
					
						
							|  |  |  |   test
 | 
					
						
							|  |  |  |     .assert_field_settings(
 | 
					
						
							|  |  |  |       vec![primary_field_id.clone()],
 | 
					
						
							|  |  |  |       FieldVisibility::AlwaysShown,
 | 
					
						
							|  |  |  |       DEFAULT_WIDTH,
 | 
					
						
							|  |  |  |     )
 | 
					
						
							|  |  |  |     .await;
 | 
					
						
							| 
									
										
										
										
											2023-08-27 22:31:32 +08:00
										 |  |  | }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /// Update field settings for a field
 | 
					
						
							|  |  |  | #[tokio::test]
 | 
					
						
							|  |  |  | async fn update_field_settings_test() {
 | 
					
						
							| 
									
										
										
										
											2023-09-01 22:40:17 +08:00
										 |  |  |   let mut test = FieldSettingsTest::new_board().await;
 | 
					
						
							|  |  |  |   let non_primary_field_ids: Vec<String> = test
 | 
					
						
							|  |  |  |     .get_fields()
 | 
					
						
							|  |  |  |     .into_iter()
 | 
					
						
							|  |  |  |     .filter(|field| !field.is_primary)
 | 
					
						
							|  |  |  |     .map(|field| field.id)
 | 
					
						
							|  |  |  |     .collect();
 | 
					
						
							|  |  |  |   let primary_field_id = test.get_first_field(FieldType::RichText).id;
 | 
					
						
							| 
									
										
										
										
											2023-08-27 22:31:32 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-12-04 14:20:07 -08:00
										 |  |  |   test
 | 
					
						
							|  |  |  |     .assert_field_settings(
 | 
					
						
							|  |  |  |       non_primary_field_ids.clone(),
 | 
					
						
							|  |  |  |       FieldVisibility::HideWhenEmpty,
 | 
					
						
							|  |  |  |       DEFAULT_WIDTH,
 | 
					
						
							|  |  |  |     )
 | 
					
						
							|  |  |  |     .await;
 | 
					
						
							|  |  |  |   test
 | 
					
						
							|  |  |  |     .assert_field_settings(
 | 
					
						
							|  |  |  |       vec![primary_field_id.clone()],
 | 
					
						
							|  |  |  |       FieldVisibility::AlwaysShown,
 | 
					
						
							|  |  |  |       DEFAULT_WIDTH,
 | 
					
						
							|  |  |  |     )
 | 
					
						
							|  |  |  |     .await;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   test
 | 
					
						
							|  |  |  |     .update_field_settings(
 | 
					
						
							|  |  |  |       primary_field_id.clone(),
 | 
					
						
							|  |  |  |       Some(FieldVisibility::HideWhenEmpty),
 | 
					
						
							|  |  |  |       None,
 | 
					
						
							|  |  |  |     )
 | 
					
						
							|  |  |  |     .await;
 | 
					
						
							|  |  |  |   test
 | 
					
						
							|  |  |  |     .assert_field_settings(
 | 
					
						
							|  |  |  |       non_primary_field_ids.clone(),
 | 
					
						
							|  |  |  |       FieldVisibility::HideWhenEmpty,
 | 
					
						
							|  |  |  |       DEFAULT_WIDTH,
 | 
					
						
							|  |  |  |     )
 | 
					
						
							|  |  |  |     .await;
 | 
					
						
							|  |  |  |   test
 | 
					
						
							|  |  |  |     .assert_field_settings(
 | 
					
						
							|  |  |  |       vec![primary_field_id.clone()],
 | 
					
						
							|  |  |  |       FieldVisibility::HideWhenEmpty,
 | 
					
						
							|  |  |  |       DEFAULT_WIDTH,
 | 
					
						
							|  |  |  |     )
 | 
					
						
							|  |  |  |     .await;
 | 
					
						
							| 
									
										
										
										
											2023-08-27 22:31:32 +08:00
										 |  |  | }
 |