Richard Shiue f0e4f3db61
chore: per-view field settings (#3199)
* chore: field-setting entities-events-notifications

* chore: update field settings

* chore: add tests

* chore: add docs

* chore: use an enum for field visibility

* chore: clippy warnings

* fix: deps fields

* chore: collab merge main

* chore: collab ref

* test: fix tests

* fix: tauri bump collab rev
2023-08-27 22:31:32 +08:00

56 lines
1.9 KiB
Rust

use collab_database::views::DatabaseLayout;
use flowy_database2::entities::FieldType;
use flowy_database2::entities::FieldVisibility;
use flowy_database2::services::field_settings::default_visibility;
use crate::database::field_settings_test::script::FieldSettingsScript::*;
use crate::database::field_settings_test::script::FieldSettingsTest;
/// Check default field settings for grid, kanban and calendar
#[tokio::test]
async fn get_default_field_settings() {
let mut test = FieldSettingsTest::new_grid().await;
let visibility = default_visibility(DatabaseLayout::Grid);
let scripts = vec![AssertAllFieldSettings { visibility }];
test.run_scripts(scripts).await;
let mut test = FieldSettingsTest::new_board().await;
let visibility = default_visibility(DatabaseLayout::Board);
let scripts = vec![AssertAllFieldSettings { visibility }];
test.run_scripts(scripts).await;
let mut test = FieldSettingsTest::new_calendar().await;
let visibility = default_visibility(DatabaseLayout::Calendar);
let scripts = vec![AssertAllFieldSettings { visibility }];
test.run_scripts(scripts).await;
}
/// Update field settings for a field
#[tokio::test]
async fn update_field_settings_test() {
let mut test = FieldSettingsTest::new_grid().await;
let checkbox_field = test.get_first_field(FieldType::Checkbox);
let text_field = test.get_first_field(FieldType::RichText);
let visibility = default_visibility(DatabaseLayout::Grid);
let new_visibility = FieldVisibility::AlwaysHidden;
let scripts = vec![
AssertAllFieldSettings {
visibility: visibility.clone(),
},
UpdateFieldSettings {
field_id: checkbox_field.id.clone(),
visibility: Some(new_visibility.clone()),
},
AssertFieldSettings {
field_id: checkbox_field.id,
visibility: new_visibility,
},
AssertFieldSettings {
field_id: text_field.id,
visibility,
},
];
test.run_scripts(scripts).await;
}