You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

108 lines
3.9 KiB

;;; webpaste --- Tests for webpaste
;;; Commentary:
;;; Code:
(require 'ert)
(require 'webpaste)
(ert-deftest webpaste--autopupulate-provider-priority ()
"Test autopopulate of webpaste-provider-priority."
(setq-default webpaste-provider-priority nil)
(setq-default webpaste-providers-alist
(list (list "provider1" "lamba")
(list "provider2" "lamba")
(list "provider3" "lamba")))
(should (equal (webpaste--get-provider-priority)
'("provider1" "provider2" "provider3"))))
(ert-deftest webpaste--static-provider-priority ()
"Test static configuration of webpaste-provider-priority."
(setq-default webpaste-provider-priority
'("provider2" "provider1" "provider3"))
(setq-default webpaste-providers-alist '())
(should (equal (webpaste--get-provider-priority)
'("provider2" "provider1" "provider3"))))
(ert-deftest webpaste--callback-from-working-provider ()
"This test just sends a message to a good provider that just works."
;; Temporal storage for result
(let ((returned-result nil))
;; Reset all webpaste variables
(setq-default webpaste-tested-providers nil)
(setq-default webpaste-provider-priority nil)
;; Make a fake provider that just "returns" the paste result by setting a
;; variable and concatinate it with "Works: " so we can see it showing up
(setq-default webpaste-providers-alist
(list (list "workingprovider"
(lambda (text)
(setq returned-result
(concat "Works: " text))))))
;; Call webpaste
(webpaste-paste-text "test-string")
;; Check that we got the expected result
(should (string= returned-result "Works: test-string"))))
(ert-deftest webpaste--callback-from-working-provider-as-fallback ()
"This test sends a message to a bad provider that returns some error data.
Then the bad provider pastes again like it should and we check that we got the
result from the good provider only."
;; Temporal storage for result
(let ((returned-result nil))
;; Reset all webpaste variables
(setq-default webpaste-tested-providers nil)
(setq-default webpaste-provider-priority nil)
;; Make two broken providers that "returns" the result by setting the
;; variable and then failover.
;; Also make two working providers that returns different messages so the
;; test can detect which provider was used easily.
(setq-default webpaste-providers-alist
(list (list "brokenprovider1"
(lambda (text)
;; Set return text
(setq returned-result
(concat "Broken1: " text))
;; Call paste again
(webpaste-paste-text text)))
(list "workingprovider1"
(lambda (text)
(setq returned-result
(concat "Works1: " text))))
(list "workingprovider2"
(lambda (text)
(setq returned-result
(concat "Works2: " text))))
(list "brokenprovider2"
(lambda (text)
;; Set return text
(setq returned-result
(concat "Broken2: " text))
;; Call paste again
(webpaste-paste-text text)))))
;; Call webpaste
(webpaste-paste-text "test-string")
;; Check that we got the expected result
(should (string= returned-result "Works1: test-string"))))
(provide 'webpaste-test)
;;; webpaste-test.el ends here