script.rs 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. use collab_database::fields::Field;
  2. use collab_database::views::DatabaseLayout;
  3. use flowy_database2::entities::FieldType;
  4. use flowy_database2::services::setting::CalendarLayoutSetting;
  5. use crate::database::database_editor::DatabaseEditorTest;
  6. pub enum LayoutScript {
  7. AssertCalendarLayoutSetting { expected: CalendarLayoutSetting },
  8. AssertDefaultAllCalendarEvents,
  9. AssertAllCalendarEventsCount { expected: usize },
  10. UpdateDatabaseLayout { layout: DatabaseLayout },
  11. }
  12. pub struct DatabaseLayoutTest {
  13. database_test: DatabaseEditorTest,
  14. }
  15. impl DatabaseLayoutTest {
  16. pub async fn new_no_date_grid() -> Self {
  17. let database_test = DatabaseEditorTest::new_no_date_grid().await;
  18. Self { database_test }
  19. }
  20. pub async fn new_calendar() -> Self {
  21. let database_test = DatabaseEditorTest::new_calendar().await;
  22. Self { database_test }
  23. }
  24. pub async fn run_scripts(&mut self, scripts: Vec<LayoutScript>) {
  25. for script in scripts {
  26. self.run_script(script).await;
  27. }
  28. }
  29. pub async fn get_first_date_field(&self) -> Field {
  30. self.database_test.get_first_field(FieldType::DateTime)
  31. }
  32. pub async fn run_script(&mut self, script: LayoutScript) {
  33. match script {
  34. LayoutScript::UpdateDatabaseLayout { layout } => {
  35. self
  36. .database_test
  37. .editor
  38. .update_view_layout(&self.database_test.view_id, layout)
  39. .await
  40. .unwrap();
  41. },
  42. LayoutScript::AssertAllCalendarEventsCount { expected } => {
  43. let events = self
  44. .database_test
  45. .editor
  46. .get_all_calendar_events(&self.database_test.view_id)
  47. .await;
  48. assert_eq!(events.len(), expected);
  49. },
  50. LayoutScript::AssertCalendarLayoutSetting { expected } => {
  51. let view_id = self.database_test.view_id.clone();
  52. let layout_ty = DatabaseLayout::Calendar;
  53. let calendar_setting = self
  54. .database_test
  55. .editor
  56. .get_layout_setting(&view_id, layout_ty)
  57. .await
  58. .unwrap()
  59. .calendar
  60. .unwrap();
  61. assert_eq!(calendar_setting.layout_ty, expected.layout_ty);
  62. assert_eq!(
  63. calendar_setting.first_day_of_week,
  64. expected.first_day_of_week
  65. );
  66. assert_eq!(calendar_setting.show_weekends, expected.show_weekends);
  67. },
  68. LayoutScript::AssertDefaultAllCalendarEvents => {
  69. let events = self
  70. .database_test
  71. .editor
  72. .get_all_calendar_events(&self.database_test.view_id)
  73. .await;
  74. assert_eq!(events.len(), 5);
  75. for (index, event) in events.into_iter().enumerate() {
  76. if index == 0 {
  77. assert_eq!(event.title, "A");
  78. assert_eq!(event.timestamp, 1678090778);
  79. }
  80. if index == 1 {
  81. assert_eq!(event.title, "B");
  82. assert_eq!(event.timestamp, 1677917978);
  83. }
  84. if index == 2 {
  85. assert_eq!(event.title, "C");
  86. assert_eq!(event.timestamp, 1679213978);
  87. }
  88. if index == 4 {
  89. assert_eq!(event.title, "E");
  90. assert_eq!(event.timestamp, 1678695578);
  91. }
  92. }
  93. },
  94. }
  95. }
  96. }