From 460f404ab686467472575d2f1aa3fc83a22d10cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20H=C3=B6rnquist?= Date: Tue, 5 Apr 2022 16:47:09 +0200 Subject: Add tests for add-and-save. --- tests/test/add-and-save.scm | 104 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 tests/test/add-and-save.scm diff --git a/tests/test/add-and-save.scm b/tests/test/add-and-save.scm new file mode 100644 index 00000000..19e6c007 --- /dev/null +++ b/tests/test/add-and-save.scm @@ -0,0 +1,104 @@ +(define-module (test add-and-save) + :use-module (srfi srfi-64) + :use-module (srfi srfi-88) + :use-module (hnh util) + :use-module (datetime) + ;; :use-module ((vcomponent) :select (prop)) + :use-module ((vcomponent base) :select (prop type children make-vcomponent)) + :use-module ((srfi srfi-1) :select (find)) + :use-module ((vcomponent formats vdir save-delete) :select (save-event)) + :use-module ((vcomponent formats xcal parse) :select (sxcal->vcomponent)) + :use-module ((vcomponent util instance methods) :select (add-calendars add-and-save-event))) + +(define timezone + '(vtimezone + (properties (tzid (text "Europe/Stockholm"))) + (components + (standard + (properties + (tzoffsetto (utc-offset "+0100")) + (dtstart (date-time "1996-10-27T01:00:00")) + (tzname (text "CET")) + (tzoffsetfrom (utc-offset "+0200")) + (rrule (recur (freq "YEARLY") + (interval "1") + ((byday "-1SU")) + ((bymonth 10)))))) + (daylight + (properties + (tzoffsetto (utc-offset "+0200")) + (dtstart (date-time "1981-03-29T01:00:00")) + (tzname (text "CEST")) + (tzoffsetfrom (utc-offset "+0000")) + (rrule (recur (freq "YEARLY") + (interval "1") + ((byday "-1SU")) + ((bymonth 3)))))))) ) + +(define ev + (sxcal->vcomponent + '(vevent + (properties + (uid (text "3da506ad-8d27-4810-94b3-6ab341baa1f2")) + (summary (text "Test Event #1")) + (dtstart + (parameters (tzid (text "Europe/Stockholm"))) + (date-time "2021-12-21T10:30:00")) + (dtstamp (date-time "2021-12-21T14:10:56Z")) + (dtend (parameters (tzid (text "Europe/Stockholm"))) + (date-time "2021-12-21T11:45:00")))))) + +(define rep-ev + (sxcal->vcomponent + '(vevent + (properties + (uid (text "4ebd6632-d192-4bf4-a33a-7a8388185914")) + (summary (text "Repeating Test Event #1")) + (rrule (recur (freq "DAILY"))) + (dtstart + (parameters (tzid (text "Europe/Stockholm"))) + (date-time "2021-12-21T10:30:00")) + (dtstamp (date-time "2021-12-21T14:10:56Z")) + (dtend (parameters (tzid (text "Europe/Stockholm"))) + (date-time "2021-12-21T11:45:00")))))) + +(define directory (tmpnam)) + +(define event-object ((@ (oop goops) make) + (@@ (vcomponent util instance methods) ))) + +(mkdir directory) +(format #t "Using ~a~%" directory) + +(define calendar (make-vcomponent 'VCALENDAR)) + +(set! (prop calendar '-X-HNH-SOURCETYPE) 'vdir + (prop calendar '-X-HNH-DIRECTORY) directory) + +(add-calendars event-object calendar) + +;; Try adding and saving a new regular event +(add-and-save-event event-object calendar ev) + +;; Try changing and saving an existing regular event +(set! (prop ev 'SUMMARY) "Changed summary") +(add-and-save-event event-object calendar ev) + +;; Try adding and saving a new repeating event +(add-and-save-event event-object calendar rep-ev) + +;; Try changing and saving an existing repeating event +;; TODO setting start time to later than end time leads to nonsense +;; errors when trying to generate the recurrence set. +(set! (prop rep-ev 'DTSTART) (datetime+ (prop rep-ev 'DTSTART) + (datetime time: (time hour: 1)))) +(add-and-save-event event-object calendar rep-ev) + +;; Try adding and saving a new event with multiple instances +;; Try changing and saving an existing event with multiple instances + +;; (add-and-save-event event-object calendar event) + + +(test-equal "Correct amount of children" + 2 (length (children calendar))) -- cgit v1.2.3