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:
Nathan.fooo
2022-11-17 16:44:17 +08:00
committed by GitHub
parent f00a78746e
commit fc10ee2d6b
77 changed files with 1607 additions and 1415 deletions

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}
}
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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