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.
 
 

75 lines
2.4 KiB

;;; test-webpaste-provider-creation.el --- Tests for webpaste
;;; Commentary:
;;; Code:
(load "tests/load-undercover.el")
(require 'webpaste)
(describe
"Creation of providers"
:var (broken-provider working-provider)
(before-each
(setq broken-provider
(webpaste-provider
:uri "http://invalid-domain-name/"
:post-field "data"
:success-lambda (lambda () (cl-function
(lambda (&key data &allow-other-keys)
(setq used-lambda "success"))))
:error-lambda (lambda (&rest rest) (cl-function
(lambda (&key error-thrown &allow-other-keys)
(setq used-lambda "error"))))))
(setq working-provider
(webpaste-provider
:uri "https://httpbin.org/status/200"
:post-field "data"
:success-lambda (lambda () (cl-function
(lambda (&key data &allow-other-keys)
(setq used-lambda "success"))))
:error-lambda (lambda (&rest rest) (cl-function
(lambda (&key error-thrown &allow-other-keys)
(setq used-lambda "error")))))))
(it
"can trigger the error lambda of a provider"
(let ((used-lambda nil))
(funcall broken-provider "my test text" :sync t)
(expect used-lambda :to-equal "error")))
(it
"can trigger the success lambda of a provider"
(let ((used-lambda nil))
(funcall working-provider "my test text" :sync t)
(expect used-lambda :to-equal "success")))
(xit
"can failover from a broken provider"
(spy-on 'message)
(spy-on 'error)
(let ((used-lambda nil)
(provider (webpaste-provider
:uri "http://invalid-domain-name/"
:post-field "data"
:success-lambda (cl-function
(lambda (&key data &allow-other-keys)
(setq used-lambda "success")))
:error-lambda (cl-function
(lambda (&key error-thrown &allow-other-keys)
(funcall working-provider "failover"))))))
(funcall provider "text" :sync t)
(expect used-lambda :to-equal "success"))))
;;; test-webpaste-provider-creation.el ends here