row_test.rs 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. use crate::grid::block_test::script::GridRowTest;
  2. use crate::grid::block_test::script::RowScript::*;
  3. use flowy_grid::entities::FieldType;
  4. use flowy_grid_data_model::revision::RowMetaChangeset;
  5. #[tokio::test]
  6. async fn grid_create_row_count_test() {
  7. let mut test = GridRowTest::new().await;
  8. let scripts = vec![
  9. AssertRowCount(3),
  10. CreateEmptyRow,
  11. CreateEmptyRow,
  12. CreateRow {
  13. row_rev: test.row_builder().build(),
  14. },
  15. AssertRowCount(6),
  16. ];
  17. test.run_scripts(scripts).await;
  18. }
  19. #[tokio::test]
  20. async fn grid_update_row() {
  21. let mut test = GridRowTest::new().await;
  22. let row_rev = test.row_builder().build();
  23. let changeset = RowMetaChangeset {
  24. row_id: row_rev.id.clone(),
  25. height: None,
  26. visibility: None,
  27. cell_by_field_id: Default::default(),
  28. };
  29. let scripts = vec![AssertRowCount(3), CreateRow { row_rev }, UpdateRow { changeset }];
  30. test.run_scripts(scripts).await;
  31. let expected_row = test.last_row().unwrap();
  32. let scripts = vec![AssertRow { expected_row }, AssertRowCount(4)];
  33. test.run_scripts(scripts).await;
  34. }
  35. #[tokio::test]
  36. async fn grid_delete_row() {
  37. let mut test = GridRowTest::new().await;
  38. let row_1 = test.row_builder().build();
  39. let row_2 = test.row_builder().build();
  40. let row_ids = vec![row_1.id.clone(), row_2.id.clone()];
  41. let scripts = vec![
  42. AssertRowCount(3),
  43. CreateRow { row_rev: row_1 },
  44. CreateRow { row_rev: row_2 },
  45. AssertBlockCount(1),
  46. AssertBlock {
  47. block_index: 0,
  48. row_count: 5,
  49. start_row_index: 0,
  50. },
  51. DeleteRows { row_ids },
  52. AssertBlock {
  53. block_index: 0,
  54. row_count: 3,
  55. start_row_index: 0,
  56. },
  57. ];
  58. test.run_scripts(scripts).await;
  59. }
  60. #[tokio::test]
  61. async fn grid_row_add_cells_test() {
  62. let mut test = GridRowTest::new().await;
  63. let mut builder = test.row_builder();
  64. let text_field_id = builder.insert_text_cell("hello world");
  65. let number_field_id = builder.insert_number_cell("18,443");
  66. let date_field_id = builder.insert_date_cell("1647251762");
  67. let single_select_field_id = builder.insert_single_select_cell(|options| options.first().unwrap());
  68. builder.insert_multi_select_cell(|options| options);
  69. builder.insert_checkbox_cell("false");
  70. let url_field_id = builder.insert_url_cell("https://appflowy.io");
  71. let row_rev = builder.build();
  72. let row_id = row_rev.id.clone();
  73. let scripts = vec![
  74. CreateRow { row_rev },
  75. AssertCell {
  76. row_id: row_id.clone(),
  77. field_id: text_field_id,
  78. field_type: FieldType::RichText,
  79. expected: "hello world".to_owned(),
  80. },
  81. AssertCell {
  82. row_id: row_id.clone(),
  83. field_id: number_field_id,
  84. field_type: FieldType::Number,
  85. expected: "$18,443.00".to_owned(),
  86. },
  87. AssertCell {
  88. row_id: row_id.clone(),
  89. field_id: single_select_field_id,
  90. field_type: FieldType::SingleSelect,
  91. expected: "Completed".to_owned(),
  92. },
  93. AssertCell {
  94. row_id: row_id.clone(),
  95. field_id: date_field_id,
  96. field_type: FieldType::DateTime,
  97. expected: "2022/03/14".to_owned(),
  98. },
  99. AssertCell {
  100. row_id: row_id.clone(),
  101. field_id: url_field_id,
  102. field_type: FieldType::URL,
  103. expected: "https://appflowy.io/".to_owned(),
  104. },
  105. ];
  106. test.run_scripts(scripts).await;
  107. }