123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 |
- use crate::grid::block_test::script::RowScript::*;
- use crate::grid::block_test::script::{CreateRowScriptBuilder, GridRowTest};
- use crate::grid::grid_editor::{COMPLETED, FACEBOOK, GOOGLE, PAUSED, TWITTER};
- use flowy_grid::entities::FieldType;
- use flowy_grid::services::field::{SELECTION_IDS_SEPARATOR, UNCHECK};
- use flowy_grid_data_model::revision::RowMetaChangeset;
- #[tokio::test]
- async fn grid_create_row_count_test() {
- let mut test = GridRowTest::new().await;
- let scripts = vec![
- AssertRowCount(5),
- CreateEmptyRow,
- CreateEmptyRow,
- CreateRow {
- row_rev: test.row_builder().build(),
- },
- AssertRowCount(8),
- ];
- test.run_scripts(scripts).await;
- }
- #[tokio::test]
- async fn grid_update_row() {
- let mut test = GridRowTest::new().await;
- let row_rev = test.row_builder().build();
- let changeset = RowMetaChangeset {
- row_id: row_rev.id.clone(),
- height: None,
- visibility: None,
- cell_by_field_id: Default::default(),
- };
- let scripts = vec![AssertRowCount(5), CreateRow { row_rev }, UpdateRow { changeset }];
- test.run_scripts(scripts).await;
- let expected_row = test.last_row().unwrap();
- let scripts = vec![AssertRow { expected_row }, AssertRowCount(6)];
- test.run_scripts(scripts).await;
- }
- #[tokio::test]
- async fn grid_delete_row() {
- let mut test = GridRowTest::new().await;
- 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()];
- let scripts = vec![
- AssertRowCount(5),
- CreateRow { row_rev: row_1 },
- CreateRow { row_rev: row_2 },
- AssertBlockCount(1),
- AssertBlock {
- block_index: 0,
- row_count: 7,
- start_row_index: 0,
- },
- DeleteRows { row_ids },
- AssertBlock {
- block_index: 0,
- row_count: 5,
- start_row_index: 0,
- },
- ];
- test.run_scripts(scripts).await;
- }
- #[tokio::test]
- async fn grid_row_add_cells_test() {
- let mut test = GridRowTest::new().await;
- 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", UNCHECK);
- 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),
- );
- let scripts = builder.build();
- test.run_scripts(scripts).await;
- }
- #[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);
- let scripts = builder.build();
- test.run_scripts(scripts).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);
- let scripts = builder.build();
- test.run_scripts(scripts).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);
- let scripts = builder.build();
- test.run_scripts(scripts).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
- },
- &vec![FACEBOOK, TWITTER].join(SELECTION_IDS_SEPARATOR),
- );
- let scripts = builder.build();
- test.run_scripts(scripts).await;
- }
|