aboutsummaryrefslogtreecommitdiff
path: root/tests/test-pearl-assignee-labels.el
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test-pearl-assignee-labels.el')
-rw-r--r--tests/test-pearl-assignee-labels.el28
1 files changed, 28 insertions, 0 deletions
diff --git a/tests/test-pearl-assignee-labels.el b/tests/test-pearl-assignee-labels.el
index c70f0ca..7a4a352 100644
--- a/tests/test-pearl-assignee-labels.el
+++ b/tests/test-pearl-assignee-labels.el
@@ -71,6 +71,20 @@
(test-pearl--in-org "* Plain heading\nno id\n"
(should-error (pearl-set-assignee "Craig") :type 'user-error)))
+(ert-deftest test-pearl-set-assignee-failure-preserves-drawer ()
+ "A failed assignee push attempts the mutation but leaves the drawer unchanged."
+ (let (pushed)
+ (test-pearl--in-org
+ "*** TODO Title\n:PROPERTIES:\n:LINEAR-ID: a\n:LINEAR-TEAM-ID: team-1\n:LINEAR-ASSIGNEE-ID: old\n:LINEAR-ASSIGNEE-NAME: Someone\n:END:\n"
+ (cl-letf (((symbol-function 'pearl--resolve-team-id)
+ (lambda (_kind _name _team &optional _force) "u9"))
+ ((symbol-function 'pearl--update-issue-async)
+ (lambda (_id input cb) (setq pushed input) (funcall cb '(:success nil)))))
+ (pearl-set-assignee "Craig")
+ (should (string= "u9" (cdr (assoc "assigneeId" pushed))))
+ (should (string= "Someone" (org-entry-get nil "LINEAR-ASSIGNEE-NAME")))
+ (should (string= "old" (org-entry-get nil "LINEAR-ASSIGNEE-ID")))))))
+
;;; set-labels
(ert-deftest test-pearl-set-labels-pushes-ids-and-updates-drawer ()
@@ -110,5 +124,19 @@
(should-error (pearl-set-labels '("ghost")) :type 'user-error)
(should-not pushed)))))
+(ert-deftest test-pearl-set-labels-failure-preserves-drawer ()
+ "A failed labels push attempts the mutation but leaves the labels drawer unchanged."
+ (let (pushed)
+ (test-pearl--in-org
+ "*** TODO Title\n:PROPERTIES:\n:LINEAR-ID: a\n:LINEAR-TEAM-ID: team-1\n:LINEAR-LABELS: [bug]\n:END:\n"
+ (cl-letf (((symbol-function 'pearl--resolve-team-id)
+ (lambda (_kind name _team &optional _force)
+ (pcase name ("p1" "l2") (_ nil))))
+ ((symbol-function 'pearl--update-issue-async)
+ (lambda (_id input cb) (setq pushed input) (funcall cb '(:success nil)))))
+ (pearl-set-labels '("p1"))
+ (should (equal '("l2") (cdr (assoc "labelIds" pushed))))
+ (should (string= "[bug]" (org-entry-get nil "LINEAR-LABELS")))))))
+
(provide 'test-pearl-assignee-labels)
;;; test-pearl-assignee-labels.el ends here