summaryrefslogtreecommitdiff
path: root/tests/test-calendar-sync--extract-cn.el
blob: 0cb8f80cc0f7e90e574440d3c28342bdd1c78605 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
;;; test-calendar-sync--extract-cn.el --- Tests for CN parameter extraction -*- lexical-binding: t; -*-

;;; Commentary:
;; Tests for calendar-sync--extract-cn.
;; Extracts and dequotes the CN= parameter from iCal property lines.

;;; Code:

(require 'ert)
(require 'testutil-calendar-sync)
(require 'calendar-sync)

;;; Normal Cases

(ert-deftest test-calendar-sync--extract-cn-normal-unquoted ()
  "Extracts unquoted CN value."
  (should (equal "Craig Jennings"
                 (calendar-sync--extract-cn
                  "ATTENDEE;CN=Craig Jennings;PARTSTAT=ACCEPTED:mailto:c@test.com"))))

(ert-deftest test-calendar-sync--extract-cn-normal-quoted ()
  "Strips surrounding quotes from CN value."
  (should (equal "Craig Jennings"
                 (calendar-sync--extract-cn
                  "ATTENDEE;CN=\"Craig Jennings\";PARTSTAT=ACCEPTED:mailto:c@test.com"))))

;;; Boundary Cases

(ert-deftest test-calendar-sync--extract-cn-boundary-cn-at-end ()
  "CN as last parameter before colon."
  (should (equal "Bob"
                 (calendar-sync--extract-cn "ORGANIZER;CN=Bob:mailto:bob@test.com"))))

(ert-deftest test-calendar-sync--extract-cn-boundary-special-chars ()
  "CN with accented characters."
  (should (equal "José García"
                 (calendar-sync--extract-cn
                  "ATTENDEE;CN=José García;PARTSTAT=ACCEPTED:mailto:j@test.com"))))

;;; Error Cases

(ert-deftest test-calendar-sync--extract-cn-error-no-cn ()
  "Line without CN= returns nil."
  (should (null (calendar-sync--extract-cn
                 "ATTENDEE;PARTSTAT=ACCEPTED:mailto:c@test.com"))))

(provide 'test-calendar-sync--extract-cn)
;;; test-calendar-sync--extract-cn.el ends here