mirror of
https://github.com/lennart-k/rustical.git
synced 2025-12-13 22:52:22 +00:00
sqlite_store: Add some more basic tests
This commit is contained in:
81
crates/store_sqlite/src/tests/addressbook_store.rs
Normal file
81
crates/store_sqlite/src/tests/addressbook_store.rs
Normal file
@@ -0,0 +1,81 @@
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use crate::{addressbook_store::SqliteAddressbookStore, tests::get_test_addressbook_store};
|
||||
use rstest::rstest;
|
||||
use rustical_store::{Addressbook, AddressbookStore};
|
||||
|
||||
#[rstest]
|
||||
#[tokio::test]
|
||||
async fn test_addressbook_store(
|
||||
#[from(get_test_addressbook_store)]
|
||||
#[future]
|
||||
addr_store: SqliteAddressbookStore,
|
||||
) {
|
||||
let addr_store = addr_store.await;
|
||||
|
||||
let cal = Addressbook {
|
||||
id: "addr".to_string(),
|
||||
principal: "fake-user".to_string(),
|
||||
displayname: None,
|
||||
description: None,
|
||||
deleted_at: None,
|
||||
synctoken: 0,
|
||||
push_topic: "alskdj".to_string(),
|
||||
};
|
||||
|
||||
assert!(
|
||||
addr_store.insert_addressbook(cal).await.is_err(),
|
||||
"This should fail due to the user not existing "
|
||||
);
|
||||
|
||||
let addr = Addressbook {
|
||||
id: "addr".to_string(),
|
||||
principal: "user".to_string(),
|
||||
displayname: None,
|
||||
description: None,
|
||||
deleted_at: None,
|
||||
synctoken: 0,
|
||||
push_topic: "alskdj".to_string(),
|
||||
};
|
||||
|
||||
addr_store.insert_addressbook(addr.clone()).await.unwrap();
|
||||
|
||||
assert_eq!(
|
||||
addr_store
|
||||
.get_addressbook("user", "addr", false)
|
||||
.await
|
||||
.unwrap(),
|
||||
addr
|
||||
);
|
||||
|
||||
addr_store
|
||||
.delete_addressbook("user", "addr", true)
|
||||
.await
|
||||
.unwrap();
|
||||
|
||||
let Err(err) = addr_store.get_addressbook("user", "addr", false).await else {
|
||||
panic!()
|
||||
};
|
||||
assert!(err.is_not_found());
|
||||
|
||||
addr_store
|
||||
.get_addressbook("user", "addr", true)
|
||||
.await
|
||||
.unwrap();
|
||||
|
||||
addr_store
|
||||
.restore_addressbook("user", "addr")
|
||||
.await
|
||||
.unwrap();
|
||||
|
||||
addr_store
|
||||
.delete_addressbook("user", "addr", false)
|
||||
.await
|
||||
.unwrap();
|
||||
|
||||
let Err(err) = addr_store.get_addressbook("user", "addr", true).await else {
|
||||
panic!()
|
||||
};
|
||||
assert!(err.is_not_found());
|
||||
}
|
||||
}
|
||||
76
crates/store_sqlite/src/tests/calendar_store.rs
Normal file
76
crates/store_sqlite/src/tests/calendar_store.rs
Normal file
@@ -0,0 +1,76 @@
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use crate::{calendar_store::SqliteCalendarStore, tests::get_test_calendar_store};
|
||||
use rstest::rstest;
|
||||
use rustical_store::{Calendar, CalendarMetadata, CalendarStore};
|
||||
|
||||
#[rstest]
|
||||
#[tokio::test]
|
||||
async fn test_calendar_store(
|
||||
#[from(get_test_calendar_store)]
|
||||
#[future]
|
||||
cal_store: SqliteCalendarStore,
|
||||
) {
|
||||
let cal_store = cal_store.await;
|
||||
|
||||
let cal = Calendar {
|
||||
principal: "fake-user".to_string(),
|
||||
timezone_id: None,
|
||||
deleted_at: None,
|
||||
meta: CalendarMetadata::default(),
|
||||
id: "cal".to_string(),
|
||||
synctoken: 0,
|
||||
subscription_url: None,
|
||||
push_topic: "alskdj".to_string(),
|
||||
components: vec![],
|
||||
};
|
||||
|
||||
assert!(
|
||||
cal_store.insert_calendar(cal).await.is_err(),
|
||||
"This should fail due to the user not existing "
|
||||
);
|
||||
|
||||
let cal = Calendar {
|
||||
principal: "user".to_string(),
|
||||
timezone_id: None,
|
||||
deleted_at: None,
|
||||
meta: CalendarMetadata::default(),
|
||||
id: "cal".to_string(),
|
||||
synctoken: 0,
|
||||
subscription_url: None,
|
||||
push_topic: "alskdj".to_string(),
|
||||
components: vec![],
|
||||
};
|
||||
|
||||
cal_store.insert_calendar(cal.clone()).await.unwrap();
|
||||
|
||||
assert_eq!(
|
||||
cal_store.get_calendar("user", "cal", false).await.unwrap(),
|
||||
cal
|
||||
);
|
||||
|
||||
cal_store
|
||||
.delete_calendar("user", "cal", true)
|
||||
.await
|
||||
.unwrap();
|
||||
|
||||
let Err(err) = cal_store.get_calendar("user", "cal", false).await else {
|
||||
panic!()
|
||||
};
|
||||
assert!(err.is_not_found());
|
||||
|
||||
cal_store.get_calendar("user", "cal", true).await.unwrap();
|
||||
|
||||
cal_store.restore_calendar("user", "cal").await.unwrap();
|
||||
|
||||
cal_store
|
||||
.delete_calendar("user", "cal", false)
|
||||
.await
|
||||
.unwrap();
|
||||
|
||||
let Err(err) = cal_store.get_calendar("user", "cal", true).await else {
|
||||
panic!()
|
||||
};
|
||||
assert!(err.is_not_found());
|
||||
}
|
||||
}
|
||||
@@ -8,6 +8,9 @@ use tokio::sync::OnceCell;
|
||||
|
||||
static DB: OnceCell<SqlitePool> = OnceCell::const_new();
|
||||
|
||||
mod addressbook_store;
|
||||
mod calendar_store;
|
||||
|
||||
async fn get_test_db() -> SqlitePool {
|
||||
DB.get_or_init(async || {
|
||||
let db = SqlitePool::connect("sqlite::memory:").await.unwrap();
|
||||
|
||||
Reference in New Issue
Block a user