From edfb11b1a161d39a3f88279bc7b395aa8e6f68b7 Mon Sep 17 00:00:00 2001 From: Craig Jennings Date: Sun, 15 Feb 2026 21:14:18 -0600 Subject: test: add 38 tests for org-agenda-config and org-refile-config - testutil-org.el: shared dynamic timestamp helpers (days-ago, days-ahead, today) - org-agenda-config: 31 tests across 2 files (skip functions + add-files) - org-refile-config: 7 tests for ensure-org-mode validation - Remove prog-shell from checklist (fully covered by existing 9 tests) --- tests/test-org-refile-config-ensure-org-mode.el | 123 ++++++++++++++++++++++++ 1 file changed, 123 insertions(+) create mode 100644 tests/test-org-refile-config-ensure-org-mode.el (limited to 'tests/test-org-refile-config-ensure-org-mode.el') diff --git a/tests/test-org-refile-config-ensure-org-mode.el b/tests/test-org-refile-config-ensure-org-mode.el new file mode 100644 index 00000000..c86ad269 --- /dev/null +++ b/tests/test-org-refile-config-ensure-org-mode.el @@ -0,0 +1,123 @@ +;;; test-org-refile-config-ensure-org-mode.el --- Tests for cj/org-refile-ensure-org-mode -*- lexical-binding: t; -*- + +;;; Commentary: +;; Tests for cj/org-refile-ensure-org-mode from org-refile-config.el. +;; Uses testutil-general.el for filesystem setup/teardown. + +;;; Code: + +(require 'ert) +(require 'org) + +(add-to-list 'load-path (expand-file-name "tests" user-emacs-directory)) +(require 'testutil-general) + +(add-to-list 'load-path (expand-file-name "modules" user-emacs-directory)) +(require 'org-refile-config) + +;;; Normal Cases + +(ert-deftest test-org-refile-ensure-org-mode-normal-org-file-returns-buffer () + "A .org file already in org-mode should return its buffer." + (unwind-protect + (progn + (cj/create-test-base-dir) + (let ((file (cj/create-directory-or-file-ensuring-parents + "refile-test/notes.org" "* Heading\n"))) + (let ((buf (find-file-noselect file))) + (unwind-protect + (progn + (with-current-buffer buf + (let ((org-mode-hook nil) (text-mode-hook nil)) + (org-mode))) + (let ((result (cj/org-refile-ensure-org-mode file))) + (should (bufferp result)) + (with-current-buffer result + (should (derived-mode-p 'org-mode))))) + (kill-buffer buf))))) + (cj/delete-test-base-dir))) + +(ert-deftest test-org-refile-ensure-org-mode-normal-switches-fundamental-to-org () + "A .org file in fundamental-mode should be switched to org-mode." + (unwind-protect + (progn + (cj/create-test-base-dir) + (let ((file (cj/create-directory-or-file-ensuring-parents + "refile-test/stuck.org" "* TODO Task\n"))) + (let ((buf (find-file-noselect file))) + (unwind-protect + (progn + (with-current-buffer buf + (fundamental-mode)) + (should (with-current-buffer buf + (eq major-mode 'fundamental-mode))) + (let ((org-mode-hook nil) (text-mode-hook nil)) + (cj/org-refile-ensure-org-mode file)) + (with-current-buffer buf + (should (derived-mode-p 'org-mode)))) + (kill-buffer buf))))) + (cj/delete-test-base-dir))) + +;;; Error Cases + +(ert-deftest test-org-refile-ensure-org-mode-error-non-org-extension () + "A non-.org file should signal an error." + (unwind-protect + (progn + (cj/create-test-base-dir) + (let ((file (cj/create-directory-or-file-ensuring-parents + "refile-test/notes.txt" "Some text\n"))) + (should-error (cj/org-refile-ensure-org-mode file) + :type 'error))) + (cj/delete-test-base-dir))) + +(ert-deftest test-org-refile-ensure-org-mode-error-markdown-extension () + "A .md file should signal an error." + (unwind-protect + (progn + (cj/create-test-base-dir) + (let ((file (cj/create-directory-or-file-ensuring-parents + "refile-test/notes.md" "# Heading\n"))) + (should-error (cj/org-refile-ensure-org-mode file) + :type 'error))) + (cj/delete-test-base-dir))) + +(ert-deftest test-org-refile-ensure-org-mode-error-no-extension () + "A file without an extension should signal an error." + (unwind-protect + (progn + (cj/create-test-base-dir) + (let ((file (cj/create-directory-or-file-ensuring-parents + "refile-test/notes" "content\n"))) + (should-error (cj/org-refile-ensure-org-mode file) + :type 'error))) + (cj/delete-test-base-dir))) + +;;; Boundary Cases + +(ert-deftest test-org-refile-ensure-org-mode-boundary-org-in-dirname () + "A file with .org in the directory name but not the extension should error." + (unwind-protect + (progn + (cj/create-test-base-dir) + (let ((file (cj/create-directory-or-file-ensuring-parents + "refile-test/my.org.files/todo.txt" "* TODO\n"))) + (should-error (cj/org-refile-ensure-org-mode file) + :type 'error))) + (cj/delete-test-base-dir))) + +(ert-deftest test-org-refile-ensure-org-mode-boundary-uppercase-org-extension () + "A .ORG file (uppercase) should be accepted (case-insensitive match)." + (unwind-protect + (progn + (cj/create-test-base-dir) + (let ((file (cj/create-directory-or-file-ensuring-parents + "refile-test/notes.ORG" "* Heading\n"))) + (let ((buf (cj/org-refile-ensure-org-mode file))) + (unwind-protect + (should (bufferp buf)) + (when (buffer-live-p buf) (kill-buffer buf)))))) + (cj/delete-test-base-dir))) + +(provide 'test-org-refile-config-ensure-org-mode) +;;; test-org-refile-config-ensure-org-mode.el ends here -- cgit v1.2.3