2022-07-11 17:15:16 +08:00
|
|
|
use crate::grid::block_test::script::RowScript::*;
|
2022-07-13 22:56:34 +08:00
|
|
|
use crate::grid::block_test::script::{CreateRowScriptBuilder, GridRowTest};
|
|
|
|
use crate::grid::grid_editor::{COMPLETED, FACEBOOK, GOOGLE, PAUSED, TWITTER};
|
2022-07-13 17:25:03 +08:00
|
|
|
use flowy_grid::entities::FieldType;
|
2022-07-13 22:56:34 +08:00
|
|
|
use flowy_grid::services::field::{NO, SELECTION_IDS_SEPARATOR};
|
2022-06-24 18:13:40 +08:00
|
|
|
use flowy_grid_data_model::revision::RowMetaChangeset;
|
2022-06-20 10:24:43 +08:00
|
|
|
|
|
|
|
#[tokio::test]
|
|
|
|
async fn grid_create_row_count_test() {
|
2022-07-11 17:15:16 +08:00
|
|
|
let mut test = GridRowTest::new().await;
|
2022-06-20 10:24:43 +08:00
|
|
|
let scripts = vec![
|
|
|
|
AssertRowCount(3),
|
|
|
|
CreateEmptyRow,
|
|
|
|
CreateEmptyRow,
|
|
|
|
CreateRow {
|
2022-07-12 15:49:14 +08:00
|
|
|
row_rev: test.row_builder().build(),
|
2022-06-20 10:24:43 +08:00
|
|
|
},
|
|
|
|
AssertRowCount(6),
|
|
|
|
];
|
2022-07-11 17:15:16 +08:00
|
|
|
test.run_scripts(scripts).await;
|
2022-06-20 10:24:43 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
#[tokio::test]
|
|
|
|
async fn grid_update_row() {
|
2022-07-11 17:15:16 +08:00
|
|
|
let mut test = GridRowTest::new().await;
|
2022-07-12 15:49:14 +08:00
|
|
|
let row_rev = test.row_builder().build();
|
2022-06-20 10:24:43 +08:00
|
|
|
let changeset = RowMetaChangeset {
|
2022-07-12 15:49:14 +08:00
|
|
|
row_id: row_rev.id.clone(),
|
2022-06-20 10:24:43 +08:00
|
|
|
height: None,
|
|
|
|
visibility: None,
|
|
|
|
cell_by_field_id: Default::default(),
|
|
|
|
};
|
|
|
|
|
2022-07-12 15:49:14 +08:00
|
|
|
let scripts = vec![AssertRowCount(3), CreateRow { row_rev }, UpdateRow { changeset }];
|
2022-06-20 10:24:43 +08:00
|
|
|
test.run_scripts(scripts).await;
|
|
|
|
|
2022-07-11 17:15:16 +08:00
|
|
|
let expected_row = test.last_row().unwrap();
|
2022-06-20 10:24:43 +08:00
|
|
|
let scripts = vec![AssertRow { expected_row }, AssertRowCount(4)];
|
|
|
|
test.run_scripts(scripts).await;
|
|
|
|
}
|
|
|
|
|
|
|
|
#[tokio::test]
|
|
|
|
async fn grid_delete_row() {
|
2022-07-11 17:15:16 +08:00
|
|
|
let mut test = GridRowTest::new().await;
|
2022-07-12 15:49:14 +08:00
|
|
|
let row_1 = test.row_builder().build();
|
|
|
|
let row_2 = test.row_builder().build();
|
|
|
|
let row_ids = vec![row_1.id.clone(), row_2.id.clone()];
|
2022-06-20 10:24:43 +08:00
|
|
|
let scripts = vec![
|
|
|
|
AssertRowCount(3),
|
2022-07-12 15:49:14 +08:00
|
|
|
CreateRow { row_rev: row_1 },
|
|
|
|
CreateRow { row_rev: row_2 },
|
2022-06-20 10:24:43 +08:00
|
|
|
AssertBlockCount(1),
|
|
|
|
AssertBlock {
|
|
|
|
block_index: 0,
|
|
|
|
row_count: 5,
|
|
|
|
start_row_index: 0,
|
|
|
|
},
|
|
|
|
DeleteRows { row_ids },
|
|
|
|
AssertBlock {
|
|
|
|
block_index: 0,
|
|
|
|
row_count: 3,
|
|
|
|
start_row_index: 0,
|
|
|
|
},
|
|
|
|
];
|
|
|
|
test.run_scripts(scripts).await;
|
|
|
|
}
|
|
|
|
|
|
|
|
#[tokio::test]
|
|
|
|
async fn grid_row_add_cells_test() {
|
2022-07-11 17:15:16 +08:00
|
|
|
let mut test = GridRowTest::new().await;
|
2022-07-13 22:56:34 +08:00
|
|
|
let mut builder = CreateRowScriptBuilder::new(&test);
|
|
|
|
builder.insert(FieldType::RichText, "hello world", "hello world");
|
|
|
|
builder.insert(FieldType::DateTime, "1647251762", "2022/03/14");
|
|
|
|
builder.insert(FieldType::Number, "18,443", "$18,443.00");
|
|
|
|
builder.insert(FieldType::Checkbox, "false", NO);
|
|
|
|
builder.insert(FieldType::URL, "https://appflowy.io", "https://appflowy.io");
|
|
|
|
builder.insert_single_select_cell(|mut options| options.remove(0), COMPLETED);
|
|
|
|
builder.insert_multi_select_cell(
|
|
|
|
|options| options,
|
|
|
|
&vec![GOOGLE, FACEBOOK, TWITTER].join(SELECTION_IDS_SEPARATOR),
|
|
|
|
);
|
2022-06-20 10:24:43 +08:00
|
|
|
|
2022-07-13 22:56:34 +08:00
|
|
|
test.run_scripts(builder.build()).await;
|
|
|
|
}
|
2022-07-12 15:49:14 +08:00
|
|
|
|
2022-07-13 22:56:34 +08:00
|
|
|
#[tokio::test]
|
|
|
|
async fn grid_row_insert_number_test() {
|
|
|
|
let mut test = GridRowTest::new().await;
|
|
|
|
for (val, expected) in &[("1647251762", "2022/03/14"), ("2022/03/14", ""), ("", "")] {
|
|
|
|
let mut builder = CreateRowScriptBuilder::new(&test);
|
|
|
|
builder.insert(FieldType::DateTime, val, expected);
|
|
|
|
test.run_scripts(builder.build()).await;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
#[tokio::test]
|
|
|
|
async fn grid_row_insert_date_test() {
|
|
|
|
let mut test = GridRowTest::new().await;
|
|
|
|
for (val, expected) in &[
|
|
|
|
("18,443", "$18,443.00"),
|
|
|
|
("0", "$0.00"),
|
|
|
|
("100000", "$100,000.00"),
|
|
|
|
("$100,000.00", "$100,000.00"),
|
|
|
|
("", ""),
|
|
|
|
] {
|
|
|
|
let mut builder = CreateRowScriptBuilder::new(&test);
|
|
|
|
builder.insert(FieldType::Number, val, expected);
|
|
|
|
test.run_scripts(builder.build()).await;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
#[tokio::test]
|
|
|
|
async fn grid_row_insert_single_select_test() {
|
|
|
|
let mut test = GridRowTest::new().await;
|
|
|
|
let mut builder = CreateRowScriptBuilder::new(&test);
|
|
|
|
builder.insert_single_select_cell(|mut options| options.pop().unwrap(), PAUSED);
|
|
|
|
test.run_scripts(builder.build()).await;
|
|
|
|
}
|
|
|
|
|
|
|
|
#[tokio::test]
|
|
|
|
async fn grid_row_insert_multi_select_test() {
|
|
|
|
let mut test = GridRowTest::new().await;
|
|
|
|
let mut builder = CreateRowScriptBuilder::new(&test);
|
|
|
|
builder.insert_multi_select_cell(
|
|
|
|
|mut options| {
|
|
|
|
options.remove(0);
|
|
|
|
options
|
2022-07-13 17:25:03 +08:00
|
|
|
},
|
2022-07-13 22:56:34 +08:00
|
|
|
&vec![FACEBOOK, TWITTER].join(SELECTION_IDS_SEPARATOR),
|
|
|
|
);
|
|
|
|
|
|
|
|
test.run_scripts(builder.build()).await;
|
2022-06-20 10:24:43 +08:00
|
|
|
}
|