script.rs 2.4 KB

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