From e5f58a411e3343a27fb6c1787bc9404d89cc0309 Mon Sep 17 00:00:00 2001 From: Spencer Williams Date: Mon, 7 Jul 2025 12:54:49 -0400 Subject: Add tests for draft feature --- lisp/seam-test.el | 67 +++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 63 insertions(+), 4 deletions(-) (limited to 'lisp/seam-test.el') diff --git a/lisp/seam-test.el b/lisp/seam-test.el index 4907b51..a063758 100644 --- a/lisp/seam-test.el +++ b/lisp/seam-test.el @@ -42,6 +42,7 @@ `(let* ((seam-test-directory (file-name-as-directory (make-temp-file "seam-test" t))) (seam-note-directory seam-test-directory) (default-directory seam-test-directory) + (seam-create-as-draft nil) (seam-note-types '("private" "public")) (seam-default-note-type "private") (seam-title-formatter (lambda (title _type _draft-p) title)) @@ -204,12 +205,14 @@ (ert-deftest seam-test-buffer-name-format-custom () (should (equal - "[private] Note" + "[private draft] Note" (seam-test-with-notes ((seam-title-formatter - (lambda (title type _draft-p) - (format "[%s] %s" type title)))) + (lambda (title type draft-p) + (format "[%s%s] %s" type (if draft-p " draft" "") title)))) ((note "Note")) - (buffer-name note))))) + (with-current-buffer note + (call-interactively 'seam-toggle-draft) + (buffer-name note)))))) (ert-deftest seam-test-link-update () "Test that renaming a note updates its HTML and that of notes which link to it." @@ -401,6 +404,62 @@ update linking HTML files such that they link to it." ((foo "foo")) (seam-set-note-type (buffer-file-name foo) "invalid-type")))) +(ert-deftest seam-test-create-draft () + (should + (equal + '("public/-note.org") + (seam-test-with-notes ((seam-create-as-draft t)) + ((note "Note" "public")) + (seam-test-list-files))))) + +(ert-deftest seam-test-create-draft-override () + (should + (equal + '("public/-note.org") + (seam-test-with-notes ((seam-note-types + '(("public" :create-as-draft t)))) + ((note "Note" "public")) + (seam-test-list-files))))) + +(ert-deftest seam-test-set-draft () + "Test that toggling a note from non-draft to draft will delete its +HTML file and update linking HTML files such that they no longer +link to it." + (should + (equal + '(nil ("html/foo.html" "public/-bar.org" "public/foo.org")) + (seam-test-with-notes () + ((foo "foo" "public") + (bar "bar" "public")) + (with-current-buffer foo + (seam-test-add-contents foo (seam-test-link-to-buffer bar))) + (with-current-buffer bar + (call-interactively 'seam-toggle-draft)) + (list + (seam-test-links-from-html "html/foo.html") + (seam-test-list-files)))))) + +;;; NOTE: This is the same test as `seam-test-set-draft', except that +;;; we toggle bar's draft status twice. +(ert-deftest seam-test-unset-draft () + "Test that toggling a note from draft to non-draft will export its +HTML file and update linking HTML files such that they link to +it." + (should + (equal + '(("bar.html") ("html/bar.html" "html/foo.html" "public/bar.org" "public/foo.org")) + (seam-test-with-notes () + ((foo "foo" "public") + (bar "bar" "public")) + (with-current-buffer foo + (seam-test-add-contents foo (seam-test-link-to-buffer bar))) + (with-current-buffer bar + (call-interactively 'seam-toggle-draft) + (call-interactively 'seam-toggle-draft)) + (list + (seam-test-links-from-html "html/foo.html") + (seam-test-list-files)))))) + (ert-deftest seam-test-follow-link-existing () "Test that following a link to an existing note opens that note." (should -- cgit v1.2.3