mirror of
				https://github.com/AppFlowy-IO/AppFlowy.git
				synced 2025-11-03 19:43:52 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			489 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
			
		
		
	
	
			489 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
use crate::grid::group_test::script::GridGroupTest;
 | 
						|
use crate::grid::group_test::script::GroupScript::*;
 | 
						|
 | 
						|
use flowy_grid::services::field::SelectOptionPB;
 | 
						|
 | 
						|
#[tokio::test]
 | 
						|
async fn group_init_test() {
 | 
						|
    let mut test = GridGroupTest::new().await;
 | 
						|
    let scripts = vec![
 | 
						|
        AssertGroupCount(4),
 | 
						|
        AssertGroupRowCount {
 | 
						|
            group_index: 1,
 | 
						|
            row_count: 2,
 | 
						|
        },
 | 
						|
        AssertGroupRowCount {
 | 
						|
            group_index: 2,
 | 
						|
            row_count: 2,
 | 
						|
        },
 | 
						|
        AssertGroupRowCount {
 | 
						|
            group_index: 3,
 | 
						|
            row_count: 1,
 | 
						|
        },
 | 
						|
        AssertGroupRowCount {
 | 
						|
            group_index: 0,
 | 
						|
            row_count: 0,
 | 
						|
        },
 | 
						|
    ];
 | 
						|
    test.run_scripts(scripts).await;
 | 
						|
}
 | 
						|
 | 
						|
#[tokio::test]
 | 
						|
async fn group_move_row_test() {
 | 
						|
    let mut test = GridGroupTest::new().await;
 | 
						|
    let group = test.group_at_index(1).await;
 | 
						|
    let scripts = vec![
 | 
						|
        // Move the row at 0 in group0 to group1 at 1
 | 
						|
        MoveRow {
 | 
						|
            from_group_index: 1,
 | 
						|
            from_row_index: 0,
 | 
						|
            to_group_index: 1,
 | 
						|
            to_row_index: 1,
 | 
						|
        },
 | 
						|
        AssertGroupRowCount {
 | 
						|
            group_index: 1,
 | 
						|
            row_count: 2,
 | 
						|
        },
 | 
						|
        AssertRow {
 | 
						|
            group_index: 1,
 | 
						|
            row_index: 1,
 | 
						|
            row: group.rows.get(0).unwrap().clone(),
 | 
						|
        },
 | 
						|
    ];
 | 
						|
    test.run_scripts(scripts).await;
 | 
						|
}
 | 
						|
 | 
						|
#[tokio::test]
 | 
						|
async fn group_move_row_to_other_group_test() {
 | 
						|
    let mut test = GridGroupTest::new().await;
 | 
						|
    let group = test.group_at_index(1).await;
 | 
						|
    let scripts = vec![
 | 
						|
        MoveRow {
 | 
						|
            from_group_index: 1,
 | 
						|
            from_row_index: 0,
 | 
						|
            to_group_index: 2,
 | 
						|
            to_row_index: 1,
 | 
						|
        },
 | 
						|
        AssertGroupRowCount {
 | 
						|
            group_index: 1,
 | 
						|
            row_count: 1,
 | 
						|
        },
 | 
						|
        AssertGroupRowCount {
 | 
						|
            group_index: 2,
 | 
						|
            row_count: 3,
 | 
						|
        },
 | 
						|
        AssertRow {
 | 
						|
            group_index: 2,
 | 
						|
            row_index: 1,
 | 
						|
            row: group.rows.get(0).unwrap().clone(),
 | 
						|
        },
 | 
						|
    ];
 | 
						|
    test.run_scripts(scripts).await;
 | 
						|
}
 | 
						|
 | 
						|
#[tokio::test]
 | 
						|
