better tests, 2 are still failing
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
// tests/tables_data/delete_table_data_test.rs
|
// tests/tables_data/handlers/delete_table_data_test.rs
|
||||||
use rstest::{fixture, rstest};
|
use rstest::{fixture, rstest};
|
||||||
use server::tables_data::handlers::delete_table_data;
|
use server::tables_data::handlers::delete_table_data;
|
||||||
use common::proto::multieko2::tables_data::DeleteTableDataRequest;
|
use common::proto::multieko2::tables_data::DeleteTableDataRequest;
|
||||||
@@ -8,6 +8,7 @@ use tonic;
|
|||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
use tokio::sync::Mutex;
|
use tokio::sync::Mutex;
|
||||||
use chrono::Utc;
|
use chrono::Utc;
|
||||||
|
use serde_json::json;
|
||||||
|
|
||||||
lazy_static::lazy_static! {
|
lazy_static::lazy_static! {
|
||||||
static ref TEST_MUTEX: Arc<Mutex<()>> = Arc::new(Mutex::new(()));
|
static ref TEST_MUTEX: Arc<Mutex<()>> = Arc::new(Mutex::new(()));
|
||||||
@@ -46,10 +47,29 @@ async fn existing_table(
|
|||||||
let (pool, profile_name, profile_id) = existing_profile.await;
|
let (pool, profile_name, profile_id) = existing_profile.await;
|
||||||
let table_name = format!("test_table_{}", Utc::now().timestamp_nanos_opt().unwrap_or_default());
|
let table_name = format!("test_table_{}", Utc::now().timestamp_nanos_opt().unwrap_or_default());
|
||||||
|
|
||||||
|
// Define columns for the table
|
||||||
|
let columns = json!([
|
||||||
|
{
|
||||||
|
"name": "id",
|
||||||
|
"type": "SERIAL",
|
||||||
|
"primary_key": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "deleted",
|
||||||
|
"type": "BOOLEAN",
|
||||||
|
"default": false
|
||||||
|
}
|
||||||
|
]);
|
||||||
|
|
||||||
|
// Add indexes definition - this is what's missing
|
||||||
|
let indexes = json!([]); // Empty array if no indexes, but not null
|
||||||
|
|
||||||
sqlx::query!(
|
sqlx::query!(
|
||||||
"INSERT INTO table_definitions (profile_id, table_name) VALUES ($1, $2)",
|
"INSERT INTO table_definitions (profile_id, table_name, columns, indexes) VALUES ($1, $2, $3, $4)",
|
||||||
profile_id,
|
profile_id,
|
||||||
table_name
|
table_name,
|
||||||
|
columns,
|
||||||
|
indexes
|
||||||
)
|
)
|
||||||
.execute(&pool)
|
.execute(&pool)
|
||||||
.await
|
.await
|
||||||
@@ -82,12 +102,12 @@ async fn existing_record(
|
|||||||
"INSERT INTO \"{}\" (deleted) VALUES (false) RETURNING id",
|
"INSERT INTO \"{}\" (deleted) VALUES (false) RETURNING id",
|
||||||
table_name
|
table_name
|
||||||
);
|
);
|
||||||
|
|
||||||
let row = sqlx::query(&query)
|
let row = sqlx::query(&query)
|
||||||
.fetch_one(&pool)
|
.fetch_one(&pool)
|
||||||
.await
|
.await
|
||||||
.unwrap();
|
.unwrap();
|
||||||
|
|
||||||
let id: i64 = row.get("id");
|
let id: i64 = row.get("id");
|
||||||
(pool, profile_name, table_name, id)
|
(pool, profile_name, table_name, id)
|
||||||
}
|
}
|
||||||
@@ -101,16 +121,34 @@ async fn existing_deleted_record(
|
|||||||
"INSERT INTO \"{}\" (deleted) VALUES (true) RETURNING id",
|
"INSERT INTO \"{}\" (deleted) VALUES (true) RETURNING id",
|
||||||
table_name
|
table_name
|
||||||
);
|
);
|
||||||
|
|
||||||
let row = sqlx::query(&query)
|
let row = sqlx::query(&query)
|
||||||
.fetch_one(&pool)
|
.fetch_one(&pool)
|
||||||
.await
|
.await
|
||||||
.unwrap();
|
.unwrap();
|
||||||
|
|
||||||
let id: i64 = row.get("id");
|
let id: i64 = row.get("id");
|
||||||
(pool, profile_name, table_name, id)
|
(pool, profile_name, table_name, id)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async fn cleanup_test_data(pool: &PgPool, table_name: &str) {
|
||||||
|
// Clean up table definition
|
||||||
|
sqlx::query!(
|
||||||
|
"DELETE FROM table_definitions WHERE table_name = $1",
|
||||||
|
table_name
|
||||||
|
)
|
||||||
|
.execute(pool)
|
||||||
|
.await
|
||||||
|
.unwrap();
|
||||||
|
|
||||||
|
// Clean up physical table
|
||||||
|
let drop_table = format!(r#"DROP TABLE IF EXISTS "{}" CASCADE"#, table_name);
|
||||||
|
sqlx::query(&drop_table)
|
||||||
|
.execute(pool)
|
||||||
|
.await
|
||||||
|
.unwrap();
|
||||||
|
}
|
||||||
|
|
||||||
#[rstest]
|
#[rstest]
|
||||||
#[tokio::test]
|
#[tokio::test]
|
||||||
async fn test_delete_table_data_success(
|
async fn test_delete_table_data_success(
|
||||||
@@ -135,8 +173,10 @@ async fn test_delete_table_data_success(
|
|||||||
.fetch_one(&pool)
|
.fetch_one(&pool)
|
||||||
.await
|
.await
|
||||||
.unwrap();
|
.unwrap();
|
||||||
|
|
||||||
assert!(row.get::<bool, _>("deleted"));
|
assert!(row.get::<bool, _>("deleted"));
|
||||||
|
|
||||||
|
cleanup_test_data(&pool, &table_name).await;
|
||||||
}
|
}
|
||||||
|
|
||||||
#[rstest]
|
#[rstest]
|
||||||
@@ -182,11 +222,13 @@ async fn test_delete_table_data_record_not_found(
|
|||||||
let (pool, profile_name, _, table_name) = existing_table.await;
|
let (pool, profile_name, _, table_name) = existing_table.await;
|
||||||
let request = DeleteTableDataRequest {
|
let request = DeleteTableDataRequest {
|
||||||
profile_name,
|
profile_name,
|
||||||
table_name,
|
table_name: table_name.clone(), // Clone here
|
||||||
record_id: 9999,
|
record_id: 9999,
|
||||||
};
|
};
|
||||||
let response = delete_table_data(&pool, request).await.unwrap();
|
let response = delete_table_data(&pool, request).await.unwrap();
|
||||||
assert!(!response.success);
|
assert!(!response.success);
|
||||||
|
|
||||||
|
cleanup_test_data(&pool, &table_name).await;
|
||||||
}
|
}
|
||||||
|
|
||||||
#[rstest]
|
#[rstest]
|
||||||
@@ -198,11 +240,13 @@ async fn test_delete_table_data_already_deleted(
|
|||||||
let (pool, profile_name, table_name, record_id) = existing_deleted_record.await;
|
let (pool, profile_name, table_name, record_id) = existing_deleted_record.await;
|
||||||
let request = DeleteTableDataRequest {
|
let request = DeleteTableDataRequest {
|
||||||
profile_name,
|
profile_name,
|
||||||
table_name,
|
table_name: table_name.clone(), // Clone here
|
||||||
record_id,
|
record_id,
|
||||||
};
|
};
|
||||||
let response = delete_table_data(&pool, request).await.unwrap();
|
let response = delete_table_data(&pool, request).await.unwrap();
|
||||||
assert!(!response.success);
|
assert!(!response.success);
|
||||||
|
|
||||||
|
cleanup_test_data(&pool, &table_name).await;
|
||||||
}
|
}
|
||||||
|
|
||||||
#[rstest]
|
#[rstest]
|
||||||
|
|||||||
Reference in New Issue
Block a user