row_util.rs 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. use crate::grid::script::GridEditorTest;
  2. use flowy_grid::services::field::DateCellContentChangeset;
  3. use flowy_grid::services::row::{CreateRowRevisionBuilder, CreateRowRevisionPayload};
  4. use flowy_grid_data_model::entities::FieldType;
  5. use flowy_grid_data_model::revision::FieldRevision;
  6. use strum::EnumCount;
  7. pub struct GridRowTestBuilder<'a> {
  8. test: &'a GridEditorTest,
  9. inner_builder: CreateRowRevisionBuilder<'a>,
  10. }
  11. impl<'a> GridRowTestBuilder<'a> {
  12. pub fn new(test: &'a GridEditorTest) -> 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. pub fn update_text_cell(mut self, data: String) -> Self {
  18. let text_field = self.field_rev_with_type(&FieldType::DateTime);
  19. self.inner_builder.add_cell(&text_field.id, data).unwrap();
  20. self
  21. }
  22. pub fn update_number_cell(mut self, data: String) -> Self {
  23. let number_field = self.field_rev_with_type(&FieldType::DateTime);
  24. self.inner_builder.add_cell(&number_field.id, data).unwrap();
  25. self
  26. }
  27. pub fn update_date_cell(mut self, value: i64) -> Self {
  28. let value = serde_json::to_string(&DateCellContentChangeset {
  29. date: Some(value.to_string()),
  30. time: None,
  31. })
  32. .unwrap();
  33. let date_field = self.field_rev_with_type(&FieldType::DateTime);
  34. self.inner_builder.add_cell(&date_field.id, value).unwrap();
  35. self
  36. }
  37. pub fn update_checkbox_cell(mut self, data: bool) -> Self {
  38. let number_field = self.field_rev_with_type(&FieldType::Checkbox);
  39. self.inner_builder.add_cell(&number_field.id, data.to_string()).unwrap();
  40. self
  41. }
  42. pub fn update_url_cell(mut self, data: String) -> Self {
  43. let number_field = self.field_rev_with_type(&FieldType::Checkbox);
  44. self.inner_builder.add_cell(&number_field.id, data).unwrap();
  45. self
  46. }
  47. pub fn field_rev_with_type(&self, field_type: &FieldType) -> FieldRevision {
  48. self.test
  49. .field_revs
  50. .iter()
  51. .find(|field_rev| &field_rev.field_type == field_type)
  52. .unwrap()
  53. .clone()
  54. }
  55. pub fn build(self) -> CreateRowRevisionPayload {
  56. self.inner_builder.build()
  57. }
  58. }