2023-05-28 16:14:25 +08:00
|
|
|
use collab_database::database::gen_row_id;
|
|
|
|
use collab_database::rows::RowId;
|
|
|
|
|
|
|
|
use lib_infra::util::timestamp;
|
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 => {
|
2023-05-28 16:14:25 +08:00
|
|
|
let params = collab_database::rows::CreateRowParams {
|
|
|
|
id: gen_row_id(),
|
|
|
|
timestamp: timestamp(),
|
|
|
|
..Default::default()
|
2023-05-26 14:04:17 +03:30
|
|
|
};
|
2023-06-14 22:16:33 +08:00
|
|
|
let row_detail = self
|
2023-05-28 16:14:25 +08:00
|
|
|
.editor
|
|
|
|
.create_row(&self.view_id, None, params)
|
|
|
|
.await
|
|
|
|
.unwrap()
|
|
|
|
.unwrap();
|
2023-05-26 14:04:17 +03:30
|
|
|
self
|
|
|
|
.row_by_row_id
|
2023-06-14 22:16:33 +08:00
|
|
|
.insert(row_detail.row.id.to_string(), row_detail.meta.into());
|
|
|
|
self.row_details = 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) => {
|
2023-06-14 22:16:33 +08:00
|
|
|
assert_eq!(expected_row_count, self.row_details.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
|
|
|
|
}
|
|
|
|
}
|