script.rs 2.5 KB

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