summaryrefslogtreecommitdiff
path: root/tests/test-calendar-sync--extract-email.el
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2026-04-05 07:04:37 -0500
committerCraig Jennings <c@cjennings.net>2026-04-05 07:04:37 -0500
commit4fa136a0f8bfde7852655a9fce2c44422bd32b3a (patch)
tree5e5029e640cc003c58a022471a9c631fd628d2bf /tests/test-calendar-sync--extract-email.el
parent10e2929d5be68ec1fda8b5b4ed08511eac02e7b3 (diff)
test(calendar-sync): add 32 tests for recurrence exceptions, helpers, unfolding
Cover occurrence-matches-exception-p (6), apply-single-exception (6), exdate-matches-p (6), extract-cn (5), extract-email (4), unfold-continuation (5).
Diffstat (limited to 'tests/test-calendar-sync--extract-email.el')
-rw-r--r--tests/test-calendar-sync--extract-email.el42
1 files changed, 42 insertions, 0 deletions
diff --git a/tests/test-calendar-sync--extract-email.el b/tests/test-calendar-sync--extract-email.el
new file mode 100644
index 00000000..75cc9e58
--- /dev/null
+++ b/tests/test-calendar-sync--extract-email.el
@@ -0,0 +1,42 @@
+;;; test-calendar-sync--extract-email.el --- Tests for email extraction -*- lexical-binding: t; -*-
+
+;;; Commentary:
+;; Tests for calendar-sync--extract-email.
+;; Extracts email address from mailto: values in iCal property lines.
+
+;;; Code:
+
+(require 'ert)
+(require 'testutil-calendar-sync)
+(require 'calendar-sync)
+
+;;; Normal Cases
+
+(ert-deftest test-calendar-sync--extract-email-normal-standard ()
+ "Extracts email from standard mailto: value."
+ (should (equal "craig@test.com"
+ (calendar-sync--extract-email
+ "ATTENDEE;CN=Craig:mailto:craig@test.com"))))
+
+(ert-deftest test-calendar-sync--extract-email-normal-organizer ()
+ "Works on ORGANIZER lines too."
+ (should (equal "boss@corp.com"
+ (calendar-sync--extract-email
+ "ORGANIZER;CN=Boss:mailto:boss@corp.com"))))
+
+;;; Boundary Cases
+
+(ert-deftest test-calendar-sync--extract-email-boundary-plus-addressing ()
+ "Handles plus-addressed emails."
+ (should (equal "user+tag@test.com"
+ (calendar-sync--extract-email
+ "ATTENDEE:mailto:user+tag@test.com"))))
+
+;;; Error Cases
+
+(ert-deftest test-calendar-sync--extract-email-error-no-mailto ()
+ "Line without mailto: returns nil."
+ (should (null (calendar-sync--extract-email "ATTENDEE;CN=Craig:urn:invalid"))))
+
+(provide 'test-calendar-sync--extract-email)
+;;; test-calendar-sync--extract-email.el ends here