async fn group_move_two_row_to_other_group_test() {
 | 
						|
    let mut test = GridGroupTest::new().await;
 | 
						|
    let group_1 = test.group_at_index(1).await;
 | 
						|
    let scripts = vec![
 | 
						|
        // Move row at index 0 from group 1 to group 2 at index 1
 | 
						|
        MoveRow {
 | 
						|
            from_group_index: 1,
 | 
						|
            from_row_index: 0,
 | 
						|
            to_group_index: 2,
 | 
						|
            to_row_index: 1,
 | 
						|
        },
 | 
						|
        AssertGroupRowCount {
 | 
						|
            group_index: 1,
 | 
						|
            row_count: 1,
 | 
						|
        },
 | 
						|
        AssertGroupRowCount {
 | 
						|
            group_index: 2,
 | 
						|
            row_count: 3,
 | 
						|
        },
 | 
						|
        AssertRow {
 | 
						|
            group_index: 2,
 | 
						|
            row_index: 1,
 | 
						|
            row: group_1.rows.get(0).unwrap().clone(),
 | 
						|
        },
 | 
						|
    ];
 | 
						|
    test.run_scripts(scripts).await;
 | 
						|
 | 
						|
    let group_1 = test.group_at_index(1).await;
 | 
						|
    // Move row at index 0 from group 1 to group 2 at index 1
 | 
						|
    let scripts = vec![
 | 
						|
        MoveRow {
 | 
						|
            from_group_index: 1,
 | 
						|
            from_row_index: 0,
 | 
						|
            to_group_index: 2,
 | 
						|
            to_row_index: 1,
 | 
						|
        },
 | 
						|
        AssertGroupRowCount {
 | 
						|
            group_index: 1,
 | 
						|
            row_count: 0,
 | 
						|
        },
 | 
						|
        AssertGroupRowCount {
 | 
						|
            group_index: 2,
 | 
						|
            row_count: 4,
 | 
						|
        },
 | 
						|
        AssertRow {
 | 
						|
            group_index: 2,
 | 
						|
            row_index: 1,
 | 
						|
            row: group_1.rows.get(0).unwrap().clone(),
 | 
						|
        },
 | 
						|
    ];
 | 
						|
    test.run_scripts(scripts).await;
 | 
						|
}
 | 
						|
 | 
						|
#[tokio::test]
 | 
						|
async fn group_move_row_to_other_group_and_reorder_from_up_to_down_test() {
 | 
						|
    let mut test = GridGroupTest::new().await;
 | 
						|
    let group_1 = test.group_at_index(1).await;
 | 
						|
    let group_2 = test.group_at_index(2).await;
 | 
						|
    let scripts = vec![
 | 
						|
        MoveRow {
 | 
						|
            from_group_index: 1,
 | 
						|
            from_row_index: 0,
 | 
						|
            to_group_index: 2,
 | 
						|
            to_row_index: 1,
 | 
						|
        },
 | 
						|
        AssertRow {
 | 
						|
            group_index: 2,
 | 
						|
            row_index: 1,
 | 
						|
            row: group_1.rows.get(0).unwrap().clone(),
 | 
						|
        },
 | 
						|
    ];
 | 
						|
    test.run_scripts(scripts).await;
 | 
						|
 | 
						|
    let scripts = vec![
 | 
						|
        MoveRow {
 | 
						|
            from_group_index: 2,
 | 
						|
            from_row_index: 0,
 | 
						|
            to_group_index: 2,
 | 
						|
            to_row_index: 2,
 | 
						|
        },
 | 
						|
        AssertRow {
 | 
						|
            group_index: 2,
 | 
						|
            row_index: 2,
 | 
						|
            row: group_2.rows.get(0).unwrap().clone(),
 | 
						|
        },
 | 
						|
    ];
 | 
						|
    test.run_scripts(scripts).await;
 | 
						|
}
 | 
						|
 | 
						|
#[tokio::test]
 | 
						|
