script.rs 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  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. GetCalendarEvents,
  9. }
  10. pub struct DatabaseLayoutTest {
  11. database_test: DatabaseEditorTest,
  12. }
  13. impl DatabaseLayoutTest {
  14. pub async fn new_calendar() -> Self {
  15. let database_test = DatabaseEditorTest::new_calendar().await;
  16. Self { database_test }
  17. }
  18. pub async fn run_scripts(&mut self, scripts: Vec<LayoutScript>) {
  19. for script in scripts {
  20. self.run_script(script).await;
  21. }
  22. }
  23. pub async fn get_first_date_field(&self) -> Field {
  24. self.database_test.get_first_field(FieldType::DateTime)
  25. }
  26. pub async fn run_script(&mut self, script: LayoutScript) {
  27. match script {
  28. LayoutScript::AssertCalendarLayoutSetting { expected } => {
  29. let view_id = self.database_test.view_id.clone();
  30. let layout_ty = DatabaseLayout::Calendar;
  31. let calendar_setting = self
  32. .database_test
  33. .editor
  34. .get_layout_setting(&view_id, layout_ty)
  35. .await
  36. .unwrap()
  37. .calendar
  38. .unwrap();
  39. assert_eq!(calendar_setting.layout_ty, expected.layout_ty);
  40. assert_eq!(
  41. calendar_setting.first_day_of_week,
  42. expected.first_day_of_week
  43. );
  44. assert_eq!(calendar_setting.show_weekends, expected.show_weekends);
  45. },
  46. LayoutScript::GetCalendarEvents => {
  47. let events = self
  48. .database_test
  49. .editor
  50. .get_all_calendar_events(&self.database_test.view_id)
  51. .await;
  52. assert_eq!(events.len(), 5);
  53. for (index, event) in events.into_iter().enumerate() {
  54. if index == 0 {
  55. assert_eq!(event.title, "A");
  56. assert_eq!(event.timestamp, 1678090778);
  57. }
  58. if index == 1 {
  59. assert_eq!(event.title, "B");
  60. assert_eq!(event.timestamp, 1677917978);
  61. }
  62. if index == 2 {
  63. assert_eq!(event.title, "C");
  64. assert_eq!(event.timestamp, 1679213978);
  65. }
  66. if index == 4 {
  67. assert_eq!(event.title, "E");
  68. assert_eq!(event.timestamp, 1678695578);
  69. }
  70. }
  71. },
  72. }
  73. }
  74. }