summaryrefslogtreecommitdiff
path: root/test/weepinbell/janitor_test.clj
blob: 99efcfb7751490c2ac767ab814002bdec612f1aa (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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
(ns weepinbell.janitor-test
  (:require [clojure.test :refer [deftest testing is]]
            [weepinbell.processor.janitor :refer [clean]]))

(def old-unverified {:ok? true
                     :verified? false
                     :new? false
                     :id "1234"
                     :old-data {}})
(def new-unverified {:ok? true
                     :verified? false
                     :new? true
                     :id "1234"
                     :old-data {}})
(def old-verified {:ok? true
                   :verified? true
                   :new? false
                   :id "1234"
                   :old-data {}})
(def new-verified {:ok? true
                   :verified? true
                   :new? true
                   :id "1234"
                   :old-data {}})

(defn- not-if [condition value]
  (if condition (not value) value))

(defn- test-clean [testdata should-clean?]
  (let [deleted (promise)
        storage {:delete (fn [_] (deliver deleted true))}
        callbacked (promise)
        callbacks {:on-delete (fn [_] (deliver callbacked true))}
        cleaned (clean testdata storage callbacks)]
    (is (not-if should-clean? (:ok? cleaned)))
    (is (not-if should-clean? (not (deref deleted 10 false))))
    (is (not-if should-clean? (not (deref callbacked 10 false))))))

(deftest janitor-test
  (testing "janitor cleans old unverified webmention"
    (test-clean old-unverified true))
  (testing "janitor does nothing for new unverified and all verified webmentions"
    (doall (map #(test-clean % false) [old-verified new-verified new-unverified]))))