mirror of
https://github.com/AppFlowy-IO/AppFlowy.git
synced 2024-08-30 18:12:39 +00:00
chore: fix some bugs and add more tests
This commit is contained in:
@ -97,7 +97,7 @@ impl<'a> GridRowTestBuilder<'a> {
|
||||
self.field_revs
|
||||
.iter()
|
||||
.find(|field_rev| {
|
||||
let t_field_type: FieldType = field_rev.field_type_rev.into();
|
||||
let t_field_type: FieldType = field_rev.ty.into();
|
||||
&t_field_type == field_type
|
||||
})
|
||||
.unwrap()
|
||||
|
@ -18,7 +18,7 @@ async fn grid_cell_update() {
|
||||
let mut scripts = vec![];
|
||||
for (_, row_rev) in row_revs.iter().enumerate() {
|
||||
for field_rev in field_revs {
|
||||
let field_type: FieldType = field_rev.field_type_rev.into();
|
||||
let field_type: FieldType = field_rev.ty.into();
|
||||
let data = match field_type {
|
||||
FieldType::RichText => "".to_string(),
|
||||
FieldType::Number => "123".to_string(),
|
||||
@ -40,7 +40,7 @@ async fn grid_cell_update() {
|
||||
grid_id: block_id.to_string(),
|
||||
row_id: row_rev.id.clone(),
|
||||
field_id: field_rev.id.clone(),
|
||||
content: Some(data),
|
||||
content: data,
|
||||
},
|
||||
is_err: false,
|
||||
});
|
||||
|
@ -12,7 +12,7 @@ pub fn create_text_field(grid_id: &str) -> (InsertFieldParams, FieldRevision) {
|
||||
let cloned_field_rev = field_rev.clone();
|
||||
|
||||
let type_option_data = field_rev
|
||||
.get_type_option_entry::<RichTextTypeOptionPB>(field_rev.field_type_rev)
|
||||
.get_type_option_entry::<RichTextTypeOptionPB>(field_rev.ty)
|
||||
.unwrap()
|
||||
.protobuf_bytes()
|
||||
.to_vec();
|
||||
@ -21,7 +21,7 @@ pub fn create_text_field(grid_id: &str) -> (InsertFieldParams, FieldRevision) {
|
||||
id: field_rev.id,
|
||||
name: field_rev.name,
|
||||
desc: field_rev.desc,
|
||||
field_type: field_rev.field_type_rev.into(),
|
||||
field_type: field_rev.ty.into(),
|
||||
frozen: field_rev.frozen,
|
||||
visibility: field_rev.visibility,
|
||||
width: field_rev.width,
|
||||
@ -45,7 +45,7 @@ pub fn create_single_select_field(grid_id: &str) -> (InsertFieldParams, FieldRev
|
||||
let field_rev = FieldBuilder::new(single_select).name("Name").visibility(true).build();
|
||||
let cloned_field_rev = field_rev.clone();
|
||||
let type_option_data = field_rev
|
||||
.get_type_option_entry::<SingleSelectTypeOptionPB>(field_rev.field_type_rev)
|
||||
.get_type_option_entry::<SingleSelectTypeOptionPB>(field_rev.ty)
|
||||
.unwrap()
|
||||
.protobuf_bytes()
|
||||
.to_vec();
|
||||
@ -54,7 +54,7 @@ pub fn create_single_select_field(grid_id: &str) -> (InsertFieldParams, FieldRev
|
||||
id: field_rev.id,
|
||||
name: field_rev.name,
|
||||
desc: field_rev.desc,
|
||||
field_type: field_rev.field_type_rev.into(),
|
||||
field_type: field_rev.ty.into(),
|
||||
frozen: field_rev.frozen,
|
||||
visibility: field_rev.visibility,
|
||||
width: field_rev.width,
|
||||
|
@ -68,7 +68,7 @@ impl GridFilterTest {
|
||||
FilterScript::DeleteGridTableFilter { filter_id, field_rev} => {
|
||||
let layout_type = GridLayout::Table;
|
||||
let params = GridSettingChangesetBuilder::new(&self.grid_id, &layout_type)
|
||||
.delete_filter(DeleteFilterParams { field_id: field_rev.id, filter_id, field_type_rev: field_rev.field_type_rev })
|
||||
.delete_filter(DeleteFilterParams { field_id: field_rev.id, filter_id, field_type_rev: field_rev.ty })
|
||||
.build();
|
||||
let _ = self.editor.update_grid_setting(params).await.unwrap();
|
||||
}
|
||||
|
@ -96,7 +96,7 @@ impl GridEditorTest {
|
||||
self.field_revs
|
||||
.iter()
|
||||
.filter(|field_rev| {
|
||||
let t_field_type: FieldType = field_rev.field_type_rev.into();
|
||||
let t_field_type: FieldType = field_rev.ty.into();
|
||||
t_field_type == field_type
|
||||
})
|
||||
.collect::<Vec<_>>()
|
||||
|
@ -1,5 +1,7 @@
|
||||
use crate::grid::grid_editor::GridEditorTest;
|
||||
use flowy_grid::entities::{GroupPB, MoveRowParams, RowPB};
|
||||
use flowy_grid::entities::{CreateRowParams, FieldType, GridLayout, GroupPB, MoveRowParams, RowPB};
|
||||
use flowy_grid::services::cell::insert_select_option_cell;
|
||||
use flowy_grid_data_model::revision::RowChangeset;
|
||||
|
||||
pub enum GroupScript {
|
||||
AssertGroup {
|
||||
@ -7,7 +9,7 @@ pub enum GroupScript {
|
||||
row_count: usize,
|
||||
},
|
||||
AssertGroupCount(usize),
|
||||
AssertGroupRow {
|
||||
AssertRow {
|
||||
group_index: usize,
|
||||
row_index: usize,
|
||||
row: RowPB,
|
||||
@ -18,6 +20,18 @@ pub enum GroupScript {
|
||||
to_group_index: usize,
|
||||
to_row_index: usize,
|
||||
},
|
||||
CreateRow {
|
||||
group_index: usize,
|
||||
},
|
||||
DeleteRow {
|
||||
group_index: usize,
|
||||
row_index: usize,
|
||||
},
|
||||
UpdateRow {
|
||||
from_group_index: usize,
|
||||
row_index: usize,
|
||||
to_group_index: usize,
|
||||
},
|
||||
}
|
||||
|
||||
pub struct GridGroupTest {
|
||||
@ -62,7 +76,7 @@ impl GridGroupTest {
|
||||
|
||||
self.editor.move_row(params).await.unwrap();
|
||||
}
|
||||
GroupScript::AssertGroupRow {
|
||||
GroupScript::AssertRow {
|
||||
group_index,
|
||||
row_index,
|
||||
row,
|
||||
@ -73,6 +87,44 @@ impl GridGroupTest {
|
||||
|
||||
assert_eq!(row.id, compare_row.id);
|
||||
}
|
||||
GroupScript::CreateRow { group_index } => {
|
||||
//
|
||||
let group = self.group_at_index(group_index).await;
|
||||
let params = CreateRowParams {
|
||||
grid_id: self.editor.grid_id.clone(),
|
||||
start_row_id: None,
|
||||
group_id: Some(group.group_id.clone()),
|
||||
layout: GridLayout::Board,
|
||||
};
|
||||
let _ = self.editor.create_row(params).await.unwrap();
|
||||
}
|
||||
GroupScript::DeleteRow { group_index, row_index } => {
|
||||
let row = self.row_at_index(group_index, row_index).await;
|
||||
self.editor.delete_row(&row.id).await.unwrap();
|
||||
}
|
||||
GroupScript::UpdateRow {
|
||||
from_group_index,
|
||||
row_index,
|
||||
to_group_index,
|
||||
} => {
|
||||
let from_group = self.group_at_index(from_group_index).await;
|
||||
let to_group = self.group_at_index(to_group_index).await;
|
||||
let field_id = from_group.field_id;
|
||||
let field_rev = self.editor.get_field_rev(&field_id).await.unwrap();
|
||||
let field_type: FieldType = field_rev.ty.into();
|
||||
let cell_rev = match field_type {
|
||||
FieldType::SingleSelect => insert_select_option_cell(to_group.group_id.clone(), &field_rev),
|
||||
FieldType::MultiSelect => insert_select_option_cell(to_group.group_id.clone(), &field_rev),
|
||||
_ => {
|
||||
panic!("Unsupported group field type");
|
||||
}
|
||||
};
|
||||
|
||||
let row_id = self.row_at_index(from_group_index, row_index).await.id;
|
||||
let mut row_changeset = RowChangeset::new(row_id);
|
||||
row_changeset.cell_by_field_id.insert(field_id, cell_rev);
|
||||
self.editor.update_row(row_changeset).await.unwrap();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -80,6 +132,11 @@ impl GridGroupTest {
|
||||
let groups = self.editor.load_groups().await.unwrap().items;
|
||||
groups.get(index).unwrap().clone()
|
||||
}
|
||||
|
||||
pub async fn row_at_index(&self, group_index: usize, row_index: usize) -> RowPB {
|
||||
let groups = self.group_at_index(group_index).await;
|
||||
groups.rows.get(row_index).unwrap().clone()
|
||||
}
|
||||
}
|
||||
|
||||
impl std::ops::Deref for GridGroupTest {
|
||||
|
@ -27,6 +27,7 @@ async fn board_move_row_test() {
|
||||
let mut test = GridGroupTest::new().await;
|
||||
let group = test.group_at_index(0).await;
|
||||
let scripts = vec![
|
||||
// Move the row at 0 in group0 to group1 at 1
|
||||
MoveRow {
|
||||
from_group_index: 0,
|
||||
from_row_index: 0,
|
||||
@ -37,7 +38,7 @@ async fn board_move_row_test() {
|
||||
group_index: 0,
|
||||
row_count: 2,
|
||||
},
|
||||
AssertGroupRow {
|
||||
AssertRow {
|
||||
group_index: 0,
|
||||
row_index: 1,
|
||||
row: group.rows.get(0).unwrap().clone(),
|
||||
@ -65,7 +66,7 @@ async fn board_move_row_to_other_group_test() {
|
||||
group_index: 1,
|
||||
row_count: 3,
|
||||
},
|
||||
AssertGroupRow {
|
||||
AssertRow {
|
||||
group_index: 1,
|
||||
row_index: 1,
|
||||
row: group.rows.get(0).unwrap().clone(),
|
||||
@ -91,7 +92,7 @@ async fn board_move_row_to_other_group_and_reorder_test() {
|
||||
to_group_index: 1,
|
||||
to_row_index: 2,
|
||||
},
|
||||
AssertGroupRow {
|
||||
AssertRow {
|
||||
group_index: 1,
|
||||
row_index: 2,
|
||||
row: group.rows.get(0).unwrap().clone(),
|
||||
@ -99,3 +100,102 @@ async fn board_move_row_to_other_group_and_reorder_test() {
|
||||
];
|
||||
test.run_scripts(scripts).await;
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn board_create_row_test() {
|
||||
let mut test = GridGroupTest::new().await;
|
||||
let scripts = vec![
|
||||
CreateRow { group_index: 0 },
|
||||
AssertGroup {
|
||||
group_index: 0,
|
||||
row_count: 3,
|
||||
},
|
||||
CreateRow { group_index: 1 },
|
||||
CreateRow { group_index: 1 },
|
||||
AssertGroup {
|
||||
group_index: 1,
|
||||
row_count: 4,
|
||||
},
|
||||
];
|
||||
test.run_scripts(scripts).await;
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn board_delete_row_test() {
|
||||
let mut test = GridGroupTest::new().await;
|
||||
let scripts = vec![
|
||||
DeleteRow {
|
||||
group_index: 0,
|
||||
row_index: 0,
|
||||
},
|
||||
AssertGroup {
|
||||
group_index: 0,
|
||||
row_count: 1,
|
||||
},
|
||||
];
|
||||
test.run_scripts(scripts).await;
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn board_delete_all_row_test() {
|
||||
let mut test = GridGroupTest::new().await;
|
||||
let scripts = vec![
|
||||
DeleteRow {
|
||||
group_index: 0,
|
||||
row_index: 0,
|
||||
},
|
||||
DeleteRow {
|
||||
group_index: 0,
|
||||
row_index: 0,
|
||||
},
|
||||
AssertGroup {
|
||||
group_index: 0,
|
||||
row_count: 0,
|
||||
},
|
||||
];
|
||||
test.run_scripts(scripts).await;
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn board_update_row_test() {
|
||||
let mut test = GridGroupTest::new().await;
|
||||
let scripts = vec![
|
||||
// Update the row at 0 in group0 by setting the row's group field data
|
||||
UpdateRow {
|
||||
from_group_index: 0,
|
||||
row_index: 0,
|
||||
to_group_index: 1,
|
||||
},
|
||||
AssertGroup {
|
||||
group_index: 0,
|
||||
row_count: 1,
|
||||
},
|
||||
AssertGroup {
|
||||
group_index: 1,
|
||||
row_count: 3,
|
||||
},
|
||||
];
|
||||
test.run_scripts(scripts).await;
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn board_reorder_group_test() {
|
||||
let mut test = GridGroupTest::new().await;
|
||||
let scripts = vec![
|
||||
// Update the row at 0 in group0 by setting the row's group field data
|
||||
UpdateRow {
|
||||
from_group_index: 0,
|
||||
row_index: 0,
|
||||
to_group_index: 1,
|
||||
},
|
||||
AssertGroup {
|
||||
group_index: 0,
|
||||
row_count: 1,
|
||||
},
|
||||
AssertGroup {
|
||||
group_index: 1,
|
||||
row_count: 3,
|
||||
},
|
||||
];
|
||||
test.run_scripts(scripts).await;
|
||||
}
|
||||
|
Reference in New Issue
Block a user