async fn group_move_row_to_other_group_and_reorder_from_bottom_to_up_test() {
 | 
						|
    let mut test = GridGroupTest::new().await;
 | 
						|
    let scripts = vec![MoveRow {
 | 
						|
        from_group_index: 1,
 | 
						|
        from_row_index: 0,
 | 
						|
        to_group_index: 2,
 | 
						|
        to_row_index: 1,
 | 
						|
    }];
 | 
						|
    test.run_scripts(scripts).await;
 | 
						|
 | 
						|
    let group = test.group_at_index(2).await;
 | 
						|
    let scripts = vec![
 | 
						|
        AssertGroupRowCount {
 | 
						|
            group_index: 2,
 | 
						|
            row_count: 3,
 | 
						|
        },
 | 
						|
        MoveRow {
 | 
						|
            from_group_index: 2,
 | 
						|
            from_row_index: 2,
 | 
						|
            to_group_index: 2,
 | 
						|
            to_row_index: 0,
 | 
						|
        },
 | 
						|
        AssertRow {
 | 
						|
            group_index: 2,
 | 
						|
            row_index: 0,
 | 
						|
            row: group.rows.get(2).unwrap().clone(),
 | 
						|
        },
 | 
						|
    ];
 | 
						|
    test.run_scripts(scripts).await;
 | 
						|
}
 | 
						|
#[tokio::test]
 | 
						|
async fn group_create_row_test() {
 | 
						|
    let mut test = GridGroupTest::new().await;
 | 
						|
    let scripts = vec![
 | 
						|
        CreateRow { group_index: 1 },
 | 
						|
        AssertGroupRowCount {
 | 
						|
            group_index: 1,
 | 
						|
            row_count: 3,
 | 
						|
        },
 | 
						|
        CreateRow { group_index: 2 },
 | 
						|
        CreateRow { group_index: 2 },
 | 
						|
        AssertGroupRowCount {
 | 
						|
            group_index: 2,
 | 
						|
            row_count: 4,
 | 
						|
        },
 | 
						|
    ];
 | 
						|
    test.run_scripts(scripts).await;
 | 
						|
}
 | 
						|
 | 
						|
#[tokio::test]
 | 
						|
async fn group_delete_row_test() {
 | 
						|
    let mut test = GridGroupTest::new().await;
 | 
						|
    let scripts = vec![
 | 
						|
        DeleteRow {
 | 
						|
            group_index: 1,
 | 
						|
            row_index: 0,
 | 
						|
        },
 | 
						|
        AssertGroupRowCount {
 | 
						|
            group_index: 1,
 | 
						|
            row_count: 1,
 | 
						|
        },
 | 
						|
    ];
 | 
						|
    test.run_scripts(scripts).await;
 | 
						|
}
 | 
						|
 | 
						|
#[tokio::test]
 | 
						|
async fn group_delete_all_row_test() {
 | 
						|
    let mut test = GridGroupTest::new().await;
 | 
						|
    let scripts = vec![
 | 
						|
        DeleteRow {
 | 
						|
            group_index: 1,
 | 
						|
            row_index: 0,
 | 
						|
        },
 | 
						|
        DeleteRow {
 | 
						|
            group_index: 1,
 | 
						|
            row_index: 0,
 | 
						|
        },
 | 
						|
        AssertGroupRowCount {
 | 
						|
            group_index: 1,
 | 
						|
            row_count: 0,
 | 
						|
        },
 | 
						|
    ];
 | 
						|
    test.run_scripts(scripts).await;
 | 
						|
}
 | 
						|
 | 
						|
#[tokio::test]
 | 
						|
async fn group_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: 1,
 | 
						|
            row_index: 0,
 | 
						|
            to_group_index: 2,
 | 
						|
        },
 | 
						|
        AssertGroupRowCount {
 | 
						|
            group_index: 1,
 | 
						|
            row_count: 1,
 | 
						|
        },
 | 
						|
        AssertGroupRowCount {
 | 
						|
            group_index: 2,
 | 
						|
            row_count: 3,
 | 
						|
        },
 | 
						|
    ];
 | 
						|
    test.run_scripts(scripts).await;
 | 
						|
}
 | 
						|
 | 
						|
#[tokio::test]
 | 
						|
