blob: 236c87c871a715e4f2e80d5e70cbf71149c37aa3 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
;;; test-org-capture-config--find-or-create-top-heading.el --- Tests for the shared find-or-create helper -*- lexical-binding: t; -*-
;;; Commentary:
;; cj/--org-find-or-create-top-heading is the search-or-append positioning block
;; extracted from cj/org-capture--goto-file-headline, cj/--org-capture-goto-open-work,
;; and cj/--org-capture-goto-exact-headline. The three call sites stay covered by
;; test-org-capture-config-project-target.el (open-work, exact-headline) and the
;; target-cache test; these cover the generic helper directly with a plain regexp
;; (so the test doesn't depend on org's complex-heading format).
;;; Code:
(require 'ert)
(add-to-list 'load-path (expand-file-name "modules" user-emacs-directory))
(require 'org-capture-config)
(ert-deftest test-org-find-or-create-top-heading-finds-existing ()
"Normal: an existing heading is found; point lands at its line start and the
buffer is unchanged."
(with-temp-buffer
(insert "* Alpha\nbody\n* Target\nmore\n")
(cj/--org-find-or-create-top-heading "^\\* Target$" "* Target")
(should (looking-at-p "\\* Target$"))
(should (equal (buffer-string) "* Alpha\nbody\n* Target\nmore\n"))))
(ert-deftest test-org-find-or-create-top-heading-creates-when-absent ()
"Boundary: with no match, the heading line is appended (a separating newline
added because the buffer doesn't end in one) and point lands on it."
(with-temp-buffer
(insert "some text") ; no trailing newline
(cj/--org-find-or-create-top-heading "^\\* Missing$" "* Missing")
(should (equal (buffer-string) "some text\n* Missing\n"))
(should (looking-at-p "\\* Missing$"))))
(ert-deftest test-org-find-or-create-top-heading-empty-buffer ()
"Boundary: in an empty buffer the heading is inserted at the top, no extra
leading newline."
(with-temp-buffer
(cj/--org-find-or-create-top-heading "^\\* X$" "* X")
(should (equal (buffer-string) "* X\n"))
(should (looking-at-p "\\* X$"))))
(provide 'test-org-capture-config--find-or-create-top-heading)
;;; test-org-capture-config--find-or-create-top-heading.el ends here
|