From f8849e92e58fefc9fbea72f650cef50a5607f305 Mon Sep 17 00:00:00 2001 From: Nicolas Goaziou Date: Mon, 11 Dec 2017 23:22:21 +0100 Subject: [PATCH] org-archive: Add a test * testing/lisp/test-org-archive.el (test-org-archive/to-archive-sibling): New test. --- testing/lisp/test-org-archive.el | 81 +++++++++++++++++++++++++++++++- 1 file changed, 79 insertions(+), 2 deletions(-) diff --git a/testing/lisp/test-org-archive.el b/testing/lisp/test-org-archive.el index ae3676c7b..f66fa4bdc 100644 --- a/testing/lisp/test-org-archive.el +++ b/testing/lisp/test-org-archive.el @@ -19,8 +19,7 @@ ;;; Code: - -(ert-deftest test-org-element/archive-update-status-cookie () +(ert-deftest test-org-archive/update-status-cookie () "Test archiving properly updating status cookies." ;; Test org-archive-subtree with two children. (should @@ -58,6 +57,84 @@ (forward-line -1) (org-element-property :title (org-element-at-point)))))) +(ert-deftest test-org-archive/to-archive-sibling () + "Test `org-archive-to-archive-sibling' specifications." + ;; Archive sibling before or after archive heading. + (should + (equal "* Archive :ARCHIVE:\n** H\n" + (org-test-with-temp-text "* H\n* Archive :ARCHIVE:\n" + (let ((org-archive-sibling-heading "Archive") + (org-archive-tag "ARCHIVE")) + (org-archive-to-archive-sibling) + (goto-char (point-min)) + (buffer-substring-no-properties + (point) (line-beginning-position 3)))))) + (should + (equal "* Archive :ARCHIVE:\n** H\n" + (org-test-with-temp-text "* Archive :ARCHIVE:\n* H\n" + (let ((org-archive-sibling-heading "Archive") + (org-archive-tag "ARCHIVE")) + (org-archive-to-archive-sibling) + (goto-char (point-min)) + (buffer-substring-no-properties + (point) (line-beginning-position 3)))))) + ;; When there is no sibling archive heading, create it. + (should + (equal "* Archive :ARCHIVE:\n** H\n" + (org-test-with-temp-text "* H\n" + (let ((org-archive-sibling-heading "Archive") + (org-archive-tag "ARCHIVE")) + (org-archive-to-archive-sibling) + (goto-char (point-min)) + (buffer-substring-no-properties + (point) (line-beginning-position 3)))))) + ;; Ignore non-sibling archive headings. + (should + (equal "* Archive :ARCHIVE:\n* Top\n** Archive :ARCHIVE:\n*** H\n" + (org-test-with-temp-text "* Archive :ARCHIVE:\n* Top\n** H\n" + (let ((org-archive-sibling-heading "Archive") + (org-archive-tag "ARCHIVE")) + (org-archive-to-archive-sibling) + (goto-char (point-min)) + (buffer-substring-no-properties + (point) (line-beginning-position 5)))))) + ;; When archiving a heading, leave point on next heading. + (should + (equal "* H2" + (org-test-with-temp-text "* H1\n* H2\n* Archive :ARCHIVE:\n" + (let ((org-archive-sibling-heading "Archive") + (org-archive-tag "ARCHIVE")) + (org-archive-to-archive-sibling) + (buffer-substring-no-properties (point) (line-end-position)))))) + (should + (equal "* H2" + (org-test-with-temp-text "* Archive :ARCHIVE:\n* H1\n* H2\n" + (let ((org-archive-sibling-heading "Archive") + (org-archive-tag "ARCHIVE")) + (org-archive-to-archive-sibling) + (buffer-substring-no-properties (point) (line-end-position)))))) + ;; If `org-archive-reversed-order' is nil, archive as the last + ;; child. Otherwise, archive as the first one. + (should + (equal "* Archive :ARCHIVE:\n** A\n" + (org-test-with-temp-text "* H\n* Archive :ARCHIVE:\n** A\n" + (let ((org-archive-sibling-heading "Archive") + (org-archive-tag "ARCHIVE") + (org-archive-reversed-order nil)) + (org-archive-to-archive-sibling) + (goto-char (point-min)) + (buffer-substring-no-properties + (point) (line-beginning-position 3)))))) + (should + (equal "* Archive :ARCHIVE:\n** H\n" + (org-test-with-temp-text "* H\n* Archive :ARCHIVE:\n** A\n" + (let ((org-archive-sibling-heading "Archive") + (org-archive-tag "ARCHIVE") + (org-archive-reversed-order t)) + (org-archive-to-archive-sibling) + (goto-char (point-min)) + (buffer-substring-no-properties + (point) (line-beginning-position 3))))))) (provide 'test-org-archive) ;;; test-org-archive.el ends here