aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/test-pearl-conflict.el56
1 files changed, 56 insertions, 0 deletions
diff --git a/tests/test-pearl-conflict.el b/tests/test-pearl-conflict.el
index 138e622..56d3c84 100644
--- a/tests/test-pearl-conflict.el
+++ b/tests/test-pearl-conflict.el
@@ -224,6 +224,62 @@
(should (string= (secure-hash 'sha256 "merged text")
(org-entry-get marker "LINEAR-DESC-SHA256"))))))))
+;;; --resolve-atomic-conflict (enum/relation fields, no merge)
+
+(ert-deftest test-pearl-resolve-atomic-conflict-cancel ()
+ "Cancel pushes nothing, takes nothing, and reports conflict/cancelled."
+ (let (pushed took outcome)
+ (cl-letf (((symbol-function 'pearl--read-atomic-conflict-resolution)
+ (lambda (_) 'cancel)))
+ (pearl--resolve-atomic-conflict
+ "ENG-1 state" "In Progress" "Done"
+ (lambda (cb) (setq pushed t) (funcall cb t))
+ (lambda () (setq took t))
+ (lambda (status reason) (setq outcome (list status reason))))
+ (should-not pushed)
+ (should-not took)
+ (should (equal '(conflict cancelled) outcome)))))
+
+(ert-deftest test-pearl-resolve-atomic-conflict-use-local-pushes ()
+ "Use-local runs the push; on success reports pushed."
+ (let (pushed took outcome)
+ (cl-letf (((symbol-function 'pearl--read-atomic-conflict-resolution)
+ (lambda (_) 'use-local)))
+ (pearl--resolve-atomic-conflict
+ "ENG-1 state" "In Progress" "Done"
+ (lambda (cb) (setq pushed t) (funcall cb t))
+ (lambda () (setq took t))
+ (lambda (status reason) (setq outcome (list status reason))))
+ (should pushed)
+ (should-not took)
+ (should (equal '(pushed nil) outcome)))))
+
+(ert-deftest test-pearl-resolve-atomic-conflict-use-local-push-failure ()
+ "A failed local push reports failed/push-failed."
+ (let (outcome)
+ (cl-letf (((symbol-function 'pearl--read-atomic-conflict-resolution)
+ (lambda (_) 'use-local)))
+ (pearl--resolve-atomic-conflict
+ "ENG-1 state" "In Progress" "Done"
+ (lambda (cb) (funcall cb nil))
+ (lambda () nil)
+ (lambda (status reason) (setq outcome (list status reason))))
+ (should (equal '(failed push-failed) outcome)))))
+
+(ert-deftest test-pearl-resolve-atomic-conflict-use-remote-takes-no-push ()
+ "Use-remote adopts Linear's value, never pushes, and reports resolved-remote."
+ (let (pushed took outcome)
+ (cl-letf (((symbol-function 'pearl--read-atomic-conflict-resolution)
+ (lambda (_) 'use-remote)))
+ (pearl--resolve-atomic-conflict
+ "ENG-1 state" "In Progress" "Done"
+ (lambda (cb) (setq pushed t) (funcall cb t))
+ (lambda () (setq took t))
+ (lambda (status reason) (setq outcome (list status reason))))
+ (should took)
+ (should-not pushed)
+ (should (equal '(resolved-remote nil) outcome)))))
+
;;; --conflict-has-markers-p
(ert-deftest test-pearl-conflict-has-markers-p ()