summaryrefslogtreecommitdiff
path: root/test/weepinbell/test_utility.clj
blob: 73b831a3017da765b130320025f3c3790b04e8a6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
(ns weepinbell.test-utility
  (:require [compojure.core :refer [GET routes]]
            [org.httpkit.server :refer [run-server]]))

(defmacro with-webmention [existance [source-route source-resp target-route target-resp] & body]
  (let [source-url (str "http://localhost:38888" source-route)
        target-url (str "http://localhost:38888" target-route)]
    `(let [handler# (routes
                     (GET ~source-route [] ~source-resp)
                     (GET ~target-route [] ~target-resp))
           ~'created (promise)
           ~'deleted (promise)
           ~'updated (promise)
           ~'storage {:append  (fn [~'_] (deliver ~'created true))
                      :update  (fn [~'_ ~'_ ~'_] (deliver ~'updated true))
                      :delete  (fn [~'_ ~'_] (deliver ~'deleted true))
                      :get     (fn [~'_ ~'_]
                                 (when (= ~existance :old)
                                   {:webmention {:id "test-id"
                                                 :source ~source-url
                                                 :target ~target-url}}))}
           ~'server (run-server handler# {:port 38888 :join? false})]
       (try
         ~@body
         (finally (~'server))))))