25 lines
1.0 KiB
Clojure
25 lines
1.0 KiB
Clojure
(ns pmagnus.btcdata.web.controllers.health-test
|
|
(:require [clojure.test :refer [deftest is]]
|
|
[pmagnus.btcdata.web.controllers.health :as health]))
|
|
|
|
(def disabled-stream {:state (atom {:enabled? false}) :latest-price (atom nil)})
|
|
|
|
(deftest healthcheck-is-process-only
|
|
(is (= 200 (:status (health/healthcheck! {})))))
|
|
|
|
(deftest readiness-check-tests-database
|
|
(let [called (atom nil)
|
|
query-fn (fn [query params] (reset! called [query params]))]
|
|
(is (= 200 (:status (health/readiness-check! query-fn disabled-stream {}))))
|
|
(is (= [:check-database {}] @called)))
|
|
(is (= 503 (:status (health/readiness-check!
|
|
(fn [_ _] (throw (ex-info "database unavailable" {})))
|
|
disabled-stream {})))))
|
|
|
|
(deftest stale-stream-is-not-ready
|
|
(is (= 503 (:status (health/readiness-check!
|
|
(fn [_ _] {})
|
|
{:state (atom {:enabled? true :connected? true})
|
|
:latest-price (atom {:recorded-at java.time.Instant/EPOCH})}
|
|
{})))))
|