calendar_mock_data.rs 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. use collab_database::database::{gen_database_id, gen_database_view_id, gen_row_id, DatabaseData};
  2. use collab_database::views::{DatabaseLayout, DatabaseView, LayoutSetting, LayoutSettings};
  3. use flowy_database2::services::field_settings::DatabaseFieldSettingsMapBuilder;
  4. use strum::IntoEnumIterator;
  5. use flowy_database2::entities::FieldType;
  6. use flowy_database2::services::field::{FieldBuilder, MultiSelectTypeOption};
  7. use flowy_database2::services::setting::CalendarLayoutSetting;
  8. use crate::database::database_editor::TestRowBuilder;
  9. // Calendar unit test mock data
  10. pub fn make_test_calendar() -> DatabaseData {
  11. let mut fields = vec![];
  12. let mut rows = vec![];
  13. // text
  14. let text_field = FieldBuilder::from_field_type(FieldType::RichText)
  15. .name("Name")
  16. .visibility(true)
  17. .primary(true)
  18. .build();
  19. fields.push(text_field);
  20. // date
  21. let date_field = FieldBuilder::from_field_type(FieldType::DateTime)
  22. .name("Date")
  23. .visibility(true)
  24. .build();
  25. let date_field_id = date_field.id.clone();
  26. fields.push(date_field);
  27. // multi select
  28. let type_option = MultiSelectTypeOption::default();
  29. let multi_select_field = FieldBuilder::new(FieldType::MultiSelect, type_option)
  30. .name("Tags")
  31. .visibility(true)
  32. .build();
  33. fields.push(multi_select_field);
  34. let calendar_setting: LayoutSetting = CalendarLayoutSetting::new(date_field_id).into();
  35. let field_settings =
  36. DatabaseFieldSettingsMapBuilder::new(fields.clone(), DatabaseLayout::Calendar).build();
  37. for i in 0..5 {
  38. let mut row_builder = TestRowBuilder::new(gen_row_id(), &fields);
  39. match i {
  40. 0 => {
  41. for field_type in FieldType::iter() {
  42. match field_type {
  43. FieldType::RichText => row_builder.insert_text_cell("A"),
  44. FieldType::DateTime => {
  45. row_builder.insert_date_cell("1678090778", None, None, &field_type)
  46. },
  47. _ => "".to_owned(),
  48. };
  49. }
  50. },
  51. 1 => {
  52. for field_type in FieldType::iter() {
  53. match field_type {
  54. FieldType::RichText => row_builder.insert_text_cell("B"),
  55. FieldType::DateTime => {
  56. row_builder.insert_date_cell("1677917978", None, None, &field_type)
  57. },
  58. _ => "".to_owned(),
  59. };
  60. }
  61. },
  62. 2 => {
  63. for field_type in FieldType::iter() {
  64. match field_type {
  65. FieldType::RichText => row_builder.insert_text_cell("C"),
  66. FieldType::DateTime => {
  67. row_builder.insert_date_cell("1679213978", None, None, &field_type)
  68. },
  69. _ => "".to_owned(),
  70. };
  71. }
  72. },
  73. 3 => {
  74. for field_type in FieldType::iter() {
  75. match field_type {
  76. FieldType::RichText => row_builder.insert_text_cell("D"),
  77. FieldType::DateTime => {
  78. row_builder.insert_date_cell("1678695578", None, None, &field_type)
  79. },
  80. _ => "".to_owned(),
  81. };
  82. }
  83. },
  84. 4 => {
  85. for field_type in FieldType::iter() {
  86. match field_type {
  87. FieldType::RichText => row_builder.insert_text_cell("E"),
  88. FieldType::DateTime => {
  89. row_builder.insert_date_cell("1678695578", None, None, &field_type)
  90. },
  91. _ => "".to_owned(),
  92. };
  93. }
  94. },
  95. _ => {},
  96. }
  97. let row = row_builder.build();
  98. rows.push(row);
  99. }
  100. let mut layout_settings = LayoutSettings::new();
  101. layout_settings.insert(DatabaseLayout::Calendar, calendar_setting);
  102. let view = DatabaseView {
  103. id: gen_database_view_id(),
  104. database_id: gen_database_id(),
  105. name: "".to_string(),
  106. layout: DatabaseLayout::Calendar,
  107. layout_settings,
  108. filters: vec![],
  109. group_settings: vec![],
  110. sorts: vec![],
  111. row_orders: vec![],
  112. field_orders: vec![],
  113. created_at: 0,
  114. modified_at: 0,
  115. field_settings,
  116. };
  117. DatabaseData { view, fields, rows }
  118. }