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
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
|
|
|