util.rs 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. use crate::grid::block_test::script::GridRowTest;
  2. use flowy_grid::entities::FieldType;
  3. use flowy_grid::services::field::DateCellChangeset;
  4. use flowy_grid::services::row::{CreateRowRevisionBuilder, CreateRowRevisionPayload};
  5. use flowy_grid_data_model::revision::FieldRevision;
  6. use strum::EnumCount;
  7. pub struct GridRowTestBuilder<'a> {
  8. test: &'a GridRowTest,
  9. inner_builder: CreateRowRevisionBuilder<'a>,
  10. }
  11. impl<'a> GridRowTestBuilder<'a> {
  12. pub fn new(test: &'a GridRowTest) -> Self {
  13. assert_eq!(test.field_revs().len(), FieldType::COUNT);
  14. let inner_builder = CreateRowRevisionBuilder::new(test.field_revs());
  15. Self { test, inner_builder }
  16. }
  17. #[allow(dead_code)]
  18. pub fn update_text_cell(mut self, data: String) -> Self {
  19. let text_field = self.field_rev_with_type(&FieldType::DateTime);
  20. self.inner_builder.add_cell(&text_field.id, data).unwrap();
  21. self
  22. }
  23. #[allow(dead_code)]
  24. pub fn update_number_cell(mut self, data: String) -> Self {
  25. let number_field = self.field_rev_with_type(&FieldType::DateTime);
  26. self.inner_builder.add_cell(&number_field.id, data).unwrap();
  27. self
  28. }
  29. #[allow(dead_code)]
  30. pub fn update_date_cell(mut self, value: i64) -> Self {
  31. let value = serde_json::to_string(&DateCellChangeset {
  32. date: Some(value.to_string()),
  33. time: None,
  34. })
  35. .unwrap();
  36. let date_field = self.field_rev_with_type(&FieldType::DateTime);
  37. self.inner_builder.add_cell(&date_field.id, value).unwrap();
  38. self
  39. }
  40. #[allow(dead_code)]
  41. pub fn update_checkbox_cell(mut self, data: bool) -> Self {
  42. let number_field = self.field_rev_with_type(&FieldType::Checkbox);
  43. self.inner_builder.add_cell(&number_field.id, data.to_string()).unwrap();
  44. self
  45. }
  46. #[allow(dead_code)]
  47. pub fn update_url_cell(mut self, data: String) -> Self {
  48. let number_field = self.field_rev_with_type(&FieldType::Checkbox);
  49. self.inner_builder.add_cell(&number_field.id, data).unwrap();
  50. self
  51. }
  52. pub fn field_rev_with_type(&self, field_type: &FieldType) -> FieldRevision {
  53. self.test
  54. .field_revs()
  55. .iter()
  56. .find(|field_rev| {
  57. let t_field_type: FieldType = field_rev.field_type_rev.into();
  58. &t_field_type == field_type
  59. })
  60. .unwrap()
  61. .as_ref()
  62. .clone()
  63. }
  64. pub fn build(self) -> CreateRowRevisionPayload {
  65. self.inner_builder.build()
  66. }
  67. }