refactoring of integration tests

This commit is contained in:
Lennart K
2026-01-28 18:38:03 +01:00
parent c763a682ed
commit af60a446ad
56 changed files with 111 additions and 237 deletions

View File

@@ -37,11 +37,11 @@ impl SqliteStore {
}
pub async fn create_db_pool(db_url: &str, migrate: bool) -> Result<Pool<Sqlite>, sqlx::Error> {
let options: SqliteConnectOptions = db_url.parse()?;
let db = SqlitePool::connect_with(
SqliteConnectOptions::new()
options
.journal_mode(sqlx::sqlite::SqliteJournalMode::Wal)
.synchronous(sqlx::sqlite::SqliteSynchronous::Normal)
.filename(db_url)
.create_if_missing(true),
)
.await?;

View File

@@ -1,6 +1,6 @@
use crate::{
SqliteStore, addressbook_store::SqliteAddressbookStore, calendar_store::SqliteCalendarStore,
principal_store::SqlitePrincipalStore,
create_db_pool, principal_store::SqlitePrincipalStore,
};
use rstest::fixture;
use rustical_store::auth::{AuthenticationProvider, Principal, PrincipalType};
@@ -9,12 +9,23 @@ use sqlx::SqlitePool;
mod addressbook_store;
mod calendar_store;
async fn get_test_db() -> SqlitePool {
let db = SqlitePool::connect("sqlite::memory:").await.unwrap();
sqlx::migrate!("./migrations").run(&db).await.unwrap();
#[derive(Debug, Clone)]
pub struct TestStoreContext {
pub db: SqlitePool,
pub addr_store: SqliteAddressbookStore,
pub cal_store: SqliteCalendarStore,
pub principal_store: SqlitePrincipalStore,
pub sub_store: SqliteStore,
}
#[fixture]
pub async fn test_store_context() -> TestStoreContext {
let (send_addr, _recv) = tokio::sync::mpsc::channel(1);
let (send_cal, _recv) = tokio::sync::mpsc::channel(1);
let db = create_db_pool(":memory:", true).await.unwrap();
// Populate with test data
let principal_store = SqlitePrincipalStore::new(db.clone());
// Populate with test data
principal_store
.insert_principal(
Principal {
@@ -33,28 +44,11 @@ async fn get_test_db() -> SqlitePool {
.await
.unwrap();
db
}
#[derive(Debug, Clone)]
pub struct TestStoreContext {
pub db: SqlitePool,
pub addr_store: SqliteAddressbookStore,
pub cal_store: SqliteCalendarStore,
pub principal_store: SqlitePrincipalStore,
pub sub_store: SqliteStore,
}
#[fixture]
pub async fn test_store_context() -> TestStoreContext {
let (send_addr, _recv) = tokio::sync::mpsc::channel(1);
let (send_cal, _recv) = tokio::sync::mpsc::channel(1);
let db = get_test_db().await;
TestStoreContext {
db: db.clone(),
addr_store: SqliteAddressbookStore::new(db.clone(), send_addr, false),
cal_store: SqliteCalendarStore::new(db.clone(), send_cal, false),
principal_store: SqlitePrincipalStore::new(db.clone()),
principal_store,
sub_store: SqliteStore::new(db),
}
}