diff options
| author | Craig Jennings <c@cjennings.net> | 2026-02-05 15:13:57 -0600 |
|---|---|---|
| committer | Craig Jennings <c@cjennings.net> | 2026-02-05 15:13:57 -0600 |
| commit | b7cb1c51e5663419344d8b55766635801f3ee4c8 (patch) | |
| tree | a13d903c1d7d82d8b49fe7edbd5f9b7652592c23 /tests/test-calendar-sync--strip-html.el | |
| parent | 12f36cb887c3e84741bc2f3d6afd9e71c6ffddd7 (diff) | |
feat(calendar-sync): add event details — attendees, organizer, status, URL
Add ICS text unescaping (RFC 5545), HTML stripping, and new fields
(attendees/status, organizer, meeting URL) to calendar-sync.el.
event-to-org now outputs org property drawers. 88 new tests across
10 test files, 146/146 pass. Also fix pre-existing test require
order and keymap guard issues.
Diffstat (limited to 'tests/test-calendar-sync--strip-html.el')
| -rw-r--r-- | tests/test-calendar-sync--strip-html.el | 99 |
1 files changed, 99 insertions, 0 deletions
diff --git a/tests/test-calendar-sync--strip-html.el b/tests/test-calendar-sync--strip-html.el new file mode 100644 index 00000000..fda2bbc5 --- /dev/null +++ b/tests/test-calendar-sync--strip-html.el @@ -0,0 +1,99 @@ +;;; test-calendar-sync--strip-html.el --- Tests for HTML stripping -*- lexical-binding: t; -*- + +;;; Commentary: +;; Unit tests for calendar-sync--strip-html function. +;; Converts <br>/<br/> to newline, strips all other tags, decodes HTML entities. +;; Covers Normal, Boundary, and Error cases. + +;;; Code: + +(require 'ert) +(require 'testutil-calendar-sync) +(require 'calendar-sync) + +;;; Normal Cases + +(ert-deftest test-calendar-sync--strip-html-normal-br-to-newline () + "Test <br> converted to newline." + (should (string= "line1\nline2" + (calendar-sync--strip-html "line1<br>line2")))) + +(ert-deftest test-calendar-sync--strip-html-normal-br-self-closing () + "Test <br/> converted to newline." + (should (string= "line1\nline2" + (calendar-sync--strip-html "line1<br/>line2")))) + +(ert-deftest test-calendar-sync--strip-html-normal-br-space-self-closing () + "Test <br /> converted to newline." + (should (string= "line1\nline2" + (calendar-sync--strip-html "line1<br />line2")))) + +(ert-deftest test-calendar-sync--strip-html-normal-strip-p-tags () + "Test <p> and </p> tags are stripped." + (should (string= "paragraph text" + (calendar-sync--strip-html "<p>paragraph text</p>")))) + +(ert-deftest test-calendar-sync--strip-html-normal-strip-bold () + "Test <b> and </b> tags are stripped." + (should (string= "bold text" + (calendar-sync--strip-html "<b>bold text</b>")))) + +(ert-deftest test-calendar-sync--strip-html-normal-combined-tags () + "Test mixed tags are handled." + (should (string= "Hello\nWorld" + (calendar-sync--strip-html "<p>Hello</p><br><b>World</b>")))) + +(ert-deftest test-calendar-sync--strip-html-normal-entity-amp () + "Test & decoded to &." + (should (string= "A & B" + (calendar-sync--strip-html "A & B")))) + +(ert-deftest test-calendar-sync--strip-html-normal-entity-lt () + "Test < decoded to <." + (should (string= "a < b" + (calendar-sync--strip-html "a < b")))) + +(ert-deftest test-calendar-sync--strip-html-normal-entity-gt () + "Test > decoded to >." + (should (string= "a > b" + (calendar-sync--strip-html "a > b")))) + +(ert-deftest test-calendar-sync--strip-html-normal-entity-quot () + "Test " decoded to double quote." + (should (string= "say \"hello\"" + (calendar-sync--strip-html "say "hello"")))) + +;;; Boundary Cases + +(ert-deftest test-calendar-sync--strip-html-boundary-empty-string () + "Test empty string returns empty string." + (should (string= "" (calendar-sync--strip-html "")))) + +(ert-deftest test-calendar-sync--strip-html-boundary-no-html () + "Test plain text passes through unchanged." + (should (string= "just plain text" + (calendar-sync--strip-html "just plain text")))) + +(ert-deftest test-calendar-sync--strip-html-boundary-only-tags () + "Test string of only tags returns empty." + (should (string= "" + (calendar-sync--strip-html "<p><b></b></p>")))) + +(ert-deftest test-calendar-sync--strip-html-boundary-multiple-br () + "Test multiple consecutive <br> collapse." + (should (string-match-p "^line1\n+line2$" + (calendar-sync--strip-html "line1<br><br><br>line2")))) + +(ert-deftest test-calendar-sync--strip-html-boundary-nested-tags () + "Test nested tags are stripped correctly." + (should (string= "nested text" + (calendar-sync--strip-html "<div><p><b>nested text</b></p></div>")))) + +;;; Error Cases + +(ert-deftest test-calendar-sync--strip-html-error-nil-input () + "Test nil input returns nil." + (should (null (calendar-sync--strip-html nil)))) + +(provide 'test-calendar-sync--strip-html) +;;; test-calendar-sync--strip-html.el ends here |
