chore: add selection option fitler test

This commit is contained in:
appflowy 2022-11-14 17:43:20 +08:00
parent c3a41ba9ad
commit ef3837f246
6 changed files with 66 additions and 2 deletions

View File

@ -12,6 +12,7 @@ pub struct SelectOptionFilterPB {
#[pb(index = 2)]
pub option_ids: Vec<String>,
}
#[derive(Debug, Clone, PartialEq, Eq, ProtoBuf_Enum)]
#[repr(u8)]
pub enum SelectOptionCondition {

View File

@ -82,6 +82,26 @@ mod tests {
false,
);
}
#[test]
fn select_option_filter_is_not_empty_test() {
let option_1 = SelectOptionPB::new("A");
let option_2 = SelectOptionPB::new("B");
let filter = SelectOptionFilterPB {
condition: SelectOptionCondition::OptionIsNotEmpty,
option_ids: vec![option_1.id.clone(), option_2.id.clone()],
};
assert_eq!(
filter.is_visible(&SelectedSelectOptions {
options: vec![option_1]
}),
true
);
assert_eq!(filter.is_visible(&SelectedSelectOptions { options: vec![] }), false,);
}
#[test]
fn select_option_filter_is_not_test() {
let option_1 = SelectOptionPB::new("A");

View File

@ -2,4 +2,5 @@ mod checkbox_filter_test;
mod date_filter_test;
mod number_filter_test;
mod script;
mod select_option_filter_test;
mod text_filter_test;

View File

@ -4,7 +4,8 @@
#![allow(unused_imports)]
use futures::TryFutureExt;
use flowy_grid::entities::{CreateFilterParams, CreateFilterPayloadPB, DeleteFilterParams, GridLayout, GridSettingChangesetParams, GridSettingPB, RowPB, TextFilterCondition, FieldType, NumberFilterCondition, CheckboxFilterCondition, DateFilterCondition, DateFilterContent};
use flowy_grid::entities::{CreateFilterParams, CreateFilterPayloadPB, DeleteFilterParams, GridLayout, GridSettingChangesetParams, GridSettingPB, RowPB, TextFilterCondition, FieldType, NumberFilterCondition, CheckboxFilterCondition, DateFilterCondition, DateFilterContent, SelectOptionCondition};
use flowy_grid::services::field::SelectOptionIds;
use flowy_grid::services::setting::GridSettingChangesetBuilder;
use grid_rev_model::{FieldRevision, FieldTypeRevision};
use flowy_grid::services::filter::FilterType;
@ -31,6 +32,10 @@ pub enum FilterScript {
end: Option<i64>,
timestamp: Option<i64>,
},
CreateMultiSelectFilter {
condition: SelectOptionCondition,
option_ids: Vec<String>,
},
AssertFilterCount {
count: i32,
},
@ -105,6 +110,14 @@ impl GridFilterTest {
self.insert_filter(payload).await;
}
FilterScript::CreateMultiSelectFilter { condition, option_ids} => {
let field_rev = self.get_field_rev(FieldType::MultiSelect);
let content =
SelectOptionIds::from(option_ids).to_string();
let payload =
CreateFilterPayloadPB::new(field_rev, condition, content);
self.insert_filter(payload).await;
}
FilterScript::AssertFilterCount { count } => {
let filters = self.editor.get_all_filters().await.unwrap();
assert_eq!(count as usize, filters.len());

View File

@ -0,0 +1,29 @@
use crate::grid::filter_test::script::FilterScript::*;
use crate::grid::filter_test::script::GridFilterTest;
use flowy_grid::entities::{NumberFilterCondition, SelectOptionCondition};
#[tokio::test]
async fn grid_filter_multi_select_is_empty_test() {
let mut test = GridFilterTest::new().await;
let scripts = vec![
CreateMultiSelectFilter {
condition: SelectOptionCondition::OptionIsEmpty,
option_ids: vec![],
},
AssertNumberOfRows { expected: 2 },
];
test.run_scripts(scripts).await;
}
#[tokio::test]
async fn grid_filter_multi_select_is_not_empty_test() {
let mut test = GridFilterTest::new().await;
let scripts = vec![
CreateMultiSelectFilter {
condition: SelectOptionCondition::OptionIsNotEmpty,
option_ids: vec![],
},
AssertNumberOfRows { expected: 3 },
];
test.run_scripts(scripts).await;
}

View File

@ -224,7 +224,7 @@ fn make_test_grid() -> BuildGridContext {
row_builder.insert_single_select_cell(|mut options| options.remove(1))
}
FieldType::MultiSelect => {
row_builder.insert_multi_select_cell(|mut options| vec![options.remove(0)])
row_builder.insert_multi_select_cell(|mut options| vec![options.remove(1)])
}
FieldType::Checkbox => row_builder.insert_checkbox_cell("false"),
_ => "".to_owned(),