script.rs 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. use collab_database::views::DatabaseLayout;
  2. use flowy_database2::entities::FieldVisibility;
  3. use flowy_database2::services::field_settings::FieldSettingsChangesetParams;
  4. use crate::database::database_editor::DatabaseEditorTest;
  5. #[allow(clippy::enum_variant_names)]
  6. pub enum FieldSettingsScript {
  7. AssertFieldSettings {
  8. field_ids: Vec<String>,
  9. layout_ty: DatabaseLayout,
  10. visibility: FieldVisibility,
  11. },
  12. AssertAllFieldSettings {
  13. layout_ty: DatabaseLayout,
  14. visibility: FieldVisibility,
  15. },
  16. UpdateFieldSettings {
  17. field_id: String,
  18. visibility: Option<FieldVisibility>,
  19. },
  20. }
  21. pub struct FieldSettingsTest {
  22. inner: DatabaseEditorTest,
  23. }
  24. impl FieldSettingsTest {
  25. pub async fn new_grid() -> Self {
  26. let inner = DatabaseEditorTest::new_grid().await;
  27. Self { inner }
  28. }
  29. pub async fn new_board() -> Self {
  30. let inner = DatabaseEditorTest::new_board().await;
  31. Self { inner }
  32. }
  33. pub async fn new_calendar() -> Self {
  34. let inner = DatabaseEditorTest::new_calendar().await;
  35. Self { inner }
  36. }
  37. pub async fn run_scripts(&mut self, scripts: Vec<FieldSettingsScript>) {
  38. for script in scripts {
  39. self.run_script(script).await;
  40. }
  41. }
  42. pub async fn run_script(&mut self, script: FieldSettingsScript) {
  43. match script {
  44. FieldSettingsScript::AssertFieldSettings {
  45. field_ids,
  46. layout_ty,
  47. visibility,
  48. } => {
  49. let field_settings = self
  50. .editor
  51. .get_field_settings(&self.view_id, layout_ty, field_ids)
  52. .await
  53. .unwrap();
  54. for field_settings in field_settings.into_iter() {
  55. assert_eq!(field_settings.visibility, visibility)
  56. }
  57. },
  58. FieldSettingsScript::AssertAllFieldSettings {
  59. layout_ty,
  60. visibility,
  61. } => {
  62. let field_settings = self
  63. .editor
  64. .get_all_field_settings(&self.view_id, layout_ty)
  65. .await
  66. .unwrap();
  67. for field_settings in field_settings.into_iter() {
  68. assert_eq!(field_settings.visibility, visibility)
  69. }
  70. },
  71. FieldSettingsScript::UpdateFieldSettings {
  72. field_id,
  73. visibility,
  74. } => {
  75. let params = FieldSettingsChangesetParams {
  76. view_id: self.view_id.clone(),
  77. field_id,
  78. visibility,
  79. };
  80. let _ = self
  81. .editor
  82. .update_field_settings_with_changeset(params)
  83. .await;
  84. },
  85. }
  86. }
  87. }
  88. impl std::ops::Deref for FieldSettingsTest {
  89. type Target = DatabaseEditorTest;
  90. fn deref(&self) -> &Self::Target {
  91. &self.inner
  92. }
  93. }
  94. impl std::ops::DerefMut for FieldSettingsTest {
  95. fn deref_mut(&mut self) -> &mut Self::Target {
  96. &mut self.inner
  97. }
  98. }