;;; ss-capture-tests.el --- Tests for ss-capture -*- lexical-binding: t; -*- ;;; Commentary: ;; Focused ERT coverage for journal capture structure helpers. ;;; Code: (add-to-list 'load-path (expand-file-name "../lisp" (file-name-directory load-file-name))) (require 'cl-lib) (require 'ert) (require 'ss-capture) (require 'ss-org) (ert-deftest ss-journal-ensure-day-sections-adds-all-standard-sections () (with-temp-buffer (org-mode) (insert "#+title: Journal\n" "#+startup: overview\n\n" "* 2026\n" "** 2026-04-08 Wednesday\n" "*** Tasks\n" "**** TODO Existing\n\n" "** 2026-04-09 Thursday\n") (goto-char (point-min)) (re-search-forward "^\\*\\* 2026-04-09 Thursday$") (goto-char (match-beginning 0)) (ss-journal-ensure-day-sections) (should (string-match-p (regexp-quote "** 2026-04-09 Thursday\n*** Tasks\n*** Notes\n*** Meetings\n") (buffer-string))))) (ert-deftest ss-open-journal-narrows-to-today-when-entry-exists () (let* ((file (make-temp-file "ss-journal" nil ".org")) (ss-journal-file file)) (unwind-protect (progn (with-temp-file file (insert "#+title: Journal\n" "* 2026\n" "** 2026-04-09 Thursday\n" "*** Notes\n")) (let ((org-overriding-default-time (encode-time 0 0 12 9 4 2026))) (ss-open-journal) (should (buffer-narrowed-p)) (should (equal (org-get-outline-path t) '("2026" "2026-04-09 Thursday"))) (should (looking-at-p "^\\*\\* 2026-04-09 Thursday$")))) (when (buffer-live-p (current-buffer)) (kill-buffer (current-buffer))) (when (file-exists-p file) (delete-file file))))) (ert-deftest ss-open-journal-reveals-folded-today-subtree () (let* ((file (make-temp-file "ss-journal" nil ".org")) (ss-journal-file file)) (unwind-protect (progn (with-temp-file file (insert "#+title: Journal\n" "* 2026\n" "** 2026-04-09 Thursday\n" "*** Notes\n" "Body\n")) (with-current-buffer (find-file-noselect file) (org-overview)) (let ((org-overriding-default-time (encode-time 0 0 12 9 4 2026))) (ss-open-journal) (should (buffer-narrowed-p)) (should-not (save-excursion (goto-char (point-min)) (re-search-forward "^\\*\\*\\* Notes$" nil t) (invisible-p (point)))) (should-not (save-excursion (goto-char (point-min)) (re-search-forward "^Body$" nil t) (invisible-p (point)))))) (when (buffer-live-p (current-buffer)) (kill-buffer (current-buffer))) (when (file-exists-p file) (delete-file file))))) (ert-deftest ss-open-journal-creates-missing-today-entry-with-standard-sections () (let* ((file (make-temp-file "ss-journal" nil ".org")) (ss-journal-file file)) (unwind-protect (progn (with-temp-file file (insert "#+title: Journal\n" "* 2026\n" "** 2026-04-08 Wednesday\n" "*** Notes\n")) (let ((org-overriding-default-time (encode-time 0 0 12 9 4 2026))) (ss-open-journal) (should (buffer-narrowed-p)) (should (equal (org-get-outline-path t) '("2026" "2026-04-09 Thursday"))) (should (string-match-p (regexp-quote "** 2026-04-09 Thursday\n*** Tasks\n*** Notes\n*** Meetings\n") (buffer-string))))) (when (buffer-live-p (current-buffer)) (kill-buffer (current-buffer))) (when (file-exists-p file) (delete-file file))))) ;;; ss-capture-tests.el ends here