| 
									
										
										
										
											2023-05-28 16:14:25 +08:00
										 |  |  | use collab_database::rows::RowId;
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-03-14 11:26:32 +08:00
										 |  |  | use flowy_database2::entities::CreateRowPayloadPB;
 | 
					
						
							| 
									
										
										
										
											2023-05-26 14:04:17 +03:30
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-06-14 22:16:33 +08:00
										 |  |  | use crate::database::database_editor::DatabaseEditorTest;
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-05-26 14:04:17 +03:30
										 |  |  | pub enum RowScript {
 | 
					
						
							|  |  |  |   CreateEmptyRow,
 | 
					
						
							| 
									
										
										
										
											2023-05-28 16:14:25 +08:00
										 |  |  |   UpdateTextCell { row_id: RowId, content: String },
 | 
					
						
							| 
									
										
										
										
											2023-05-26 14:04:17 +03:30
										 |  |  |   AssertRowCount(usize),
 | 
					
						
							|  |  |  | }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | pub struct DatabaseRowTest {
 | 
					
						
							|  |  |  |   inner: DatabaseEditorTest,
 | 
					
						
							|  |  |  | }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | impl DatabaseRowTest {
 | 
					
						
							|  |  |  |   pub async fn new() -> Self {
 | 
					
						
							|  |  |  |     let editor_test = DatabaseEditorTest::new_grid().await;
 | 
					
						
							|  |  |  |     Self { inner: editor_test }
 | 
					
						
							|  |  |  |   }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   pub async fn run_scripts(&mut self, scripts: Vec<RowScript>) {
 | 
					
						
							|  |  |  |     for script in scripts {
 | 
					
						
							|  |  |  |       self.run_script(script).await;
 | 
					
						
							|  |  |  |     }
 | 
					
						
							|  |  |  |   }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   pub async fn run_script(&mut self, script: RowScript) {
 | 
					
						
							|  |  |  |     match script {
 | 
					
						
							|  |  |  |       RowScript::CreateEmptyRow => {
 | 
					
						
							| 
									
										
										
										
											2024-03-14 11:26:32 +08:00
										 |  |  |         let params = CreateRowPayloadPB {
 | 
					
						
							|  |  |  |           view_id: self.view_id.clone(),
 | 
					
						
							| 
									
										
										
										
											2023-05-28 16:14:25 +08:00
										 |  |  |           ..Default::default()
 | 
					
						
							| 
									
										
										
										
											2023-05-26 14:04:17 +03:30
										 |  |  |         };
 | 
					
						
							| 
									
										
										
										
											2024-03-14 11:26:32 +08:00
										 |  |  |         let row_detail = self.editor.create_row(params).await.unwrap().unwrap();
 | 
					
						
							| 
									
										
										
										
											2023-05-26 14:04:17 +03:30
										 |  |  |         self
 | 
					
						
							|  |  |  |           .row_by_row_id
 | 
					
						
							| 
									
										
										
										
											2023-08-28 13:28:24 +08:00
										 |  |  |           .insert(row_detail.row.id.to_string(), row_detail.into());
 | 
					
						
							| 
									
										
										
										
											2024-08-26 09:46:16 +08:00
										 |  |  |         self.rows = self.get_rows().await;
 | 
					
						
							| 
									
										
										
										
											2023-05-26 14:04:17 +03:30
										 |  |  |       },
 | 
					
						
							| 
									
										
										
										
											2023-05-28 16:14:25 +08:00
										 |  |  |       RowScript::UpdateTextCell { row_id, content } => {
 | 
					
						
							|  |  |  |         self.update_text_cell(row_id, &content).await.unwrap();
 | 
					
						
							|  |  |  |       },
 | 
					
						
							| 
									
										
										
										
											2023-05-26 14:04:17 +03:30
										 |  |  |       RowScript::AssertRowCount(expected_row_count) => {
 | 
					
						
							| 
									
										
										
										
											2024-08-26 09:46:16 +08:00
										 |  |  |         assert_eq!(expected_row_count, self.rows.len());
 | 
					
						
							| 
									
										
										
										
											2023-05-26 14:04:17 +03:30
										 |  |  |       },
 | 
					
						
							|  |  |  |     }
 | 
					
						
							|  |  |  |   }
 | 
					
						
							|  |  |  | }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | impl std::ops::Deref for DatabaseRowTest {
 | 
					
						
							|  |  |  |   type Target = DatabaseEditorTest;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   fn deref(&self) -> &Self::Target {
 | 
					
						
							|  |  |  |     &self.inner
 | 
					
						
							|  |  |  |   }
 | 
					
						
							|  |  |  | }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | impl std::ops::DerefMut for DatabaseRowTest {
 | 
					
						
							|  |  |  |   fn deref_mut(&mut self) -> &mut Self::Target {
 | 
					
						
							|  |  |  |     &mut self.inner
 | 
					
						
							|  |  |  |   }
 | 
					
						
							|  |  |  | }
 |