mirror of
https://github.com/AppFlowy-IO/AppFlowy.git
synced 2024-08-30 18:12:39 +00:00
chore: add filter feature flag & enable filter tests
This commit is contained in:
@ -0,0 +1,2 @@
|
||||
mod script;
|
||||
mod test;
|
@ -0,0 +1,91 @@
|
||||
#![cfg_attr(rustfmt, rustfmt::skip)]
|
||||
#![allow(clippy::all)]
|
||||
#![allow(dead_code)]
|
||||
#![allow(unused_imports)]
|
||||
|
||||
use flowy_grid::entities::{CreateGridFilterPayload, GridLayoutType, GridSetting};
|
||||
use flowy_grid::services::setting::GridSettingChangesetBuilder;
|
||||
use flowy_grid_data_model::revision::FieldTypeRevision;
|
||||
use flowy_sync::entities::grid::{CreateGridFilterParams, DeleteFilterParams, GridSettingChangesetParams};
|
||||
use crate::grid::script::GridEditorTest;
|
||||
|
||||
pub enum FilterScript {
|
||||
#[allow(dead_code)]
|
||||
UpdateGridSetting {
|
||||
params: GridSettingChangesetParams,
|
||||
},
|
||||
InsertGridTableFilter {
|
||||
payload: CreateGridFilterPayload,
|
||||
},
|
||||
AssertTableFilterCount {
|
||||
count: i32,
|
||||
},
|
||||
DeleteGridTableFilter {
|
||||
filter_id: String,
|
||||
field_type_rev: FieldTypeRevision,
|
||||
},
|
||||
#[allow(dead_code)]
|
||||
AssertGridSetting {
|
||||
expected_setting: GridSetting,
|
||||
},
|
||||
}
|
||||
|
||||
pub struct GridFilterTest {
|
||||
pub editor_test: GridEditorTest,
|
||||
}
|
||||
|
||||
impl GridFilterTest {
|
||||
pub async fn new() -> Self {
|
||||
let editor_test = GridEditorTest::new().await;
|
||||
Self {
|
||||
editor_test
|
||||
}
|
||||
}
|
||||
|
||||
pub async fn run_scripts(&mut self, scripts: Vec<FilterScript>) {
|
||||
for script in scripts {
|
||||
self.run_script(script).await;
|
||||
}
|
||||
}
|
||||
|
||||
pub async fn run_script(&mut self, script: FilterScript) {
|
||||
|
||||
match script {
|
||||
FilterScript::UpdateGridSetting { params } => {
|
||||
let _ = self.editor.update_grid_setting(params).await.unwrap();
|
||||
}
|
||||
FilterScript::InsertGridTableFilter { payload } => {
|
||||
let params: CreateGridFilterParams = payload.try_into().unwrap();
|
||||
let layout_type = GridLayoutType::Table;
|
||||
let params = GridSettingChangesetBuilder::new(&self.grid_id, &layout_type)
|
||||
.insert_filter(params)
|
||||
.build();
|
||||
let _ = self.editor.update_grid_setting(params).await.unwrap();
|
||||
}
|
||||
FilterScript::AssertTableFilterCount { count } => {
|
||||
let layout_type = GridLayoutType::Table;
|
||||
let filters = self.editor.get_grid_filter(&layout_type).await.unwrap();
|
||||
assert_eq!(count as usize, filters.len());
|
||||
}
|
||||
FilterScript::DeleteGridTableFilter { filter_id ,field_type_rev} => {
|
||||
let layout_type = GridLayoutType::Table;
|
||||
let params = GridSettingChangesetBuilder::new(&self.grid_id, &layout_type)
|
||||
.delete_filter(DeleteFilterParams { filter_id, field_type_rev })
|
||||
.build();
|
||||
let _ = self.editor.update_grid_setting(params).await.unwrap();
|
||||
}
|
||||
FilterScript::AssertGridSetting { expected_setting } => {
|
||||
let setting = self.editor.get_grid_setting().await.unwrap();
|
||||
assert_eq!(expected_setting, setting);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl std::ops::Deref for GridFilterTest {
|
||||
type Target = GridEditorTest;
|
||||
|
||||
fn deref(&self) -> &Self::Target {
|
||||
&self.editor_test
|
||||
}
|
||||
}
|
@ -1,41 +1,41 @@
|
||||
use crate::grid::script::EditorScript::*;
|
||||
use crate::grid::script::*;
|
||||
use flowy_grid::entities::CreateGridFilterPayload;
|
||||
use crate::grid::filter_test::script::FilterScript::*;
|
||||
use crate::grid::filter_test::script::*;
|
||||
use flowy_grid::entities::{CreateGridFilterPayload, TextFilterCondition};
|
||||
use flowy_grid_data_model::revision::FieldRevision;
|
||||
|
||||
#[tokio::test]
|
||||
async fn grid_filter_create_test() {
|
||||
let test = GridEditorTest::new().await;
|
||||
let mut test = GridFilterTest::new().await;
|
||||
let field_rev = test.text_field();
|
||||
let payload = CreateGridFilterPayload::new(field_rev, TextFilterCondition::TextIsEmpty, Some("abc".to_owned()));
|
||||
let scripts = vec![InsertGridTableFilter { payload }, AssertTableFilterCount { count: 1 }];
|
||||
GridEditorTest::new().await.run_scripts(scripts).await;
|
||||
test.run_scripts(scripts).await;
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
#[should_panic]
|
||||
async fn grid_filter_invalid_condition_panic_test() {
|
||||
let test = GridEditorTest::new().await;
|
||||
let field_rev = test.text_field();
|
||||
let mut test = GridFilterTest::new().await;
|
||||
|
||||
// 100 is not a valid condition, so this test should be panic.
|
||||
let payload = CreateGridFilterPayload::new(field_rev, 100, Some("abc".to_owned()));
|
||||
let payload = create_filter(&test, "abc");
|
||||
let scripts = vec![InsertGridTableFilter { payload }];
|
||||
GridEditorTest::new().await.run_scripts(scripts).await;
|
||||
test.run_scripts(scripts).await;
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn grid_filter_delete_test() {
|
||||
let mut test = GridEditorTest::new().await;
|
||||
let field_rev = test.text_field().clone();
|
||||
let payload = CreateGridFilterPayload::new(&field_rev, TextFilterCondition::TextIsEmpty, Some("abc".to_owned()));
|
||||
let mut test = GridFilterTest::new().await;
|
||||
let payload = create_filter(&test, "abc");
|
||||
let scripts = vec![InsertGridTableFilter { payload }, AssertTableFilterCount { count: 1 }];
|
||||
test.run_scripts(scripts).await;
|
||||
|
||||
let filter = test.grid_filters().await.pop().unwrap();
|
||||
|
||||
test.run_scripts(vec![
|
||||
DeleteGridTableFilter {
|
||||
filter_id: filter.id,
|
||||
field_type: field_rev.field_type.clone(),
|
||||
field_type_rev: field_rev.field_type_rev.clone(),
|
||||
},
|
||||
AssertTableFilterCount { count: 0 },
|
||||
])
|
||||
@ -44,3 +44,8 @@ async fn grid_filter_delete_test() {
|
||||
|
||||
#[tokio::test]
|
||||
async fn grid_filter_get_rows_test() {}
|
||||
|
||||
fn create_filter(grid_filter_test: &GridFilterTest, s: &str) -> CreateGridFilterPayload {
|
||||
let field_rev = grid_filter_test.text_field();
|
||||
CreateGridFilterPayload::new(&field_rev, TextFilterCondition::TextIsEmpty, Some(s.to_owned()))
|
||||
}
|
@ -2,7 +2,7 @@ mod block_test;
|
||||
mod cell_test;
|
||||
mod field_test;
|
||||
mod field_util;
|
||||
// mod filter_test;
|
||||
mod filter_test;
|
||||
mod row_test;
|
||||
mod row_util;
|
||||
mod script;
|
||||
|
@ -82,7 +82,7 @@ pub enum EditorScript {
|
||||
},
|
||||
DeleteGridTableFilter {
|
||||
filter_id: String,
|
||||
field_type: FieldType,
|
||||
field_type_rev: FieldTypeRevision,
|
||||
},
|
||||
#[allow(dead_code)]
|
||||
AssertGridSetting {
|
||||
@ -271,10 +271,10 @@ impl GridEditorTest {
|
||||
let filters = self.editor.get_grid_filter(&layout_type).await.unwrap();
|
||||
assert_eq!(count as usize, filters.len());
|
||||
}
|
||||
EditorScript::DeleteGridTableFilter { filter_id ,field_type} => {
|
||||
EditorScript::DeleteGridTableFilter { filter_id ,field_type_rev} => {
|
||||
let layout_type = GridLayoutType::Table;
|
||||
let params = GridSettingChangesetBuilder::new(&self.grid_id, &layout_type)
|
||||
.delete_filter(DeleteFilterParams { filter_id, field_type_rev: field_type.into() })
|
||||
.delete_filter(DeleteFilterParams { filter_id, field_type_rev })
|
||||
.build();
|
||||
let _ = self.editor.update_grid_setting(params).await.unwrap();
|
||||
}
|
||||
|
Reference in New Issue
Block a user