script.rs 2.5 KB

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