board_mock_data.rs 7.8 KB

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