script.rs 2.8 KB

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