chore: add edit field type option helper

This commit is contained in:
appflowy
2022-09-02 09:49:26 +08:00
parent f192f89ebb
commit e75d8f22c8
27 changed files with 158 additions and 75 deletions

View File

@ -176,7 +176,7 @@ impl GridRowTest {
FieldType::Number => {
let field_rev = self.editor.get_field_rev(&cell_id.field_id).await.unwrap();
let number_type_option = field_rev
.get_type_option_entry::<NumberTypeOptionPB>(FieldType::Number.into())
.get_type_option::<NumberTypeOptionPB>(FieldType::Number.into())
.unwrap();
let cell_data = self
.editor

View File

@ -4,7 +4,7 @@ use crate::grid::field_test::util::*;
use flowy_grid::entities::FieldChangesetParams;
use flowy_grid::services::field::selection_type_option::SelectOptionPB;
use flowy_grid::services::field::SingleSelectTypeOptionPB;
use flowy_grid_data_model::revision::TypeOptionDataEntry;
use flowy_grid_data_model::revision::TypeOptionDataFormat;
#[tokio::test]
async fn grid_create_field() {
@ -86,7 +86,7 @@ async fn grid_update_field() {
let mut expected_field_rev = single_select_field.clone();
expected_field_rev.frozen = true;
expected_field_rev.width = 1000;
expected_field_rev.insert_type_option_entry(&single_select_type_option);
expected_field_rev.insert_type_option(&single_select_type_option);
let scripts = vec![
CreateField { params },

View File

@ -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.ty)
.get_type_option::<RichTextTypeOptionPB>(field_rev.ty)
.unwrap()
.protobuf_bytes()
.to_vec();
@ -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.ty)
.get_type_option::<SingleSelectTypeOptionPB>(field_rev.ty)
.unwrap()
.protobuf_bytes()
.to_vec();

View File

@ -8,7 +8,7 @@ use flowy_grid::services::field::{
use flowy_grid::services::row::{decode_cell_data_from_type_option_cell_data, CreateRowMetaBuilder};
use flowy_grid_data_model::entities::{
CellChangeset, FieldChangesetParams, FieldType, GridBlockInfoChangeset, GridBlockMetaSnapshot, RowMetaChangeset,
TypeOptionDataEntry,
TypeOptionDataFormat,
};
#[tokio::test]

View File

@ -3,6 +3,7 @@ use flowy_grid::entities::{
CreateRowParams, FieldChangesetParams, FieldType, GridLayout, GroupPB, MoveGroupParams, MoveGroupRowParams, RowPB,
};
use flowy_grid::services::cell::{delete_select_option_cell, insert_select_option_cell};
use flowy_grid::services::field::{select_option_operation, SelectOptionOperation};
use flowy_grid_data_model::revision::{FieldRevision, RowChangeset};
use std::sync::Arc;
use std::time::Duration;
@ -212,6 +213,28 @@ impl GridGroupTest {
.clone();
return field;
}
pub async fn get_single_select_field(&self) -> Arc<FieldRevision> {
self.inner
.field_revs
.iter()
.find(|field_rev| {
let field_type: FieldType = field_rev.ty.into();
field_type.is_single_select()
})
.unwrap()
.clone()
}
pub async fn edit_single_select_type_option(&self, f: impl FnOnce(Box<dyn SelectOptionOperation>)) {
let single_select = self.get_single_select_field().await;
let mut field_rev = self.editor.get_field_rev(&single_select.id).await.unwrap();
let mut_field_rev = Arc::make_mut(&mut field_rev);
let mut type_option = select_option_operation(mut_field_rev)?;
f(type_option);
mut_field_rev.insert_type_option(&*type_option);
let _ = self.editor.replace_field(field_rev).await?;
}
}
impl std::ops::Deref for GridGroupTest {

View File

@ -5,7 +5,7 @@ use flowy_grid::services::row::CreateRowMetaPayload;
use flowy_grid_data_model::entities::{
BuildGridContext, CellChangeset, Field, FieldChangesetParams, FieldMeta, FieldOrder, FieldType,
GridBlockInfoChangeset, GridBlockMetaSnapshot, InsertFieldParams, RowMeta, RowMetaChangeset, RowOrder,
TypeOptionDataEntry,
TypeOptionDataFormat,
};
use flowy_revision::REVISION_WRITE_INTERVAL_IN_MILLIS;
use flowy_sync::client_grid::GridBuilder;