diff options
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/test-pearl-adhoc.el | 61 | ||||
| -rw-r--r-- | tests/test-pearl-keymap.el | 3 |
2 files changed, 63 insertions, 1 deletions
diff --git a/tests/test-pearl-adhoc.el b/tests/test-pearl-adhoc.el index 2bcc575..2dec1a3 100644 --- a/tests/test-pearl-adhoc.el +++ b/tests/test-pearl-adhoc.el @@ -124,6 +124,67 @@ candidate list, so completion still works the way the framework expects." (should (equal '(:priority 1) (plist-get (cdr (assoc "Dup" pearl-saved-queries)) :filter)))))) +;;; pearl-delete-saved-query + +(ert-deftest test-pearl-delete-saved-query-removes-entry-on-yes () + "Confirming the prompt removes the named entry and persists." + (let ((pearl-saved-queries '(("Keep" :filter (:open t)) + ("Drop" :filter (:priority 1)))) + (persisted nil)) + (cl-letf (((symbol-function 'yes-or-no-p) (lambda (&rest _) t)) + ((symbol-function 'customize-save-variable) + (lambda (&rest _) (setq persisted t)))) + (pearl-delete-saved-query "Drop") + (should-not (assoc "Drop" pearl-saved-queries)) + (should (assoc "Keep" pearl-saved-queries)) + (should persisted)))) + +(ert-deftest test-pearl-delete-saved-query-no-at-confirm-keeps-entry () + "Declining the confirm prompt leaves the entry in place and does not persist." + (let ((pearl-saved-queries '(("Keep" :filter (:open t)))) + (persisted nil)) + (cl-letf (((symbol-function 'yes-or-no-p) (lambda (&rest _) nil)) + ((symbol-function 'customize-save-variable) + (lambda (&rest _) (setq persisted t)))) + (pearl-delete-saved-query "Keep") + (should (assoc "Keep" pearl-saved-queries)) + (should-not persisted)))) + +(ert-deftest test-pearl-delete-saved-query-sentinel-cancels () + "Picking the `pearl--filter-none' sentinel cancels without touching anything." + (let ((pearl-saved-queries '(("Keep" :filter (:open t)))) + (confirmed nil)) + (cl-letf (((symbol-function 'yes-or-no-p) + (lambda (&rest _) (setq confirmed t) t)) + ((symbol-function 'customize-save-variable) + (lambda (&rest _) nil))) + (pearl-delete-saved-query pearl--filter-none) + (should (assoc "Keep" pearl-saved-queries)) + (should-not confirmed)))) + +(ert-deftest test-pearl-delete-saved-query-unknown-name-errors () + "An unknown name (e.g. typed past completion) signals a user-error." + (let ((pearl-saved-queries '(("Keep" :filter (:open t))))) + (should-error (pearl-delete-saved-query "Nope") :type 'user-error))) + +(ert-deftest test-pearl-delete-saved-query-empty-list-errors-on-interactive () + "Called interactively with no saved queries, the command errors cleanly +rather than offering an empty picker." + (let ((pearl-saved-queries nil)) + (should-error (call-interactively #'pearl-delete-saved-query) + :type 'user-error))) + +;;; pearl-run-saved-query sentinel cancel + +(ert-deftest test-pearl-run-saved-query-sentinel-cancels () + "Picking the `pearl--filter-none' sentinel cancels the run without fetching." + (let ((fetched nil) + (pearl-saved-queries '(("Open" :filter (:open t))))) + (cl-letf (((symbol-function 'pearl--query-issues-async) + (lambda (&rest _) (setq fetched t)))) + (should-error (pearl-run-saved-query pearl--filter-none) :type 'user-error) + (should-not fetched)))) + ;;; pearl-list-issues-filtered (ert-deftest test-pearl-list-issues-filtered-runs-with-source () diff --git a/tests/test-pearl-keymap.el b/tests/test-pearl-keymap.el index 5cc658d..d04e309 100644 --- a/tests/test-pearl-keymap.el +++ b/tests/test-pearl-keymap.el @@ -89,7 +89,8 @@ The lowercase `c' is no longer a direct command -- it is the create prefix." (should (eq 'pearl-create-issue (lookup-key pearl-prefix-map (kbd "c t")))) (should (eq 'pearl-create-comment (lookup-key pearl-prefix-map (kbd "c c")))) (should (eq 'pearl-delete-current-issue (lookup-key pearl-prefix-map (kbd "k t")))) - (should (eq 'pearl-delete-current-comment (lookup-key pearl-prefix-map (kbd "k c"))))) + (should (eq 'pearl-delete-current-comment (lookup-key pearl-prefix-map (kbd "k c")))) + (should (eq 'pearl-delete-saved-query (lookup-key pearl-prefix-map (kbd "k q"))))) (ert-deftest test-pearl-prefix-map-open-and-copy-groups () "The open group resolves the two open actions; copy resolves copy-url." |
