2023-08-27 22:31:32 +08:00
|
|
|
use flowy_database2::entities::FieldVisibility;
|
|
|
|
use flowy_database2::services::field_settings::FieldSettingsChangesetParams;
|
|
|
|
|
|
|
|
use crate::database::database_editor::DatabaseEditorTest;
|
|
|
|
|
2023-08-28 13:28:24 +08:00
|
|
|
#[allow(clippy::enum_variant_names)]
|
2023-08-27 22:31:32 +08:00
|
|
|
pub enum FieldSettingsScript {
|
|
|
|
AssertFieldSettings {
|
2023-09-01 22:40:17 +08:00
|
|
|
field_ids: Vec<String>,
|
2023-08-27 22:31:32 +08:00
|
|
|
visibility: FieldVisibility,
|
2023-11-06 14:48:59 +08:00
|
|
|
width: i32,
|
2023-08-27 22:31:32 +08:00
|
|
|
},
|
|
|
|
AssertAllFieldSettings {
|
|
|
|
visibility: FieldVisibility,
|
2023-11-06 14:48:59 +08:00
|
|
|
width: i32,
|
2023-08-27 22:31:32 +08:00
|
|
|
},
|
|
|
|
UpdateFieldSettings {
|
|
|
|
field_id: String,
|
|
|
|
visibility: Option<FieldVisibility>,
|
2023-11-06 14:48:59 +08:00
|
|
|
width: Option<i32>,
|
2023-08-27 22:31:32 +08:00
|
|
|
},
|
|
|
|
}
|
|
|
|
|
|
|
|
pub struct FieldSettingsTest {
|
|
|
|
inner: DatabaseEditorTest,
|
|
|
|
}
|
|
|
|
|
|
|
|
impl FieldSettingsTest {
|
|
|
|
pub async fn new_grid() -> Self {
|
|
|
|
let inner = DatabaseEditorTest::new_grid().await;
|
|
|
|
Self { inner }
|
|
|
|
}
|
|
|
|
|
|
|
|
pub async fn new_board() -> Self {
|
|
|
|
let inner = DatabaseEditorTest::new_board().await;
|
|
|
|
Self { inner }
|
|
|
|
}
|
|
|
|
|
|
|
|
pub async fn new_calendar() -> Self {
|
|
|
|
let inner = DatabaseEditorTest::new_calendar().await;
|
|
|
|
Self { inner }
|
|
|
|
}
|
|
|
|
|
|
|
|
pub async fn run_scripts(&mut self, scripts: Vec<FieldSettingsScript>) {
|
|
|
|
for script in scripts {
|
|
|
|
self.run_script(script).await;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
pub async fn run_script(&mut self, script: FieldSettingsScript) {
|
|
|
|
match script {
|
|
|
|
FieldSettingsScript::AssertFieldSettings {
|
2023-09-01 22:40:17 +08:00
|
|
|
field_ids,
|
2023-08-27 22:31:32 +08:00
|
|
|
visibility,
|
2023-11-06 14:48:59 +08:00
|
|
|
width,
|
2023-08-27 22:31:32 +08:00
|
|
|
} => {
|
|
|
|
let field_settings = self
|
|
|
|
.editor
|
2023-11-06 14:48:59 +08:00
|
|
|
.get_field_settings(&self.view_id, field_ids)
|
2023-08-27 22:31:32 +08:00
|
|
|
.await
|
2023-09-01 22:40:17 +08:00
|
|
|
.unwrap();
|
2023-08-27 22:31:32 +08:00
|
|
|
|
2023-09-01 22:40:17 +08:00
|
|
|
for field_settings in field_settings.into_iter() {
|
2023-11-06 14:48:59 +08:00
|
|
|
assert_eq!(field_settings.width, width);
|
|
|
|
assert_eq!(field_settings.visibility, visibility);
|
2023-09-01 22:40:17 +08:00
|
|
|
}
|
2023-08-27 22:31:32 +08:00
|
|
|
},
|
2023-11-06 14:48:59 +08:00
|
|
|
FieldSettingsScript::AssertAllFieldSettings { visibility, width } => {
|
2023-08-27 22:31:32 +08:00
|
|
|
let field_settings = self
|
|
|
|
.editor
|
2023-11-06 14:48:59 +08:00
|
|
|
.get_all_field_settings(&self.view_id)
|
2023-08-27 22:31:32 +08:00
|
|
|
.await
|
|
|
|
.unwrap();
|
|
|
|
|
|
|
|
for field_settings in field_settings.into_iter() {
|
2023-11-06 14:48:59 +08:00
|
|
|
assert_eq!(field_settings.width, width);
|
|
|
|
assert_eq!(field_settings.visibility, visibility);
|
2023-08-27 22:31:32 +08:00
|
|
|
}
|
|
|
|
},
|
|
|
|
FieldSettingsScript::UpdateFieldSettings {
|
|
|
|
field_id,
|
|
|
|
visibility,
|
2023-11-06 14:48:59 +08:00
|
|
|
width,
|
2023-08-27 22:31:32 +08:00
|
|
|
} => {
|
|
|
|
let params = FieldSettingsChangesetParams {
|
|
|
|
view_id: self.view_id.clone(),
|
|
|
|
field_id,
|
|
|
|
visibility,
|
2023-11-06 14:48:59 +08:00
|
|
|
width,
|
2023-08-27 22:31:32 +08:00
|
|
|
};
|
|
|
|
let _ = self
|
|
|
|
.editor
|
|
|
|
.update_field_settings_with_changeset(params)
|
|
|
|
.await;
|
|
|
|
},
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
impl std::ops::Deref for FieldSettingsTest {
|
|
|
|
type Target = DatabaseEditorTest;
|
|
|
|
|
|
|
|
fn deref(&self) -> &Self::Target {
|
|
|
|
&self.inner
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
impl std::ops::DerefMut for FieldSettingsTest {
|
|
|
|
fn deref_mut(&mut self) -> &mut Self::Target {
|
|
|
|
&mut self.inner
|
|
|
|
}
|
|
|
|
}
|