async fn group_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: 1,
 | 
						|
            row_index: 0,
 | 
						|
            to_group_index: 2,
 | 
						|
        },
 | 
						|
        AssertGroupRowCount {
 | 
						|
            group_index: 1,
 | 
						|
            row_count: 1,
 | 
						|
        },
 | 
						|
        AssertGroupRowCount {
 | 
						|
            group_index: 2,
 | 
						|
            row_count: 3,
 | 
						|
        },
 | 
						|
    ];
 | 
						|
    test.run_scripts(scripts).await;
 | 
						|
}
 | 
						|
 | 
						|
#[tokio::test]
 | 
						|
async fn group_move_to_default_group_test() {
 | 
						|
    let mut test = GridGroupTest::new().await;
 | 
						|
    let scripts = vec![
 | 
						|
        UpdateRow {
 | 
						|
            from_group_index: 1,
 | 
						|
            row_index: 0,
 | 
						|
            to_group_index: 0,
 | 
						|
        },
 | 
						|
        AssertGroupRowCount {
 | 
						|
            group_index: 1,
 | 
						|
            row_count: 1,
 | 
						|
        },
 | 
						|
        AssertGroupRowCount {
 | 
						|
            group_index: 0,
 | 
						|
            row_count: 1,
 | 
						|
        },
 | 
						|
    ];
 | 
						|
    test.run_scripts(scripts).await;
 | 
						|
}
 | 
						|
 | 
						|
#[tokio::test]
 | 
						|
async fn group_move_from_default_group_test() {
 | 
						|
    let mut test = GridGroupTest::new().await;
 | 
						|
    // Move one row from group 1 to group 0
 | 
						|
    let scripts = vec![
 | 
						|
        UpdateRow {
 | 
						|
            from_group_index: 1,
 | 
						|
            row_index: 0,
 | 
						|
            to_group_index: 0,
 | 
						|
        },
 | 
						|
        AssertGroupRowCount {
 | 
						|
            group_index: 1,
 | 
						|
            row_count: 1,
 | 
						|
        },
 | 
						|
        AssertGroupRowCount {
 | 
						|
            group_index: 0,
 | 
						|
            row_count: 1,
 | 
						|
        },
 | 
						|
    ];
 | 
						|
    test.run_scripts(scripts).await;
 | 
						|
 | 
						|
    // Move one row from group 0 to group 1
 | 
						|
    let scripts = vec![
 | 
						|
        UpdateRow {
 | 
						|
            from_group_index: 0,
 | 
						|
            row_index: 0,
 | 
						|
            to_group_index: 1,
 | 
						|
        },
 | 
						|
        AssertGroupRowCount {
 | 
						|
            group_index: 1,
 | 
						|
            row_count: 2,
 | 
						|
        },
 | 
						|
        AssertGroupRowCount {
 | 
						|
            group_index: 0,
 | 
						|
            row_count: 0,
 | 
						|
        },
 | 
						|
    ];
 | 
						|
    test.run_scripts(scripts).await;
 | 
						|
}
 | 
						|
 | 
						|
#[tokio::test]
 | 
						|
async fn group_move_group_test() {
 | 
						|
    let mut test = GridGroupTest::new().await;
 | 
						|
    let group_0 = test.group_at_index(0).await;
 | 
						|
    let group_1 = test.group_at_index(1).await;
 | 
						|
    let scripts = vec![
 | 
						|
        MoveGroup {
 | 
						|
            from_group_index: 0,
 | 
						|
            to_group_index: 1,
 | 
						|
        },
 | 
						|
        AssertGroupRowCount {
 | 
						|
            group_index: 0,
 | 
						|
            row_count: 2,
 | 
						|
        },
 | 
						|
        AssertGroup {
 | 
						|
            group_index: 0,
 | 
						|
            expected_group: group_1,
 | 
						|
        },
 | 
						|
        AssertGroupRowCount {
 | 
						|
            group_index: 1,
 | 
						|
            row_count: 0,
 | 
						|
        },
 | 
						|
        AssertGroup {
 | 
						|
            group_index: 1,
 | 
						|
            expected_group: group_0,
 | 
						|
        },
 | 
						|
    ];
 | 
						|
    test.run_scripts(scripts).await;
 | 
						|
}
 | 
						|
 | 
						|
#[tokio::test]
 | 
						|
