mirror of
https://github.com/AppFlowy-IO/AppFlowy.git
synced 2024-08-30 18:12:39 +00:00
Fix filter test (#1459)
* chore: move grid_view_editor.rs to view_editor folder * chore: hide invisible rows * fix: lock issue * fix: flutter test potential failed * chore: separate group tests Co-authored-by: nathan <nathan@appflowy.io>
This commit is contained in:
@ -9,7 +9,10 @@ async fn grid_filter_checkbox_is_check_test() {
|
||||
CreateCheckboxFilter {
|
||||
condition: CheckboxFilterCondition::IsChecked,
|
||||
},
|
||||
AssertNumberOfRows { expected: 2 },
|
||||
AssertFilterChanged {
|
||||
visible_row_len: 2,
|
||||
hide_row_len: 3,
|
||||
},
|
||||
];
|
||||
test.run_scripts(scripts).await;
|
||||
}
|
||||
@ -21,7 +24,7 @@ async fn grid_filter_checkbox_is_uncheck_test() {
|
||||
CreateCheckboxFilter {
|
||||
condition: CheckboxFilterCondition::IsUnChecked,
|
||||
},
|
||||
AssertNumberOfRows { expected: 3 },
|
||||
AssertNumberOfVisibleRows { expected: 3 },
|
||||
];
|
||||
test.run_scripts(scripts).await;
|
||||
}
|
||||
|
@ -12,7 +12,7 @@ async fn grid_filter_date_is_test() {
|
||||
end: None,
|
||||
timestamp: Some(1647251762),
|
||||
},
|
||||
AssertNumberOfRows { expected: 3 },
|
||||
AssertNumberOfVisibleRows { expected: 3 },
|
||||
];
|
||||
test.run_scripts(scripts).await;
|
||||
}
|
||||
@ -27,7 +27,7 @@ async fn grid_filter_date_after_test() {
|
||||
end: None,
|
||||
timestamp: Some(1647251762),
|
||||
},
|
||||
AssertNumberOfRows { expected: 2 },
|
||||
AssertNumberOfVisibleRows { expected: 2 },
|
||||
];
|
||||
test.run_scripts(scripts).await;
|
||||
}
|
||||
@ -42,7 +42,7 @@ async fn grid_filter_date_on_or_after_test() {
|
||||
end: None,
|
||||
timestamp: Some(1668359085),
|
||||
},
|
||||
AssertNumberOfRows { expected: 2 },
|
||||
AssertNumberOfVisibleRows { expected: 2 },
|
||||
];
|
||||
test.run_scripts(scripts).await;
|
||||
}
|
||||
@ -57,7 +57,7 @@ async fn grid_filter_date_on_or_before_test() {
|
||||
end: None,
|
||||
timestamp: Some(1668359085),
|
||||
},
|
||||
AssertNumberOfRows { expected: 4 },
|
||||
AssertNumberOfVisibleRows { expected: 4 },
|
||||
];
|
||||
test.run_scripts(scripts).await;
|
||||
}
|
||||
@ -72,7 +72,7 @@ async fn grid_filter_date_within_test() {
|
||||
end: Some(1668704685),
|
||||
timestamp: None,
|
||||
},
|
||||
AssertNumberOfRows { expected: 5 },
|
||||
AssertNumberOfVisibleRows { expected: 5 },
|
||||
];
|
||||
test.run_scripts(scripts).await;
|
||||
}
|
||||
|
@ -10,7 +10,7 @@ async fn grid_filter_number_is_equal_test() {
|
||||
condition: NumberFilterCondition::Equal,
|
||||
content: "1".to_string(),
|
||||
},
|
||||
AssertNumberOfRows { expected: 1 },
|
||||
AssertNumberOfVisibleRows { expected: 1 },
|
||||
];
|
||||
test.run_scripts(scripts).await;
|
||||
}
|
||||
@ -23,7 +23,7 @@ async fn grid_filter_number_is_less_than_test() {
|
||||
condition: NumberFilterCondition::LessThan,
|
||||
content: "3".to_string(),
|
||||
},
|
||||
AssertNumberOfRows { expected: 2 },
|
||||
AssertNumberOfVisibleRows { expected: 2 },
|
||||
];
|
||||
test.run_scripts(scripts).await;
|
||||
}
|
||||
@ -37,7 +37,7 @@ async fn grid_filter_number_is_less_than_test2() {
|
||||
condition: NumberFilterCondition::LessThan,
|
||||
content: "$3".to_string(),
|
||||
},
|
||||
AssertNumberOfRows { expected: 2 },
|
||||
AssertNumberOfVisibleRows { expected: 2 },
|
||||
];
|
||||
test.run_scripts(scripts).await;
|
||||
}
|
||||
@ -50,7 +50,7 @@ async fn grid_filter_number_is_less_than_or_equal_test() {
|
||||
condition: NumberFilterCondition::LessThanOrEqualTo,
|
||||
content: "3".to_string(),
|
||||
},
|
||||
AssertNumberOfRows { expected: 3 },
|
||||
AssertNumberOfVisibleRows { expected: 3 },
|
||||
];
|
||||
test.run_scripts(scripts).await;
|
||||
}
|
||||
@ -63,7 +63,7 @@ async fn grid_filter_number_is_empty_test() {
|
||||
condition: NumberFilterCondition::NumberIsEmpty,
|
||||
content: "".to_string(),
|
||||
},
|
||||
AssertNumberOfRows { expected: 1 },
|
||||
AssertNumberOfVisibleRows { expected: 1 },
|
||||
];
|
||||
test.run_scripts(scripts).await;
|
||||
}
|
||||
@ -76,7 +76,7 @@ async fn grid_filter_number_is_not_empty_test() {
|
||||
condition: NumberFilterCondition::NumberIsNotEmpty,
|
||||
content: "".to_string(),
|
||||
},
|
||||
AssertNumberOfRows { expected: 4 },
|
||||
AssertNumberOfVisibleRows { expected: 4 },
|
||||
];
|
||||
test.run_scripts(scripts).await;
|
||||
}
|
||||
|
@ -3,6 +3,7 @@
|
||||
#![allow(dead_code)]
|
||||
#![allow(unused_imports)]
|
||||
|
||||
use std::time::Duration;
|
||||
use bytes::Bytes;
|
||||
use futures::TryFutureExt;
|
||||
use flowy_grid::entities::{CreateFilterParams, CreateFilterPayloadPB, DeleteFilterParams, GridLayout, GridSettingChangesetParams, GridSettingPB, RowPB, TextFilterCondition, FieldType, NumberFilterCondition, CheckboxFilterCondition, DateFilterCondition, DateFilterContent, SelectOptionCondition, TextFilterPB, NumberFilterPB, CheckboxFilterPB, DateFilterPB, SelectOptionFilterPB};
|
||||
@ -10,6 +11,7 @@ use flowy_grid::services::field::SelectOptionIds;
|
||||
use flowy_grid::services::setting::GridSettingChangesetBuilder;
|
||||
use grid_rev_model::{FieldRevision, FieldTypeRevision};
|
||||
use flowy_grid::services::filter::FilterType;
|
||||
use flowy_grid::services::view_editor::GridViewChanged;
|
||||
use crate::grid::grid_editor::GridEditorTest;
|
||||
|
||||
pub enum FilterScript {
|
||||
@ -53,13 +55,18 @@ pub enum FilterScript {
|
||||
condition: u32,
|
||||
content: String
|
||||
},
|
||||
AssertNumberOfRows{
|
||||
AssertNumberOfVisibleRows {
|
||||
expected: usize,
|
||||
},
|
||||
AssertFilterChanged{
|
||||
visible_row_len:usize,
|
||||
hide_row_len: usize,
|
||||
},
|
||||
#[allow(dead_code)]
|
||||
AssertGridSetting {
|
||||
expected_setting: GridSettingPB,
|
||||
},
|
||||
Wait { millisecond: u64 }
|
||||
}
|
||||
|
||||
pub struct GridFilterTest {
|
||||
@ -160,12 +167,23 @@ impl GridFilterTest {
|
||||
let setting = self.editor.get_setting().await.unwrap();
|
||||
assert_eq!(expected_setting, setting);
|
||||
}
|
||||
FilterScript::AssertNumberOfRows { expected } => {
|
||||
FilterScript::AssertFilterChanged { visible_row_len, hide_row_len} => {
|
||||
let mut receiver = self.editor.subscribe_view_changed().await;
|
||||
let changed = receiver.recv().await.unwrap();
|
||||
match changed { GridViewChanged::DidReceiveFilterResult(changed) => {
|
||||
assert_eq!(changed.visible_rows.len(), visible_row_len);
|
||||
assert_eq!(changed.invisible_rows.len(), hide_row_len);
|
||||
} }
|
||||
}
|
||||
FilterScript::AssertNumberOfVisibleRows { expected } => {
|
||||
//
|
||||
let grid = self.editor.get_grid().await.unwrap();
|
||||
let rows = grid.blocks.into_iter().map(|block| block.rows).flatten().collect::<Vec<RowPB>>();
|
||||
assert_eq!(rows.len(), expected);
|
||||
}
|
||||
FilterScript::Wait { millisecond } => {
|
||||
tokio::time::sleep(Duration::from_millis(millisecond)).await;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -10,7 +10,7 @@ async fn grid_filter_multi_select_is_empty_test() {
|
||||
condition: SelectOptionCondition::OptionIsEmpty,
|
||||
option_ids: vec![],
|
||||
},
|
||||
AssertNumberOfRows { expected: 2 },
|
||||
AssertNumberOfVisibleRows { expected: 2 },
|
||||
];
|
||||
test.run_scripts(scripts).await;
|
||||
}
|
||||
@ -23,7 +23,7 @@ async fn grid_filter_multi_select_is_not_empty_test() {
|
||||
condition: SelectOptionCondition::OptionIsNotEmpty,
|
||||
option_ids: vec![],
|
||||
},
|
||||
AssertNumberOfRows { expected: 3 },
|
||||
AssertNumberOfVisibleRows { expected: 3 },
|
||||
];
|
||||
test.run_scripts(scripts).await;
|
||||
}
|
||||
@ -37,7 +37,7 @@ async fn grid_filter_multi_select_is_test() {
|
||||
condition: SelectOptionCondition::OptionIs,
|
||||
option_ids: vec![options.remove(0).id, options.remove(0).id],
|
||||
},
|
||||
AssertNumberOfRows { expected: 2 },
|
||||
AssertNumberOfVisibleRows { expected: 2 },
|
||||
];
|
||||
test.run_scripts(scripts).await;
|
||||
}
|
||||
@ -51,7 +51,7 @@ async fn grid_filter_multi_select_is_test2() {
|
||||
condition: SelectOptionCondition::OptionIs,
|
||||
option_ids: vec![options.remove(1).id],
|
||||
},
|
||||
AssertNumberOfRows { expected: 1 },
|
||||
AssertNumberOfVisibleRows { expected: 1 },
|
||||
];
|
||||
test.run_scripts(scripts).await;
|
||||
}
|
||||
@ -64,7 +64,7 @@ async fn grid_filter_single_select_is_empty_test() {
|
||||
condition: SelectOptionCondition::OptionIsEmpty,
|
||||
option_ids: vec![],
|
||||
},
|
||||
AssertNumberOfRows { expected: 2 },
|
||||
AssertNumberOfVisibleRows { expected: 2 },
|
||||
];
|
||||
test.run_scripts(scripts).await;
|
||||
}
|
||||
@ -78,7 +78,7 @@ async fn grid_filter_single_select_is_test() {
|
||||
condition: SelectOptionCondition::OptionIs,
|
||||
option_ids: vec![options.remove(0).id],
|
||||
},
|
||||
AssertNumberOfRows { expected: 2 },
|
||||
AssertNumberOfVisibleRows { expected: 2 },
|
||||
];
|
||||
test.run_scripts(scripts).await;
|
||||
}
|
||||
|
@ -12,7 +12,27 @@ async fn grid_filter_text_is_empty_test() {
|
||||
content: "".to_string(),
|
||||
},
|
||||
AssertFilterCount { count: 1 },
|
||||
AssertNumberOfRows { expected: 0 },
|
||||
AssertFilterChanged {
|
||||
visible_row_len: 1,
|
||||
hide_row_len: 4,
|
||||
},
|
||||
];
|
||||
test.run_scripts(scripts).await;
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn grid_filter_text_is_not_empty_test() {
|
||||
let mut test = GridFilterTest::new().await;
|
||||
let scripts = vec![
|
||||
CreateTextFilter {
|
||||
condition: TextFilterCondition::TextIsNotEmpty,
|
||||
content: "".to_string(),
|
||||
},
|
||||
AssertFilterCount { count: 1 },
|
||||
AssertFilterChanged {
|
||||
visible_row_len: 4,
|
||||
hide_row_len: 1,
|
||||
},
|
||||
];
|
||||
test.run_scripts(scripts).await;
|
||||
}
|
||||
@ -25,7 +45,10 @@ async fn grid_filter_is_text_test() {
|
||||
condition: TextFilterCondition::Is,
|
||||
content: "A".to_string(),
|
||||
},
|
||||
AssertNumberOfRows { expected: 1 },
|
||||
AssertFilterChanged {
|
||||
visible_row_len: 1,
|
||||
hide_row_len: 4,
|
||||
},
|
||||
];
|
||||
test.run_scripts(scripts).await;
|
||||
}
|
||||
@ -38,7 +61,10 @@ async fn grid_filter_contain_text_test() {
|
||||
condition: TextFilterCondition::Contains,
|
||||
content: "A".to_string(),
|
||||
},
|
||||
AssertNumberOfRows { expected: 3 },
|
||||
AssertFilterChanged {
|
||||
visible_row_len: 3,
|
||||
hide_row_len: 2,
|
||||
},
|
||||
];
|
||||
test.run_scripts(scripts).await;
|
||||
}
|
||||
@ -51,7 +77,10 @@ async fn grid_filter_start_with_text_test() {
|
||||
condition: TextFilterCondition::StartsWith,
|
||||
content: "A".to_string(),
|
||||
},
|
||||
AssertNumberOfRows { expected: 2 },
|
||||
AssertFilterChanged {
|
||||
visible_row_len: 2,
|
||||
hide_row_len: 3,
|
||||
},
|
||||
];
|
||||
test.run_scripts(scripts).await;
|
||||
}
|
||||
@ -64,7 +93,7 @@ async fn grid_filter_ends_with_text_test() {
|
||||
condition: TextFilterCondition::EndsWith,
|
||||
content: "A".to_string(),
|
||||
},
|
||||
AssertNumberOfRows { expected: 2 },
|
||||
AssertNumberOfVisibleRows { expected: 2 },
|
||||
];
|
||||
test.run_scripts(scripts).await;
|
||||
}
|
||||
@ -81,7 +110,7 @@ async fn grid_filter_delete_test() {
|
||||
let scripts = vec![
|
||||
InsertFilter { payload },
|
||||
AssertFilterCount { count: 1 },
|
||||
AssertNumberOfRows { expected: 0 },
|
||||
AssertNumberOfVisibleRows { expected: 1 },
|
||||
];
|
||||
test.run_scripts(scripts).await;
|
||||
|
||||
@ -92,7 +121,7 @@ async fn grid_filter_delete_test() {
|
||||
filter_type: FilterType::from(&field_rev),
|
||||
},
|
||||
AssertFilterCount { count: 0 },
|
||||
AssertNumberOfRows { expected: 5 },
|
||||
AssertNumberOfVisibleRows { expected: 5 },
|
||||
])
|
||||
.await;
|
||||
}
|
||||
|
@ -220,7 +220,7 @@ fn make_test_grid() -> BuildGridContext {
|
||||
1 => {
|
||||
for field_type in FieldType::iter() {
|
||||
match field_type {
|
||||
FieldType::RichText => row_builder.insert_text_cell("B"),
|
||||
FieldType::RichText => row_builder.insert_text_cell(""),
|
||||
FieldType::Number => row_builder.insert_number_cell("2"),
|
||||
FieldType::DateTime => row_builder.insert_date_cell("1647251762"),
|
||||
FieldType::MultiSelect => row_builder
|
||||
|
Reference in New Issue
Block a user