diff options
| author | Craig Jennings <c@cjennings.net> | 2026-06-24 16:18:27 -0400 |
|---|---|---|
| committer | Craig Jennings <c@cjennings.net> | 2026-06-24 16:18:27 -0400 |
| commit | d47f4f90bb1c69697a855a662bb07be1e0ccdc33 (patch) | |
| tree | 777d0b786a530cb4190f8e062e0afda2506308d4 /tests/test-chime-overdue-todos.el | |
| parent | ab8cc4da57fce5d0a59f4db34fb550919a06ea79 (diff) | |
| download | chime-d47f4f90bb1c69697a855a662bb07be1e0ccdc33.tar.gz chime-d47f4f90bb1c69697a855a662bb07be1e0ccdc33.zip | |
Every test hand-wrote the same scaffolding: call a per-file setup, wrap the body in unwind-protect, call a per-file teardown. That's 419 unwind-protect blocks and 68 near-identical setup/teardown defuns, with no shared fixture because ERT has no native per-test setup.
I added a chime-deftest macro in test-bootstrap that creates the test base directory before the body and deletes it afterward, even on failure. I converted the 10 files whose fixture was exactly that base-dir create/delete and whose every test followed the standard shape, dropping their setup/teardown defuns. Files with custom fixtures (modeline state restore, validation reset) keep explicit setup/teardown, since the macro would silently drop their extra logic. I left the 4 tag-bearing integration files alone.
I also moved the near-universal testutil-general and testutil-time requires into test-bootstrap, so individual files no longer repeat them.
Behavior is unchanged: still 800 tests, full suite green. Converted bodies are copied verbatim, so the change only removes scaffolding, never an assertion.
Diffstat (limited to 'tests/test-chime-overdue-todos.el')
| -rw-r--r-- | tests/test-chime-overdue-todos.el | 377 |
1 files changed, 162 insertions, 215 deletions
diff --git a/tests/test-chime-overdue-todos.el b/tests/test-chime-overdue-todos.el index 84bc091..32e50c3 100644 --- a/tests/test-chime-overdue-todos.el +++ b/tests/test-chime-overdue-todos.el @@ -31,10 +31,6 @@ (require 'test-bootstrap (expand-file-name "test-bootstrap.el")) -;; Load test utilities -(require 'testutil-general (expand-file-name "testutil-general.el")) -(require 'testutil-time (expand-file-name "testutil-time.el")) - ;;; Test Helper Functions (defun test-overdue--create-event (title timestamp has-time) @@ -47,19 +43,9 @@ HAS-TIME determines if timestamp has time component." (times . ,times) (intervals . (10))))) -;;; Setup and Teardown - -(defun test-chime-overdue-setup () - "Setup function run before each test." - (chime-create-test-base-dir)) - -(defun test-chime-overdue-teardown () - "Teardown function run after each test." - (chime-delete-test-base-dir)) - ;;; Tests for chime--event-has-any-passed-time -(ert-deftest test-overdue-has-passed-time-yesterday-all-day () +(chime-deftest test-overdue-has-passed-time-yesterday-all-day () "Test that all-day event from yesterday is recognized as passed. TIME RELATIONSHIPS: @@ -70,20 +56,17 @@ EXPECTED BEHAVIOR: Should return t (yesterday is in the past) REFACTORED: Uses dynamic timestamps via testutil-time.el" - (test-chime-overdue-setup) - (unwind-protect - (let* ((now (test-time-now)) - (yesterday (test-time-yesterday-at 0 0)) - (yesterday-timestamp (test-timestamp-string yesterday t)) - (event (test-overdue--create-event - "Yesterday Event" - yesterday-timestamp - nil))) ; all-day event - (with-test-time now - (should (chime--event-has-any-passed-time event)))) - (test-chime-overdue-teardown))) - -(ert-deftest test-overdue-has-passed-time-today-all-day () + (let* ((now (test-time-now)) + (yesterday (test-time-yesterday-at 0 0)) + (yesterday-timestamp (test-timestamp-string yesterday t)) + (event (test-overdue--create-event + "Yesterday Event" + yesterday-timestamp + nil))) ; all-day event + (with-test-time now + (should (chime--event-has-any-passed-time event))))) + +(chime-deftest test-overdue-has-passed-time-today-all-day () "Test that all-day event from today is recognized as passed. TIME RELATIONSHIPS: @@ -111,19 +94,16 @@ REFACTORING NOTES: Simple case - just needs TODAY timestamp and TODAY current-time. REFACTORED: Uses dynamic timestamps via testutil-time.el" - (test-chime-overdue-setup) - (unwind-protect - (let* ((now (test-time-now)) - (today-timestamp (test-timestamp-string now t)) - (event (test-overdue--create-event - "Today Event" - today-timestamp - nil))) ; all-day event - (with-test-time now - (should (chime--event-has-any-passed-time event)))) - (test-chime-overdue-teardown))) - -(ert-deftest test-overdue-has-passed-time-tomorrow-all-day () + (let* ((now (test-time-now)) + (today-timestamp (test-timestamp-string now t)) + (event (test-overdue--create-event + "Today Event" + today-timestamp + nil))) ; all-day event + (with-test-time now + (should (chime--event-has-any-passed-time event))))) + +(chime-deftest test-overdue-has-passed-time-tomorrow-all-day () "Test that all-day event from tomorrow is NOT recognized as passed. TIME RELATIONSHIPS: @@ -134,20 +114,17 @@ EXPECTED BEHAVIOR: Should return nil (tomorrow is in the future) REFACTORED: Uses dynamic timestamps via testutil-time.el" - (test-chime-overdue-setup) - (unwind-protect - (let* ((now (test-time-now)) - (tomorrow (test-time-tomorrow-at 0 0)) - (tomorrow-timestamp (test-timestamp-string tomorrow t)) - (event (test-overdue--create-event - "Tomorrow Event" - tomorrow-timestamp - nil))) ; all-day event - (with-test-time now - (should-not (chime--event-has-any-passed-time event)))) - (test-chime-overdue-teardown))) - -(ert-deftest test-overdue-has-passed-time-timed-event-past () + (let* ((now (test-time-now)) + (tomorrow (test-time-tomorrow-at 0 0)) + (tomorrow-timestamp (test-timestamp-string tomorrow t)) + (event (test-overdue--create-event + "Tomorrow Event" + tomorrow-timestamp + nil))) ; all-day event + (with-test-time now + (should-not (chime--event-has-any-passed-time event))))) + +(chime-deftest test-overdue-has-passed-time-timed-event-past () "Test that timed event in the past is recognized as passed. TIME RELATIONSHIPS: @@ -158,20 +135,17 @@ EXPECTED BEHAVIOR: Should return t (event time has passed) REFACTORED: Uses dynamic timestamps via testutil-time.el" - (test-chime-overdue-setup) - (unwind-protect - (let* ((now (test-time-today-at 14 0)) - (past-event (test-time-today-at 9 0)) - (past-timestamp (test-timestamp-string past-event)) - (event (test-overdue--create-event - "Past Meeting" - past-timestamp - t))) ; timed event - (with-test-time now - (should (chime--event-has-any-passed-time event)))) - (test-chime-overdue-teardown))) - -(ert-deftest test-overdue-has-passed-time-timed-event-future () + (let* ((now (test-time-today-at 14 0)) + (past-event (test-time-today-at 9 0)) + (past-timestamp (test-timestamp-string past-event)) + (event (test-overdue--create-event + "Past Meeting" + past-timestamp + t))) ; timed event + (with-test-time now + (should (chime--event-has-any-passed-time event))))) + +(chime-deftest test-overdue-has-passed-time-timed-event-future () "Test that timed event in the future is NOT recognized as passed. TIME RELATIONSHIPS: @@ -182,22 +156,19 @@ EXPECTED BEHAVIOR: Should return nil (event time is in future) REFACTORED: Uses dynamic timestamps via testutil-time.el" - (test-chime-overdue-setup) - (unwind-protect - (let* ((now (test-time-today-at 14 0)) - (future-event (test-time-today-at 16 0)) - (future-timestamp (test-timestamp-string future-event)) - (event (test-overdue--create-event - "Future Meeting" - future-timestamp - t))) ; timed event - (with-test-time now - (should-not (chime--event-has-any-passed-time event)))) - (test-chime-overdue-teardown))) + (let* ((now (test-time-today-at 14 0)) + (future-event (test-time-today-at 16 0)) + (future-timestamp (test-timestamp-string future-event)) + (event (test-overdue--create-event + "Future Meeting" + future-timestamp + t))) ; timed event + (with-test-time now + (should-not (chime--event-has-any-passed-time event))))) ;;; Tests for chime--display-as-day-wide-event with overdue setting -(ert-deftest test-overdue-display-yesterday-all-day-with-overdue-enabled () +(chime-deftest test-overdue-display-yesterday-all-day-with-overdue-enabled () "Test that yesterday's all-day event is displayed when overdue is enabled. TIME RELATIONSHIPS: @@ -209,133 +180,115 @@ EXPECTED BEHAVIOR: Should display (overdue enabled shows past events) REFACTORED: Uses dynamic timestamps via testutil-time.el" - (test-chime-overdue-setup) - (unwind-protect - (let* ((now (test-time-now)) - (yesterday (test-time-yesterday-at 0 0)) - (yesterday-timestamp (test-timestamp-string yesterday t)) - (chime-show-any-overdue-with-day-wide-alerts t) - (chime-day-wide-advance-notice nil) - (event (test-overdue--create-event - "Yesterday Birthday" - yesterday-timestamp - nil))) - (with-test-time now - (should (chime--display-as-day-wide-event event)))) - (test-chime-overdue-teardown))) - -(ert-deftest test-overdue-display-yesterday-all-day-with-overdue-disabled () + (let* ((now (test-time-now)) + (yesterday (test-time-yesterday-at 0 0)) + (yesterday-timestamp (test-timestamp-string yesterday t)) + (chime-show-any-overdue-with-day-wide-alerts t) + (chime-day-wide-advance-notice nil) + (event (test-overdue--create-event + "Yesterday Birthday" + yesterday-timestamp + nil))) + (with-test-time now + (should (chime--display-as-day-wide-event event))))) + +(chime-deftest test-overdue-display-yesterday-all-day-with-overdue-disabled () "Test that yesterday's all-day event is NOT displayed when overdue is disabled. This prevents showing old birthdays/holidays from the past. REFACTORED: Uses dynamic timestamps via testutil-time.el" - (test-chime-overdue-setup) - (unwind-protect - (let* ((now (test-time-now)) - (yesterday (test-time-yesterday-at 0 0)) - (yesterday-timestamp (test-timestamp-string yesterday t)) - (chime-show-any-overdue-with-day-wide-alerts nil) - (chime-day-wide-advance-notice nil) - (event (test-overdue--create-event - "Yesterday Birthday" - yesterday-timestamp - nil))) - (with-test-time now - (should-not (chime--display-as-day-wide-event event)))) - (test-chime-overdue-teardown))) - -(ert-deftest test-overdue-display-yesterday-timed-with-overdue-enabled () + (let* ((now (test-time-now)) + (yesterday (test-time-yesterday-at 0 0)) + (yesterday-timestamp (test-timestamp-string yesterday t)) + (chime-show-any-overdue-with-day-wide-alerts nil) + (chime-day-wide-advance-notice nil) + (event (test-overdue--create-event + "Yesterday Birthday" + yesterday-timestamp + nil))) + (with-test-time now + (should-not (chime--display-as-day-wide-event event))))) + +(chime-deftest test-overdue-display-yesterday-timed-with-overdue-enabled () "Test that yesterday's timed event is displayed when overdue is enabled. TIME: TODAY 10am, Event: YESTERDAY 2pm, overdue=t EXPECTED: Display (show past timed events when enabled) REFACTORED: Uses dynamic timestamps via testutil-time.el" - (test-chime-overdue-setup) - (unwind-protect - (let* ((now (test-time-now)) - (yesterday (test-time-yesterday-at 14 0)) - (yesterday-timestamp (test-timestamp-string yesterday)) - (chime-show-any-overdue-with-day-wide-alerts t) - (chime-day-wide-advance-notice nil) - (event (test-overdue--create-event - "Yesterday Meeting" - yesterday-timestamp - t))) - (with-test-time now - (should (chime--display-as-day-wide-event event)))) - (test-chime-overdue-teardown))) - -(ert-deftest test-overdue-display-yesterday-timed-with-overdue-disabled () + (let* ((now (test-time-now)) + (yesterday (test-time-yesterday-at 14 0)) + (yesterday-timestamp (test-timestamp-string yesterday)) + (chime-show-any-overdue-with-day-wide-alerts t) + (chime-day-wide-advance-notice nil) + (event (test-overdue--create-event + "Yesterday Meeting" + yesterday-timestamp + t))) + (with-test-time now + (should (chime--display-as-day-wide-event event))))) + +(chime-deftest test-overdue-display-yesterday-timed-with-overdue-disabled () "Test that yesterday's timed event is NOT displayed when overdue is disabled. TIME: TODAY 10am, Event: YESTERDAY 2pm, overdue=nil EXPECTED: Hide (don't show past timed events when disabled) REFACTORED: Uses dynamic timestamps via testutil-time.el" - (test-chime-overdue-setup) - (unwind-protect - (let* ((now (test-time-now)) - (yesterday (test-time-yesterday-at 14 0)) - (yesterday-timestamp (test-timestamp-string yesterday)) - (chime-show-any-overdue-with-day-wide-alerts nil) - (chime-day-wide-advance-notice nil) - (event (test-overdue--create-event - "Yesterday Meeting" - yesterday-timestamp - t))) - (with-test-time now - (should-not (chime--display-as-day-wide-event event)))) - (test-chime-overdue-teardown))) - -(ert-deftest test-overdue-display-today-all-day-always-shown () + (let* ((now (test-time-now)) + (yesterday (test-time-yesterday-at 14 0)) + (yesterday-timestamp (test-timestamp-string yesterday)) + (chime-show-any-overdue-with-day-wide-alerts nil) + (chime-day-wide-advance-notice nil) + (event (test-overdue--create-event + "Yesterday Meeting" + yesterday-timestamp + t))) + (with-test-time now + (should-not (chime--display-as-day-wide-event event))))) + +(chime-deftest test-overdue-display-today-all-day-always-shown () "Test that today's all-day event is always displayed regardless of overdue setting. TIME: TODAY 10am, Event: TODAY (all-day), both overdue=t and =nil EXPECTED: Always display (today's events shown regardless of setting) REFACTORED: Uses dynamic timestamps via testutil-time.el" - (test-chime-overdue-setup) - (unwind-protect - (let* ((now (test-time-now)) - (today-timestamp (test-timestamp-string now t)) - (chime-day-wide-advance-notice nil) - (event (test-overdue--create-event - "Today Birthday" - today-timestamp - nil))) - (with-test-time now - ;; Should show with overdue enabled - (let ((chime-show-any-overdue-with-day-wide-alerts t)) - (should (chime--display-as-day-wide-event event))) - ;; Should also show with overdue disabled (it's today, not overdue) - (let ((chime-show-any-overdue-with-day-wide-alerts nil)) - (should (chime--display-as-day-wide-event event))))) - (test-chime-overdue-teardown))) - -(ert-deftest test-overdue-display-week-old-all-day-with-overdue-enabled () + (let* ((now (test-time-now)) + (today-timestamp (test-timestamp-string now t)) + (chime-day-wide-advance-notice nil) + (event (test-overdue--create-event + "Today Birthday" + today-timestamp + nil))) + (with-test-time now + ;; Should show with overdue enabled + (let ((chime-show-any-overdue-with-day-wide-alerts t)) + (should (chime--display-as-day-wide-event event))) + ;; Should also show with overdue disabled (it's today, not overdue) + (let ((chime-show-any-overdue-with-day-wide-alerts nil)) + (should (chime--display-as-day-wide-event event)))))) + +(chime-deftest test-overdue-display-week-old-all-day-with-overdue-enabled () "Test that week-old all-day event is displayed when overdue is enabled. TIME: TODAY (Oct 28), Event: 7 DAYS AGO (Oct 21), overdue=t EXPECTED: Display (show old events when enabled) REFACTORED: Uses dynamic timestamps via testutil-time.el" - (test-chime-overdue-setup) - (unwind-protect - (let* ((now (test-time-now)) - (week-ago (test-time-days-ago 7)) - (week-ago-timestamp (test-timestamp-string week-ago t)) - (chime-show-any-overdue-with-day-wide-alerts t) - (chime-day-wide-advance-notice nil) - (event (test-overdue--create-event - "Week Old Event" - week-ago-timestamp - nil))) - (with-test-time now - (should (chime--display-as-day-wide-event event)))) - (test-chime-overdue-teardown))) - -(ert-deftest test-overdue-display-week-old-all-day-with-overdue-disabled () + (let* ((now (test-time-now)) + (week-ago (test-time-days-ago 7)) + (week-ago-timestamp (test-timestamp-string week-ago t)) + (chime-show-any-overdue-with-day-wide-alerts t) + (chime-day-wide-advance-notice nil) + (event (test-overdue--create-event + "Week Old Event" + week-ago-timestamp + nil))) + (with-test-time now + (should (chime--display-as-day-wide-event event))))) + +(chime-deftest test-overdue-display-week-old-all-day-with-overdue-disabled () "Test that week-old all-day event is NOT displayed when overdue is disabled. This prevents showing old birthdays/holidays from past weeks. @@ -343,48 +296,42 @@ TIME: TODAY (Oct 28), Event: 7 DAYS AGO (Oct 21), overdue=nil EXPECTED: Hide (prevent old birthday spam) REFACTORED: Uses dynamic timestamps via testutil-time.el" - (test-chime-overdue-setup) - (unwind-protect - (let* ((now (test-time-now)) - (week-ago (test-time-days-ago 7)) - (week-ago-timestamp (test-timestamp-string week-ago t)) - (chime-show-any-overdue-with-day-wide-alerts nil) - (chime-day-wide-advance-notice nil) - (event (test-overdue--create-event - "Week Old Event" - week-ago-timestamp - nil))) - (with-test-time now - (should-not (chime--display-as-day-wide-event event)))) - (test-chime-overdue-teardown))) + (let* ((now (test-time-now)) + (week-ago (test-time-days-ago 7)) + (week-ago-timestamp (test-timestamp-string week-ago t)) + (chime-show-any-overdue-with-day-wide-alerts nil) + (chime-day-wide-advance-notice nil) + (event (test-overdue--create-event + "Week Old Event" + week-ago-timestamp + nil))) + (with-test-time now + (should-not (chime--display-as-day-wide-event event))))) ;;; Tests verifying overdue doesn't affect future events -(ert-deftest test-overdue-future-event-not-affected-by-overdue-setting () +(chime-deftest test-overdue-future-event-not-affected-by-overdue-setting () "Test that future events are not affected by overdue setting. TIME: TODAY (Oct 28), Event: 2 DAYS FROM NOW (Oct 30), both overdue settings EXPECTED: Never display (future events not shown without advance notice) REFACTORED: Uses dynamic timestamps via testutil-time.el" - (test-chime-overdue-setup) - (unwind-protect - (let* ((now (test-time-now)) - (future (test-time-days-from-now 2)) - (future-timestamp (test-timestamp-string future t)) - (chime-day-wide-advance-notice nil) - (event (test-overdue--create-event - "Future Event" - future-timestamp - nil))) - (with-test-time now - ;; Should NOT show with overdue enabled (it's future, not today) - (let ((chime-show-any-overdue-with-day-wide-alerts t)) - (should-not (chime--display-as-day-wide-event event))) - ;; Should NOT show with overdue disabled (it's future, not today) - (let ((chime-show-any-overdue-with-day-wide-alerts nil)) - (should-not (chime--display-as-day-wide-event event))))) - (test-chime-overdue-teardown))) + (let* ((now (test-time-now)) + (future (test-time-days-from-now 2)) + (future-timestamp (test-timestamp-string future t)) + (chime-day-wide-advance-notice nil) + (event (test-overdue--create-event + "Future Event" + future-timestamp + nil))) + (with-test-time now + ;; Should NOT show with overdue enabled (it's future, not today) + (let ((chime-show-any-overdue-with-day-wide-alerts t)) + (should-not (chime--display-as-day-wide-event event))) + ;; Should NOT show with overdue disabled (it's future, not today) + (let ((chime-show-any-overdue-with-day-wide-alerts nil)) + (should-not (chime--display-as-day-wide-event event)))))) (provide 'test-chime-overdue-todos) ;;; test-chime-overdue-todos.el ends here |
