Skip to content

Commit

Permalink
database_transactional_test!(): add table clean-up before test action
Browse files Browse the repository at this point in the history
  • Loading branch information
s373r committed Oct 24, 2024
1 parent e8c19d2 commit d92e04e
Showing 1 changed file with 25 additions and 0 deletions.
25 changes: 25 additions & 0 deletions src/utils/database-common-macros/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ use syn::parse::{Parse, ParseStream};
use syn::{
parse_macro_input,
parse_str,
ExprArray,
FnArg,
GenericArgument,
Ident,
Expand Down Expand Up @@ -350,6 +351,16 @@ pub fn transactional_method2(attr: TokenStream, item: TokenStream) -> TokenStrea

#[proc_macro]
pub fn database_transactional_test(input: TokenStream) -> TokenStream {
// Preliminary actions to clean up tables as migrations add rows.
let tables_for_cleanup = parse_str::<ExprArray>(
r#"
[
"outbox_message_consumptions",
]
"#,
)
.unwrap();

let DatabaseTransactionalTestInputArgs {
storage,
fixture,
Expand Down Expand Up @@ -379,6 +390,13 @@ pub fn database_transactional_test(input: TokenStream) -> TokenStream {
#[test_group::group(database, postgres, #extra_test_groups)]
#[test_log::test(sqlx::test(migrations = "../../../../migrations/postgres"))]
async fn #test_function_name (pg_pool: sqlx::PgPool) {
for table in #tables_for_cleanup {
sqlx::query(format!("DELETE FROM {table}").as_str())
.execute(&pg_pool)
.await
.unwrap();
}

let harness = #harness ::new(pg_pool);

database_common::DatabaseTransactionRunner::new(harness.catalog)
Expand Down Expand Up @@ -411,6 +429,13 @@ pub fn database_transactional_test(input: TokenStream) -> TokenStream {
#[test_group::group(database, sqlite, #extra_test_groups)]
#[test_log::test(sqlx::test(migrations = "../../../../migrations/sqlite"))]
async fn #test_function_name (sqlite_pool: sqlx::SqlitePool) {
for table in #tables_for_cleanup {
sqlx::query(format!("DELETE FROM {table}").as_str())
.execute(&sqlite_pool)
.await
.unwrap();
}

let harness = #harness ::new(sqlite_pool);

database_common::DatabaseTransactionRunner::new(harness.catalog)
Expand Down

0 comments on commit d92e04e

Please sign in to comment.