aboutsummaryrefslogtreecommitdiff
path: root/tests/test-chime-process-notifications.el
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test-chime-process-notifications.el')
-rw-r--r--tests/test-chime-process-notifications.el57
1 files changed, 57 insertions, 0 deletions
diff --git a/tests/test-chime-process-notifications.el b/tests/test-chime-process-notifications.el
index eddec02..181f146 100644
--- a/tests/test-chime-process-notifications.el
+++ b/tests/test-chime-process-notifications.el
@@ -327,5 +327,62 @@ REFACTORED: Uses dynamic timestamps and with-test-time"
(should (>= notify-count 1))))))
(test-chime-process-notifications-teardown)))
+;;; Day-wide bundling
+
+(ert-deftest test-chime-process-notifications-day-wide-multiple-events-single-notify ()
+ "Multiple day-wide events should produce a single bundled notification,
+not one notification per event."
+ (test-chime-process-notifications-setup)
+ (unwind-protect
+ (let* ((now (test-time-today-at 8 0))
+ (notify-count 0)
+ (notify-messages '()))
+ (with-test-time now
+ (cl-letf (((symbol-function 'chime--notify)
+ (lambda (msg)
+ (setq notify-count (1+ notify-count))
+ (push msg notify-messages)))
+ ((symbol-function 'chime-current-time-is-day-wide-time)
+ (lambda () t))
+ ((symbol-function 'chime-day-wide-notifications)
+ (lambda (events)
+ (list (cons "Blake's birthday is today" 'medium)
+ (cons "Holiday: Memorial Day is today" 'medium)
+ (cons "Submit expense report is due or scheduled today" 'medium)))))
+ (chime--process-notifications '())
+ ;; Should fire exactly ONE notification for all day-wide events
+ (should (= 1 notify-count))
+ ;; The single notification body should contain all event messages
+ (let ((body (caar notify-messages)))
+ (should (string-match-p "Blake's birthday" body))
+ (should (string-match-p "Memorial Day" body))
+ (should (string-match-p "expense report" body))))))
+ (test-chime-process-notifications-teardown)))
+
+(ert-deftest test-chime-process-notifications-day-wide-single-event-no-bundling ()
+ "A single day-wide event should produce a normal notification, not bundled."
+ (test-chime-process-notifications-setup)
+ (unwind-protect
+ (let* ((now (test-time-today-at 8 0))
+ (notify-count 0)
+ (notify-messages '()))
+ (with-test-time now
+ (cl-letf (((symbol-function 'chime--notify)
+ (lambda (msg)
+ (setq notify-count (1+ notify-count))
+ (push msg notify-messages)))
+ ((symbol-function 'chime-current-time-is-day-wide-time)
+ (lambda () t))
+ ((symbol-function 'chime-day-wide-notifications)
+ (lambda (events)
+ (list (cons "Blake's birthday is today" 'medium)))))
+ (chime--process-notifications '())
+ ;; Single event: still one notification
+ (should (= 1 notify-count))
+ ;; Should be the plain message, not wrapped in a bundle
+ (let ((body (caar notify-messages)))
+ (should (string= "Blake's birthday is today" body))))))
+ (test-chime-process-notifications-teardown)))
+
(provide 'test-chime-process-notifications)
;;; test-chime-process-notifications.el ends here