mirror of
https://github.com/AppFlowy-IO/AppFlowy.git
synced 2024-08-30 18:12:39 +00:00
fix: number and select filter logic (#4828)
* fix: number and select option filter bugs * chore: rename filter condition enum and variants
This commit is contained in:
@ -1,4 +1,4 @@
|
||||
use flowy_database2::entities::{FieldType, SelectOptionConditionPB, SelectOptionFilterPB};
|
||||
use flowy_database2::entities::{FieldType, SelectOptionFilterConditionPB, SelectOptionFilterPB};
|
||||
use lib_infra::box_any::BoxAny;
|
||||
|
||||
use crate::database::filter_test::script::FilterScript::*;
|
||||
@ -12,7 +12,7 @@ async fn grid_filter_multi_select_is_empty_test() {
|
||||
parent_filter_id: None,
|
||||
field_type: FieldType::MultiSelect,
|
||||
data: BoxAny::new(SelectOptionFilterPB {
|
||||
condition: SelectOptionConditionPB::OptionIsEmpty,
|
||||
condition: SelectOptionFilterConditionPB::OptionIsEmpty,
|
||||
option_ids: vec![],
|
||||
}),
|
||||
changed: None,
|
||||
@ -30,7 +30,7 @@ async fn grid_filter_multi_select_is_not_empty_test() {
|
||||
parent_filter_id: None,
|
||||
field_type: FieldType::MultiSelect,
|
||||
data: BoxAny::new(SelectOptionFilterPB {
|
||||
condition: SelectOptionConditionPB::OptionIsNotEmpty,
|
||||
condition: SelectOptionFilterConditionPB::OptionIsNotEmpty,
|
||||
option_ids: vec![],
|
||||
}),
|
||||
changed: None,
|
||||
@ -50,12 +50,12 @@ async fn grid_filter_multi_select_is_test() {
|
||||
parent_filter_id: None,
|
||||
field_type: FieldType::MultiSelect,
|
||||
data: BoxAny::new(SelectOptionFilterPB {
|
||||
condition: SelectOptionConditionPB::OptionIs,
|
||||
condition: SelectOptionFilterConditionPB::OptionIs,
|
||||
option_ids: vec![options.remove(0).id, options.remove(0).id],
|
||||
}),
|
||||
changed: None,
|
||||
},
|
||||
AssertNumberOfVisibleRows { expected: 5 },
|
||||
AssertNumberOfVisibleRows { expected: 1 },
|
||||
];
|
||||
test.run_scripts(scripts).await;
|
||||
}
|
||||
@ -70,12 +70,12 @@ async fn grid_filter_multi_select_is_test2() {
|
||||
parent_filter_id: None,
|
||||
field_type: FieldType::MultiSelect,
|
||||
data: BoxAny::new(SelectOptionFilterPB {
|
||||
condition: SelectOptionConditionPB::OptionIs,
|
||||
condition: SelectOptionFilterConditionPB::OptionIs,
|
||||
option_ids: vec![options.remove(1).id],
|
||||
}),
|
||||
changed: None,
|
||||
},
|
||||
AssertNumberOfVisibleRows { expected: 4 },
|
||||
AssertNumberOfVisibleRows { expected: 1 },
|
||||
];
|
||||
test.run_scripts(scripts).await;
|
||||
}
|
||||
@ -90,7 +90,7 @@ async fn grid_filter_single_select_is_empty_test() {
|
||||
parent_filter_id: None,
|
||||
field_type: FieldType::SingleSelect,
|
||||
data: BoxAny::new(SelectOptionFilterPB {
|
||||
condition: SelectOptionConditionPB::OptionIsEmpty,
|
||||
condition: SelectOptionFilterConditionPB::OptionIsEmpty,
|
||||
option_ids: vec![],
|
||||
}),
|
||||
changed: Some(FilterRowChanged {
|
||||
@ -115,7 +115,7 @@ async fn grid_filter_single_select_is_test() {
|
||||
parent_filter_id: None,
|
||||
field_type: FieldType::SingleSelect,
|
||||
data: BoxAny::new(SelectOptionFilterPB {
|
||||
condition: SelectOptionConditionPB::OptionIs,
|
||||
condition: SelectOptionFilterConditionPB::OptionIs,
|
||||
option_ids: vec![options.remove(0).id],
|
||||
}),
|
||||
changed: Some(FilterRowChanged {
|
||||
@ -142,7 +142,7 @@ async fn grid_filter_single_select_is_test2() {
|
||||
parent_filter_id: None,
|
||||
field_type: FieldType::SingleSelect,
|
||||
data: BoxAny::new(SelectOptionFilterPB {
|
||||
condition: SelectOptionConditionPB::OptionIs,
|
||||
condition: SelectOptionFilterConditionPB::OptionIs,
|
||||
option_ids: vec![option.id.clone()],
|
||||
}),
|
||||
changed: Some(FilterRowChanged {
|
||||
@ -169,3 +169,43 @@ async fn grid_filter_single_select_is_test2() {
|
||||
];
|
||||
test.run_scripts(scripts).await;
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn grid_filter_multi_select_contains_test() {
|
||||
let mut test = DatabaseFilterTest::new().await;
|
||||
let field = test.get_first_field(FieldType::MultiSelect);
|
||||
let mut options = test.get_multi_select_type_option(&field.id);
|
||||
let scripts = vec![
|
||||
CreateDataFilter {
|
||||
parent_filter_id: None,
|
||||
field_type: FieldType::MultiSelect,
|
||||
data: BoxAny::new(SelectOptionFilterPB {
|
||||
condition: SelectOptionFilterConditionPB::OptionContains,
|
||||
option_ids: vec![options.remove(0).id, options.remove(0).id],
|
||||
}),
|
||||
changed: None,
|
||||
},
|
||||
AssertNumberOfVisibleRows { expected: 5 },
|
||||
];
|
||||
test.run_scripts(scripts).await;
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn grid_filter_multi_select_contains_test2() {
|
||||
let mut test = DatabaseFilterTest::new().await;
|
||||
let field = test.get_first_field(FieldType::MultiSelect);
|
||||
let mut options = test.get_multi_select_type_option(&field.id);
|
||||
let scripts = vec![
|
||||
CreateDataFilter {
|
||||
parent_filter_id: None,
|
||||
field_type: FieldType::MultiSelect,
|
||||
data: BoxAny::new(SelectOptionFilterPB {
|
||||
condition: SelectOptionFilterConditionPB::OptionContains,
|
||||
option_ids: vec![options.remove(1).id],
|
||||
}),
|
||||
changed: None,
|
||||
},
|
||||
AssertNumberOfVisibleRows { expected: 4 },
|
||||
];
|
||||
test.run_scripts(scripts).await;
|
||||
}
|
||||
|
@ -70,7 +70,7 @@ async fn grid_filter_is_text_test() {
|
||||
parent_filter_id: None,
|
||||
field_type: FieldType::RichText,
|
||||
data: BoxAny::new(TextFilterPB {
|
||||
condition: TextFilterConditionPB::Is,
|
||||
condition: TextFilterConditionPB::TextIs,
|
||||
content: "A".to_string(),
|
||||
}),
|
||||
changed: Some(FilterRowChanged {
|
||||
@ -88,7 +88,7 @@ async fn grid_filter_contain_text_test() {
|
||||
parent_filter_id: None,
|
||||
field_type: FieldType::RichText,
|
||||
data: BoxAny::new(TextFilterPB {
|
||||
condition: TextFilterConditionPB::Contains,
|
||||
condition: TextFilterConditionPB::TextContains,
|
||||
content: "A".to_string(),
|
||||
}),
|
||||
changed: Some(FilterRowChanged {
|
||||
@ -109,7 +109,7 @@ async fn grid_filter_contain_text_test2() {
|
||||
parent_filter_id: None,
|
||||
field_type: FieldType::RichText,
|
||||
data: BoxAny::new(TextFilterPB {
|
||||
condition: TextFilterConditionPB::Contains,
|
||||
condition: TextFilterConditionPB::TextContains,
|
||||
content: "A".to_string(),
|
||||
}),
|
||||
changed: Some(FilterRowChanged {
|
||||
@ -137,7 +137,7 @@ async fn grid_filter_does_not_contain_text_test() {
|
||||
parent_filter_id: None,
|
||||
field_type: FieldType::RichText,
|
||||
data: BoxAny::new(TextFilterPB {
|
||||
condition: TextFilterConditionPB::DoesNotContain,
|
||||
condition: TextFilterConditionPB::TextDoesNotContain,
|
||||
content: "AB".to_string(),
|
||||
}),
|
||||
changed: Some(FilterRowChanged {
|
||||
@ -155,7 +155,7 @@ async fn grid_filter_start_with_text_test() {
|
||||
parent_filter_id: None,
|
||||
field_type: FieldType::RichText,
|
||||
data: BoxAny::new(TextFilterPB {
|
||||
condition: TextFilterConditionPB::StartsWith,
|
||||
condition: TextFilterConditionPB::TextStartsWith,
|
||||
content: "A".to_string(),
|
||||
}),
|
||||
changed: Some(FilterRowChanged {
|
||||
@ -174,7 +174,7 @@ async fn grid_filter_ends_with_text_test() {
|
||||
parent_filter_id: None,
|
||||
field_type: FieldType::RichText,
|
||||
data: BoxAny::new(TextFilterPB {
|
||||
condition: TextFilterConditionPB::EndsWith,
|
||||
condition: TextFilterConditionPB::TextEndsWith,
|
||||
content: "A".to_string(),
|
||||
}),
|
||||
changed: None,
|
||||
@ -192,7 +192,7 @@ async fn grid_update_text_filter_test() {
|
||||
parent_filter_id: None,
|
||||
field_type: FieldType::RichText,
|
||||
data: BoxAny::new(TextFilterPB {
|
||||
condition: TextFilterConditionPB::EndsWith,
|
||||
condition: TextFilterConditionPB::TextEndsWith,
|
||||
content: "A".to_string(),
|
||||
}),
|
||||
changed: Some(FilterRowChanged {
|
||||
@ -210,7 +210,7 @@ async fn grid_update_text_filter_test() {
|
||||
let scripts = vec![
|
||||
UpdateTextFilter {
|
||||
filter,
|
||||
condition: TextFilterConditionPB::Is,
|
||||
condition: TextFilterConditionPB::TextIs,
|
||||
content: "A".to_string(),
|
||||
changed: Some(FilterRowChanged {
|
||||
showing_num_of_rows: 0,
|
||||
|
Reference in New Issue
Block a user