async fn group_move_group_row_after_move_group_test() {
 | 
						|
    let mut test = GridGroupTest::new().await;
 | 
						|
    let group_1 = test.group_at_index(1).await;
 | 
						|
    let group_2 = test.group_at_index(2).await;
 | 
						|
    let scripts = vec![
 | 
						|
        MoveGroup {
 | 
						|
            from_group_index: 1,
 | 
						|
            to_group_index: 2,
 | 
						|
        },
 | 
						|
        AssertGroup {
 | 
						|
            group_index: 1,
 | 
						|
            expected_group: group_2,
 | 
						|
        },
 | 
						|
        AssertGroup {
 | 
						|
            group_index: 2,
 | 
						|
            expected_group: group_1,
 | 
						|
        },
 | 
						|
        MoveRow {
 | 
						|
            from_group_index: 1,
 | 
						|
            from_row_index: 0,
 | 
						|
            to_group_index: 2,
 | 
						|
            to_row_index: 0,
 | 
						|
        },
 | 
						|
        AssertGroupRowCount {
 | 
						|
            group_index: 1,
 | 
						|
            row_count: 1,
 | 
						|
        },
 | 
						|
        AssertGroupRowCount {
 | 
						|
            group_index: 2,
 | 
						|
            row_count: 3,
 | 
						|
        },
 | 
						|
    ];
 | 
						|
    test.run_scripts(scripts).await;
 | 
						|
}
 | 
						|
 | 
						|
#[tokio::test]
 | 
						|
async fn group_move_group_to_default_group_pos_test() {
 | 
						|
    let mut test = GridGroupTest::new().await;
 | 
						|
    let group_0 = test.group_at_index(0).await;
 | 
						|
    let group_3 = test.group_at_index(3).await;
 | 
						|
    let scripts = vec![
 | 
						|
        MoveGroup {
 | 
						|
            from_group_index: 3,
 | 
						|
            to_group_index: 0,
 | 
						|
        },
 | 
						|
        AssertGroup {
 | 
						|
            group_index: 0,
 | 
						|
            expected_group: group_3,
 | 
						|
        },
 | 
						|
        AssertGroup {
 | 
						|
            group_index: 1,
 | 
						|
            expected_group: group_0,
 | 
						|
        },
 | 
						|
    ];
 | 
						|
    test.run_scripts(scripts).await;
 | 
						|
}
 | 
						|
 | 
						|
#[tokio::test]
 | 
						|
async fn group_insert_single_select_option_test() {
 | 
						|
    let mut test = GridGroupTest::new().await;
 | 
						|
    let new_option_name = "New option";
 | 
						|
    let scripts = vec![
 | 
						|
        AssertGroupCount(4),
 | 
						|
        UpdateSingleSelectSelectOption {
 | 
						|
            inserted_options: vec![SelectOptionPB::new(new_option_name)],
 | 
						|
        },
 | 
						|
        AssertGroupCount(5),
 | 
						|
    ];
 | 
						|
    test.run_scripts(scripts).await;
 | 
						|
    let new_group = test.group_at_index(1).await;
 | 
						|
    assert_eq!(new_group.desc, new_option_name);
 | 
						|
}
 | 
						|
 | 
						|
#[tokio::test]
 | 
						|
async fn group_group_by_other_field() {
 | 
						|
    let mut test = GridGroupTest::new().await;
 | 
						|
    let multi_select_field = test.get_multi_select_field().await;
 | 
						|
    let scripts = vec![
 | 
						|
        GroupByField {
 | 
						|
            field_id: multi_select_field.id.clone(),
 | 
						|
        },
 | 
						|
        AssertGroupRowCount {
 | 
						|
            group_index: 1,
 | 
						|
            row_count: 3,
 | 
						|
        },
 | 
						|
        AssertGroupRowCount {
 | 
						|
            group_index: 2,
 | 
						|
            row_count: 2,
 | 
						|
        },
 | 
						|
        AssertGroupCount(4),
 | 
						|
    ];
 | 
						|
    test.run_scripts(scripts).await;
 | 
						|
}
 |