script.rs 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. use crate::grid::grid_editor::GridEditorTest;
  2. use flowy_grid::entities::InsertFieldParams;
  3. use flowy_grid_data_model::revision::FieldRevision;
  4. use flowy_sync::entities::grid::FieldChangesetParams;
  5. pub enum FieldScript {
  6. CreateField {
  7. params: InsertFieldParams,
  8. },
  9. UpdateField {
  10. changeset: FieldChangesetParams,
  11. },
  12. DeleteField {
  13. field_rev: FieldRevision,
  14. },
  15. AssertFieldCount(usize),
  16. AssertFieldEqual {
  17. field_index: usize,
  18. field_rev: FieldRevision,
  19. },
  20. }
  21. pub struct GridFieldTest {
  22. inner: GridEditorTest,
  23. }
  24. impl GridFieldTest {
  25. pub async fn new() -> Self {
  26. let editor_test = GridEditorTest::new_table().await;
  27. Self { inner: editor_test }
  28. }
  29. pub fn grid_id(&self) -> String {
  30. self.grid_id.clone()
  31. }
  32. pub fn field_count(&self) -> usize {
  33. self.field_count
  34. }
  35. pub async fn run_scripts(&mut self, scripts: Vec<FieldScript>) {
  36. for script in scripts {
  37. self.run_script(script).await;
  38. }
  39. }
  40. pub async fn run_script(&mut self, script: FieldScript) {
  41. match script {
  42. FieldScript::CreateField { params } => {
  43. if !self.editor.contain_field(&params.field.id).await {
  44. self.field_count += 1;
  45. }
  46. self.editor.insert_field(params).await.unwrap();
  47. self.field_revs = self.editor.get_field_revs(None).await.unwrap();
  48. assert_eq!(self.field_count, self.field_revs.len());
  49. }
  50. FieldScript::UpdateField { changeset: change } => {
  51. self.editor.update_field(change).await.unwrap();
  52. self.field_revs = self.editor.get_field_revs(None).await.unwrap();
  53. }
  54. FieldScript::DeleteField { field_rev } => {
  55. if self.editor.contain_field(&field_rev.id).await {
  56. self.field_count -= 1;
  57. }
  58. self.editor.delete_field(&field_rev.id).await.unwrap();
  59. self.field_revs = self.editor.get_field_revs(None).await.unwrap();
  60. assert_eq!(self.field_count, self.field_revs.len());
  61. }
  62. FieldScript::AssertFieldCount(count) => {
  63. assert_eq!(self.editor.get_field_revs(None).await.unwrap().len(), count);
  64. }
  65. FieldScript::AssertFieldEqual { field_index, field_rev } => {
  66. let field_revs = self.editor.get_field_revs(None).await.unwrap();
  67. assert_eq!(field_revs[field_index].as_ref(), &field_rev);
  68. }
  69. }
  70. }
  71. }
  72. impl std::ops::Deref for GridFieldTest {
  73. type Target = GridEditorTest;
  74. fn deref(&self) -> &Self::Target {
  75. &self.inner
  76. }
  77. }
  78. impl std::ops::DerefMut for GridFieldTest {
  79. fn deref_mut(&mut self) -> &mut Self::Target {
  80. &mut self.inner
  81. }
  82. }