chore: add date filter tests

This commit is contained in:
appflowy
2022-11-14 16:33:24 +08:00
parent 0e137f12f5
commit c80fa5da78
10 changed files with 189 additions and 106 deletions

View File

@ -41,6 +41,7 @@ impl<'a> GridRowTestBuilder<'a> {
let value = serde_json::to_string(&DateCellChangeset {
date: Some(data.to_string()),
time: None,
is_utc: true,
})
.unwrap();
let date_field = self.field_rev_with_type(&FieldType::DateTime);

View File

@ -29,7 +29,7 @@ impl GridCellTest {
match script {
CellScript::UpdateCell { changeset, is_err } => {
let result = self.editor.update_cell(changeset).await;
let result = self.editor.update_cell_with_changeset(changeset).await;
if is_err {
assert!(result.is_err())
} else {

View File

@ -58,6 +58,7 @@ pub fn make_date_cell_string(s: &str) -> String {
serde_json::to_string(&DateCellChangeset {
date: Some(s.to_string()),
time: None,
is_utc: true,
})
.unwrap()
}

View File

@ -3,15 +3,76 @@ use crate::grid::filter_test::script::GridFilterTest;
use flowy_grid::entities::DateFilterCondition;
#[tokio::test]
#[should_panic]
async fn grid_filter_date_is_check_test() {
async fn grid_filter_date_is_test() {
let mut test = GridFilterTest::new().await;
let scripts = vec![
CreateDateFilter {
condition: DateFilterCondition::DateIs,
content: "1647251762".to_string(),
start: None,
end: None,
timestamp: Some(1647251762),
},
AssertNumberOfRows { expected: 3 },
];
test.run_scripts(scripts).await;
}
#[tokio::test]
async fn grid_filter_date_after_test() {
let mut test = GridFilterTest::new().await;
let scripts = vec![
CreateDateFilter {
condition: DateFilterCondition::DateAfter,
start: None,
end: None,
timestamp: Some(1647251762),
},
AssertNumberOfRows { expected: 2 },
];
test.run_scripts(scripts).await;
}
#[tokio::test]
async fn grid_filter_date_on_or_after_test() {
let mut test = GridFilterTest::new().await;
let scripts = vec![
CreateDateFilter {
condition: DateFilterCondition::DateOnOrAfter,
start: None,
end: None,
timestamp: Some(1668359085),
},
AssertNumberOfRows { expected: 2 },
];
test.run_scripts(scripts).await;
}
#[tokio::test]
async fn grid_filter_date_on_or_before_test() {
let mut test = GridFilterTest::new().await;
let scripts = vec![
CreateDateFilter {
condition: DateFilterCondition::DateOnOrBefore,
start: None,
end: None,
timestamp: Some(1668359085),
},
AssertNumberOfRows { expected: 4 },
];
test.run_scripts(scripts).await;
}
#[tokio::test]
async fn grid_filter_date_within_test() {
let mut test = GridFilterTest::new().await;
let scripts = vec![
CreateDateFilter {
condition: DateFilterCondition::DateWithIn,
start: Some(1647251762),
end: Some(1668704685),
timestamp: None,
},
AssertNumberOfRows { expected: 5 },
];
test.run_scripts(scripts).await;
}

View File

@ -4,7 +4,7 @@
#![allow(unused_imports)]
use futures::TryFutureExt;
use flowy_grid::entities::{CreateFilterParams, CreateFilterPayloadPB, DeleteFilterParams, GridLayout, GridSettingChangesetParams, GridSettingPB, RowPB, TextFilterCondition, FieldType, NumberFilterCondition, CheckboxFilterCondition, DateFilterCondition};
use flowy_grid::entities::{CreateFilterParams, CreateFilterPayloadPB, DeleteFilterParams, GridLayout, GridSettingChangesetParams, GridSettingPB, RowPB, TextFilterCondition, FieldType, NumberFilterCondition, CheckboxFilterCondition, DateFilterCondition, DateFilterContent};
use flowy_grid::services::setting::GridSettingChangesetBuilder;
use grid_rev_model::{FieldRevision, FieldTypeRevision};
use flowy_grid::services::filter::FilterType;
@ -27,7 +27,9 @@ pub enum FilterScript {
},
CreateDateFilter{
condition: DateFilterCondition,
content: String,
start: Option<i64>,
end: Option<i64>,
timestamp: Option<i64>,
},
AssertFilterCount {
count: i32,
@ -91,10 +93,16 @@ impl GridFilterTest {
CreateFilterPayloadPB::new(field_rev, condition, "".to_string());
self.insert_filter(payload).await;
}
FilterScript::CreateDateFilter { condition, content} => {
FilterScript::CreateDateFilter { condition, start, end, timestamp} => {
let field_rev = self.get_field_rev(FieldType::DateTime);
let content = DateFilterContent {
start,
end,
timestamp,
}.to_string();
let payload =
CreateFilterPayloadPB::new(field_rev, condition, content);
self.insert_filter(payload).await;
}
FilterScript::AssertFilterCount { count } => {
@ -125,7 +133,6 @@ impl GridFilterTest {
}
async fn insert_filter(&self, payload: CreateFilterPayloadPB) {
let params: CreateFilterParams = payload.try_into().unwrap();
let _ = self.editor.create_filter(params).await.unwrap();
}

View File

@ -236,7 +236,7 @@ fn make_test_grid() -> BuildGridContext {
match field_type {
FieldType::RichText => row_builder.insert_text_cell("DA"),
FieldType::Number => row_builder.insert_number_cell("4"),
FieldType::DateTime => row_builder.insert_date_cell("1647251762"),
FieldType::DateTime => row_builder.insert_date_cell("1668704685"),
FieldType::SingleSelect => {
row_builder.insert_single_select_cell(|mut options| options.remove(1))
}
@ -250,7 +250,7 @@ fn make_test_grid() -> BuildGridContext {
match field_type {
FieldType::RichText => row_builder.insert_text_cell("AE"),
FieldType::Number => row_builder.insert_number_cell(""),
FieldType::DateTime => row_builder.insert_date_cell("1647251762"),
FieldType::DateTime => row_builder.insert_date_cell("1668359085"),
FieldType::SingleSelect => {
row_builder.insert_single_select_cell(|mut options| options.remove(2))
}