test.rs 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. use crate::grid::field_test::script::FieldScript::*;
  2. use crate::grid::field_test::script::GridFieldTest;
  3. use crate::grid::field_test::util::*;
  4. use flowy_grid::entities::FieldChangesetParams;
  5. use flowy_grid::services::field::selection_type_option::SelectOptionPB;
  6. use flowy_grid::services::field::SingleSelectTypeOptionPB;
  7. #[tokio::test]
  8. async fn grid_create_field() {
  9. let mut test = GridFieldTest::new().await;
  10. let (params, field_rev) = create_text_field(&test.grid_id());
  11. let scripts = vec![
  12. CreateField { params },
  13. AssertFieldTypeOptionEqual {
  14. field_index: test.field_count(),
  15. expected_type_option_data: field_rev.get_type_option_str(field_rev.ty).unwrap(),
  16. },
  17. ];
  18. test.run_scripts(scripts).await;
  19. let (params, field_rev) = create_single_select_field(&test.grid_id());
  20. let scripts = vec![
  21. CreateField { params },
  22. AssertFieldTypeOptionEqual {
  23. field_index: test.field_count(),
  24. expected_type_option_data: field_rev.get_type_option_str(field_rev.ty).unwrap(),
  25. },
  26. ];
  27. test.run_scripts(scripts).await;
  28. }
  29. #[tokio::test]
  30. async fn grid_create_duplicate_field() {
  31. let mut test = GridFieldTest::new().await;
  32. let (params, _) = create_text_field(&test.grid_id());
  33. let field_count = test.field_count();
  34. let expected_field_count = field_count + 1;
  35. let scripts = vec![
  36. CreateField { params: params.clone() },
  37. AssertFieldCount(expected_field_count),
  38. ];
  39. test.run_scripts(scripts).await;
  40. }
  41. #[tokio::test]
  42. async fn grid_update_field_with_empty_change() {
  43. let mut test = GridFieldTest::new().await;
  44. let (params, _) = create_single_select_field(&test.grid_id());
  45. let create_field_index = test.field_count();
  46. let scripts = vec![CreateField { params }];
  47. test.run_scripts(scripts).await;
  48. let field_rev = (&*test.field_revs.clone().pop().unwrap()).clone();
  49. let changeset = FieldChangesetParams {
  50. field_id: field_rev.id.clone(),
  51. grid_id: test.grid_id(),
  52. ..Default::default()
  53. };
  54. let scripts = vec![
  55. UpdateField { changeset },
  56. AssertFieldTypeOptionEqual {
  57. field_index: create_field_index,
  58. expected_type_option_data: field_rev.get_type_option_str(field_rev.ty).unwrap(),
  59. },
  60. ];
  61. test.run_scripts(scripts).await;
  62. }
  63. #[tokio::test]
  64. async fn grid_update_field() {
  65. let mut test = GridFieldTest::new().await;
  66. let (params, _) = create_single_select_field(&test.grid_id());
  67. let scripts = vec![CreateField { params }];
  68. let create_field_index = test.field_count();
  69. test.run_scripts(scripts).await;
  70. //
  71. let single_select_field = (&*test.field_revs.clone().pop().unwrap()).clone();
  72. let mut single_select_type_option = SingleSelectTypeOptionPB::from(&single_select_field);
  73. single_select_type_option.options.push(SelectOptionPB::new("Unknown"));
  74. let changeset = FieldChangesetParams {
  75. field_id: single_select_field.id.clone(),
  76. grid_id: test.grid_id(),
  77. frozen: Some(true),
  78. width: Some(1000),
  79. ..Default::default()
  80. };
  81. // The expected_field must be equal to the field that applied the changeset
  82. let mut expected_field_rev = single_select_field.clone();
  83. expected_field_rev.frozen = true;
  84. expected_field_rev.width = 1000;
  85. expected_field_rev.insert_type_option(&single_select_type_option);
  86. let scripts = vec![
  87. UpdateField { changeset },
  88. AssertFieldFrozen {
  89. field_index: create_field_index,
  90. frozen: true,
  91. },
  92. ];
  93. test.run_scripts(scripts).await;
  94. }
  95. #[tokio::test]
  96. async fn grid_delete_field() {
  97. let mut test = GridFieldTest::new().await;
  98. let original_field_count = test.field_count();
  99. let (params, _) = create_text_field(&test.grid_id());
  100. let scripts = vec![CreateField { params }];
  101. test.run_scripts(scripts).await;
  102. let text_field_rev = (&*test.field_revs.clone().pop().unwrap()).clone();
  103. let scripts = vec![
  104. DeleteField {
  105. field_rev: text_field_rev,
  106. },
  107. AssertFieldCount(original_field_count),
  108. ];
  109. test.run_scripts(scripts).await;
  110. }