;; lib/host/tests/handler.sx — host JSON envelope + request-reading helpers. (define host-hd-pass 0) (define host-hd-fail 0) (define host-hd-fails (list)) (define host-hd-test (fn (name actual expected) (if (= actual expected) (set! host-hd-pass (+ host-hd-pass 1)) (begin (set! host-hd-fail (+ host-hd-fail 1)) (append! host-hd-fails {:name name :actual actual :expected expected}))))) ;; ── host/ok ──────────────────────────────────────────────────────── (host-hd-test "ok status 200" (dream-status (host/ok "x")) 200) (host-hd-test "ok content-type json" (dream-resp-header (host/ok "x") "content-type") "application/json") (host-hd-test "ok envelope ok:true" (contains? (dream-resp-body (host/ok "x")) "\"ok\":true") true) (host-hd-test "ok envelope carries data" (contains? (dream-resp-body (host/ok "hi")) "\"data\":\"hi\"") true) ;; ── host/ok-status ───────────────────────────────────────────────── (host-hd-test "ok-status custom" (dream-status (host/ok-status 201 "y")) 201) (host-hd-test "ok-status data" (contains? (dream-resp-body (host/ok-status 201 "y")) "\"data\":\"y\"") true) ;; ── host/error ───────────────────────────────────────────────────── (host-hd-test "error status" (dream-status (host/error 404 "nope")) 404) (host-hd-test "error ok:false" (contains? (dream-resp-body (host/error 404 "nope")) "\"ok\":false") true) (host-hd-test "error message" (contains? (dream-resp-body (host/error 404 "nope")) "\"error\":\"nope\"") true) (host-hd-test "error content-type json" (dream-resp-header (host/error 500 "boom") "content-type") "application/json") ;; ── host/json-status ─────────────────────────────────────────────── (host-hd-test "json-status arbitrary status" (dream-status (host/json-status 418 {:a 1})) 418) (host-hd-test "json-status encodes body" (contains? (dream-resp-body (host/json-status 200 {:a 1})) "\"a\":1") true) ;; ── host/query-int ───────────────────────────────────────────────── (define host-hd-req (fn (target) (dream-request "GET" target {} ""))) (host-hd-test "query-int present" (host/query-int (host-hd-req "/x?limit=5") "limit" 10) 5) (host-hd-test "query-int absent -> fallback" (host/query-int (host-hd-req "/x") "limit" 10) 10) (define host-hd-tests-run! (fn () {:total (+ host-hd-pass host-hd-fail) :passed host-hd-pass :failed host-hd-fail :fails host-hd-fails}))