board_mock_data.rs 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207
  1. // #![allow(clippy::all)]
  2. // #![allow(dead_code)]
  3. // #![allow(unused_imports)]
  4. use crate::database::block_test::util::DatabaseRowTestBuilder;
  5. use crate::database::mock_data::{
  6. COMPLETED, FACEBOOK, FIRST_THING, GOOGLE, PAUSED, PLANNED, SECOND_THING, THIRD_THING, TWITTER,
  7. };
  8. use flowy_client_sync::client_database::DatabaseBuilder;
  9. use flowy_database::entities::*;
  10. use flowy_database::services::field::SelectOptionPB;
  11. use flowy_database::services::field::*;
  12. use database_model::*;
  13. use strum::IntoEnumIterator;
  14. // Kanban board unit test mock data
  15. pub fn make_test_board() -> BuildDatabaseContext {
  16. let mut database_builder = DatabaseBuilder::new();
  17. // Iterate through the FieldType to create the corresponding Field.
  18. for field_type in FieldType::iter() {
  19. let field_type: FieldType = field_type;
  20. match field_type {
  21. FieldType::RichText => {
  22. let text_field = FieldBuilder::new(RichTextTypeOptionBuilder::default())
  23. .name("Name")
  24. .visibility(true)
  25. .primary(true)
  26. .build();
  27. database_builder.add_field(text_field);
  28. },
  29. FieldType::Number => {
  30. // Number
  31. let number = NumberTypeOptionBuilder::default().set_format(NumberFormat::USD);
  32. let number_field = FieldBuilder::new(number)
  33. .name("Price")
  34. .visibility(true)
  35. .build();
  36. database_builder.add_field(number_field);
  37. },
  38. FieldType::DateTime => {
  39. // Date
  40. let date = DateTypeOptionBuilder::default()
  41. .date_format(DateFormat::US)
  42. .time_format(TimeFormat::TwentyFourHour);
  43. let date_field = FieldBuilder::new(date)
  44. .name("Time")
  45. .visibility(true)
  46. .build();
  47. database_builder.add_field(date_field);
  48. },
  49. FieldType::SingleSelect => {
  50. // Single Select
  51. let single_select = SingleSelectTypeOptionBuilder::default()
  52. .add_option(SelectOptionPB::new(COMPLETED))
  53. .add_option(SelectOptionPB::new(PLANNED))
  54. .add_option(SelectOptionPB::new(PAUSED));
  55. let single_select_field = FieldBuilder::new(single_select)
  56. .name("Status")
  57. .visibility(true)
  58. .build();
  59. database_builder.add_field(single_select_field);
  60. },
  61. FieldType::MultiSelect => {
  62. // MultiSelect
  63. let multi_select = MultiSelectTypeOptionBuilder::default()
  64. .add_option(SelectOptionPB::new(GOOGLE))
  65. .add_option(SelectOptionPB::new(FACEBOOK))
  66. .add_option(SelectOptionPB::new(TWITTER));
  67. let multi_select_field = FieldBuilder::new(multi_select)
  68. .name("Platform")
  69. .visibility(true)
  70. .build();
  71. database_builder.add_field(multi_select_field);
  72. },
  73. FieldType::Checkbox => {
  74. // Checkbox
  75. let checkbox = CheckboxTypeOptionBuilder::default();
  76. let checkbox_field = FieldBuilder::new(checkbox)
  77. .name("is urgent")
  78. .visibility(true)
  79. .build();
  80. database_builder.add_field(checkbox_field);
  81. },
  82. FieldType::URL => {
  83. // URL
  84. let url = URLTypeOptionBuilder::default();
  85. let url_field = FieldBuilder::new(url).name("link").visibility(true).build();
  86. database_builder.add_field(url_field);
  87. },
  88. FieldType::Checklist => {
  89. let checklist = ChecklistTypeOptionBuilder::default()
  90. .add_option(SelectOptionPB::new(FIRST_THING))
  91. .add_option(SelectOptionPB::new(SECOND_THING))
  92. .add_option(SelectOptionPB::new(THIRD_THING));
  93. let checklist_field = FieldBuilder::new(checklist)
  94. .name("TODO")
  95. .visibility(true)
  96. .build();
  97. database_builder.add_field(checklist_field);
  98. },
  99. }
  100. }
  101. // We have many assumptions base on the number of the rows, so do not change the number of the loop.
  102. for i in 0..5 {
  103. let block_id = database_builder.block_id().to_owned();
  104. let field_revs = database_builder.field_revs().clone();
  105. let mut row_builder = DatabaseRowTestBuilder::new(block_id.clone(), field_revs);
  106. match i {
  107. 0 => {
  108. for field_type in FieldType::iter() {
  109. match field_type {
  110. FieldType::RichText => row_builder.insert_text_cell("A"),
  111. FieldType::Number => row_builder.insert_number_cell("1"),
  112. // 1647251762 => Mar 14,2022
  113. FieldType::DateTime => row_builder.insert_date_cell("1647251762"),
  114. FieldType::SingleSelect => {
  115. row_builder.insert_single_select_cell(|mut options| options.remove(0))
  116. },
  117. FieldType::MultiSelect => row_builder
  118. .insert_multi_select_cell(|mut options| vec![options.remove(0), options.remove(0)]),
  119. FieldType::Checkbox => row_builder.insert_checkbox_cell("true"),
  120. FieldType::URL => row_builder.insert_url_cell("https://appflowy.io"),
  121. _ => "".to_owned(),
  122. };
  123. }
  124. },
  125. 1 => {
  126. for field_type in FieldType::iter() {
  127. match field_type {
  128. FieldType::RichText => row_builder.insert_text_cell("B"),
  129. FieldType::Number => row_builder.insert_number_cell("2"),
  130. // 1647251762 => Mar 14,2022
  131. FieldType::DateTime => row_builder.insert_date_cell("1647251762"),
  132. FieldType::SingleSelect => {
  133. row_builder.insert_single_select_cell(|mut options| options.remove(0))
  134. },
  135. FieldType::MultiSelect => row_builder
  136. .insert_multi_select_cell(|mut options| vec![options.remove(0), options.remove(0)]),
  137. FieldType::Checkbox => row_builder.insert_checkbox_cell("true"),
  138. _ => "".to_owned(),
  139. };
  140. }
  141. },
  142. 2 => {
  143. for field_type in FieldType::iter() {
  144. match field_type {
  145. FieldType::RichText => row_builder.insert_text_cell("C"),
  146. FieldType::Number => row_builder.insert_number_cell("3"),
  147. // 1647251762 => Mar 14,2022
  148. FieldType::DateTime => row_builder.insert_date_cell("1647251762"),
  149. FieldType::SingleSelect => {
  150. row_builder.insert_single_select_cell(|mut options| options.remove(1))
  151. },
  152. FieldType::MultiSelect => {
  153. row_builder.insert_multi_select_cell(|mut options| vec![options.remove(0)])
  154. },
  155. FieldType::Checkbox => row_builder.insert_checkbox_cell("false"),
  156. FieldType::URL => {
  157. row_builder.insert_url_cell("https://github.com/AppFlowy-IO/AppFlowy")
  158. },
  159. _ => "".to_owned(),
  160. };
  161. }
  162. },
  163. 3 => {
  164. for field_type in FieldType::iter() {
  165. match field_type {
  166. FieldType::RichText => row_builder.insert_text_cell("DA"),
  167. FieldType::Number => row_builder.insert_number_cell("4"),
  168. FieldType::DateTime => row_builder.insert_date_cell("1668704685"),
  169. FieldType::SingleSelect => {
  170. row_builder.insert_single_select_cell(|mut options| options.remove(1))
  171. },
  172. FieldType::Checkbox => row_builder.insert_checkbox_cell("false"),
  173. FieldType::URL => row_builder.insert_url_cell("https://appflowy.io"),
  174. _ => "".to_owned(),
  175. };
  176. }
  177. },
  178. 4 => {
  179. for field_type in FieldType::iter() {
  180. match field_type {
  181. FieldType::RichText => row_builder.insert_text_cell("AE"),
  182. FieldType::Number => row_builder.insert_number_cell(""),
  183. FieldType::DateTime => row_builder.insert_date_cell("1668359085"),
  184. FieldType::SingleSelect => {
  185. row_builder.insert_single_select_cell(|mut options| options.remove(2))
  186. },
  187. FieldType::Checkbox => row_builder.insert_checkbox_cell("false"),
  188. _ => "".to_owned(),
  189. };
  190. }
  191. },
  192. _ => {},
  193. }
  194. let row_rev = row_builder.build();
  195. database_builder.add_row(row_rev);
  196. }
  197. database_builder.build()
  198. }