better tests, 2 are still failing

This commit is contained in:
filipriec
2025-03-04 19:31:32 +01:00
parent cdf49612c4
commit ec168156f8

View File

@@ -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]