mirror of
https://github.com/lennart-k/rustical.git
synced 2025-12-14 12:52:27 +00:00
193 lines
4.5 KiB
Rust
193 lines
4.5 KiB
Rust
use rstest::rstest;
|
|
use rustical_store::calendar::CalendarStore;
|
|
use rustical_store::sqlite_store::create_test_store;
|
|
use rustical_store::toml_store::TomlCalendarStore;
|
|
|
|
const TIMEZONE: &str = "BEGIN:VCALENDAR\r
|
|
BEGIN:VTIMEZONE\r
|
|
TZID:Europe/Berlin\r
|
|
LAST-MODIFIED:20230104T023643Z\r
|
|
TZURL:https://www.tzurl.org/zoneinfo/Europe/Berlin\r
|
|
X-LIC-LOCATION:Europe/Berlin\r
|
|
X-PROLEPTIC-TZNAME:LMT\r
|
|
BEGIN:STANDARD\r
|
|
TZNAME:CET\r
|
|
TZOFFSETFROM:+005328\r
|
|
TZOFFSETTO:+0100\r
|
|
DTSTART:18930401T000632\r
|
|
END:STANDARD\r
|
|
BEGIN:DAYLIGHT\r
|
|
TZNAME:CEST\r
|
|
TZOFFSETFROM:+0100\r
|
|
TZOFFSETTO:+0200\r
|
|
DTSTART:19160430T230000\r
|
|
RDATE:19400401T020000\r
|
|
RDATE:19430329T020000\r
|
|
RDATE:19460414T020000\r
|
|
RDATE:19470406T030000\r
|
|
RDATE:19480418T020000\r
|
|
RDATE:19490410T020000\r
|
|
RDATE:19800406T020000\r
|
|
END:DAYLIGHT\r
|
|
BEGIN:STANDARD\r
|
|
TZNAME:CET\r
|
|
TZOFFSETFROM:+0200\r
|
|
TZOFFSETTO:+0100\r
|
|
DTSTART:19161001T010000\r
|
|
RDATE:19421102T030000\r
|
|
RDATE:19431004T030000\r
|
|
RDATE:19441002T030000\r
|
|
RDATE:19451118T030000\r
|
|
RDATE:19461007T030000\r
|
|
END:STANDARD\r
|
|
BEGIN:DAYLIGHT\r
|
|
TZNAME:CEST\r
|
|
TZOFFSETFROM:+0100\r
|
|
TZOFFSETTO:+0200\r
|
|
DTSTART:19170416T020000\r
|
|
RRULE:FREQ=YEARLY;UNTIL=19180415T010000Z;BYMONTH=4;BYDAY=3MO\r
|
|
END:DAYLIGHT\r
|
|
BEGIN:STANDARD\r
|
|
TZNAME:CET\r
|
|
TZOFFSETFROM:+0200\r
|
|
TZOFFSETTO:+0100\r
|
|
DTSTART:19170917T030000\r
|
|
RRULE:FREQ=YEARLY;UNTIL=19180916T010000Z;BYMONTH=9;BYDAY=3MO\r
|
|
END:STANDARD\r
|
|
BEGIN:DAYLIGHT\r
|
|
TZNAME:CEST\r
|
|
TZOFFSETFROM:+0100\r
|
|
TZOFFSETTO:+0200\r
|
|
DTSTART:19440403T020000\r
|
|
RRULE:FREQ=YEARLY;UNTIL=19450402T010000Z;BYMONTH=4;BYDAY=1MO\r
|
|
END:DAYLIGHT\r
|
|
BEGIN:DAYLIGHT\r
|
|
TZNAME:CEMT\r
|
|
TZOFFSETFROM:+0200\r
|
|
TZOFFSETTO:+0300\r
|
|
DTSTART:19450524T010000\r
|
|
RDATE:19470511T020000\r
|
|
END:DAYLIGHT\r
|
|
BEGIN:DAYLIGHT\r
|
|
TZNAME:CEST\r
|
|
TZOFFSETFROM:+0300\r
|
|
TZOFFSETTO:+0200\r
|
|
DTSTART:19450924T030000\r
|
|
RDATE:19470629T030000\r
|
|
END:DAYLIGHT\r
|
|
BEGIN:STANDARD\r
|
|
TZNAME:CET\r
|
|
TZOFFSETFROM:+0100\r
|
|
TZOFFSETTO:+0100\r
|
|
DTSTART:19460101T000000\r
|
|
RDATE:19800101T000000\r
|
|
END:STANDARD\r
|
|
BEGIN:STANDARD\r
|
|
TZNAME:CET\r
|
|
TZOFFSETFROM:+0200\r
|
|
TZOFFSETTO:+0100\r
|
|
DTSTART:19471005T030000\r
|
|
RRULE:FREQ=YEARLY;UNTIL=19491002T010000Z;BYMONTH=10;BYDAY=1SU\r
|
|
END:STANDARD\r
|
|
BEGIN:STANDARD\r
|
|
TZNAME:CET\r
|
|
TZOFFSETFROM:+0200\r
|
|
TZOFFSETTO:+0100\r
|
|
DTSTART:19800928T030000\r
|
|
RRULE:FREQ=YEARLY;UNTIL=19950924T010000Z;BYMONTH=9;BYDAY=-1SU\r
|
|
END:STANDARD\r
|
|
BEGIN:DAYLIGHT\r
|
|
TZNAME:CEST\r
|
|
TZOFFSETFROM:+0100\r
|
|
TZOFFSETTO:+0200\r
|
|
DTSTART:19810329T020000\r
|
|
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r
|
|
END:DAYLIGHT\r
|
|
BEGIN:STANDARD\r
|
|
TZNAME:CET\r
|
|
TZOFFSETFROM:+0200\r
|
|
TZOFFSETTO:+0100\r
|
|
DTSTART:19961027T030000\r
|
|
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r
|
|
END:STANDARD\r
|
|
END:VTIMEZONE\r
|
|
END:VCALENDAR\r
|
|
";
|
|
|
|
const EVENT: &str = "BEGIN:VCALENDAR\r
|
|
CALSCALE:GREGORIAN\r
|
|
PRODID:-//Ximian//NONSGML Evolution Calendar//EN\r
|
|
VERSION:2.0\r
|
|
BEGIN:VTIMEZONE\r
|
|
TZID:Europe/Berlin\r
|
|
X-LIC-LOCATION:Europe/Berlin\r
|
|
BEGIN:DAYLIGHT\r
|
|
TZNAME:CEST\r
|
|
TZOFFSETFROM:+0100\r
|
|
TZOFFSETTO:+0200\r
|
|
DTSTART:19810329T020000\r
|
|
RRULE:FREQ=YEARLY;UNTIL=20370329T010000Z;BYDAY=-1SU;BYMONTH=3\r
|
|
END:DAYLIGHT\r
|
|
BEGIN:STANDARD\r
|
|
TZNAME:CET\r
|
|
TZOFFSETFROM:+0200\r
|
|
TZOFFSETTO:+0100\r
|
|
DTSTART:19961027T030000\r
|
|
RRULE:FREQ=YEARLY;UNTIL=20361026T010000Z;BYDAY=-1SU;BYMONTH=10\r
|
|
END:STANDARD\r
|
|
END:VTIMEZONE\r
|
|
BEGIN:VEVENT\r
|
|
UID:67d830c3e681950b6a12f7c287b316269a19fcf7\r
|
|
DTSTAMP:20230831T102923Z\r
|
|
DTSTART;TZID=Europe/Berlin:20230829T043000\r
|
|
DTEND;TZID=Europe/Berlin:20230829T045500\r
|
|
SEQUENCE:2\r
|
|
SUMMARY:asdjlk\r
|
|
TRANSP:OPAQUE\r
|
|
CLASS:PUBLIC\r
|
|
CREATED:20230831T103040Z\r
|
|
LAST-MODIFIED:20230831T103040Z\r
|
|
END:VEVENT\r
|
|
END:VCALENDAR\r
|
|
";
|
|
|
|
#[tokio::test]
|
|
async fn test_init_sqlite() {
|
|
let store = create_test_store().await.unwrap();
|
|
store.get_events("asd").await.unwrap();
|
|
}
|
|
|
|
#[rstest]
|
|
#[case::toml(async {TomlCalendarStore::test()})]
|
|
#[case::sqlite(async {create_test_store().await.unwrap() })]
|
|
#[tokio::test]
|
|
async fn test_create_event<CS: CalendarStore>(
|
|
#[future]
|
|
#[case]
|
|
store: CS,
|
|
) {
|
|
let mut store = store.await;
|
|
store
|
|
.insert_calendar(
|
|
"test".to_owned(),
|
|
rustical_store::calendar::Calendar {
|
|
id: "test".to_owned(),
|
|
name: Some("Test Calendar".to_owned()),
|
|
owner: "Test User".to_owned(),
|
|
timezone: Some(TIMEZONE.to_owned()),
|
|
..Default::default() // timezone: TIMEZONE.to_owned(),
|
|
},
|
|
)
|
|
.await
|
|
.unwrap();
|
|
|
|
store
|
|
.upsert_event("test".to_owned(), "asd".to_owned(), EVENT.to_owned())
|
|
.await
|
|
.unwrap();
|
|
|
|
let event = store.get_event("test", "asd").await.unwrap();
|
|
assert_eq!(event.get_ics(), EVENT);
|
|
assert_eq!(event.get_uid(), "asd");
|
|
}
|