;; lib/dream/tests/demos.sx — end-to-end demo apps exercising the full stack. (define dream-dm-pass 0) (define dream-dm-fail 0) (define dream-dm-fails (list)) (define dream-dm-test (fn (name actual expected) (if (= actual expected) (set! dream-dm-pass (+ dream-dm-pass 1)) (begin (set! dream-dm-fail (+ dream-dm-fail 1)) (append! dream-dm-fails {:name name :actual actual :expected expected}))))) (define dream-dm-req (fn (method target headers) (dream-request method target headers ""))) ;; ── hello ────────────────────────────────────────────────────────── (dream-dm-test "hello root" (dream-resp-body (dream-hello-app (dream-dm-req "GET" "/" {}))) "
You have visited this page 1 time(s).
") (dream-dm-test "counter sets cookie" (len (dream-resp-cookies dream-dm-c1)) 1) ;; subsequent visits with the cookie increment (dream-dm-test "counter second visit" (dream-resp-body (dream-dm-capp (dream-dm-req "GET" "/" {:Cookie "dream.session=s1"}))) "You have visited this page 2 time(s).
") (dream-dm-test "counter third visit" (dream-resp-body (dream-dm-capp (dream-dm-req "GET" "/" {:Cookie "dream.session=s1"}))) "You have visited this page 3 time(s).
") ;; reset zeroes the counter then redirects (define dream-dm-reset (dream-dm-capp (dream-dm-req "POST" "/reset" {:Cookie "dream.session=s1"}))) (dream-dm-test "counter reset redirects" (dream-status dream-dm-reset) 303) (dream-dm-test "counter after reset" (dream-resp-body (dream-dm-capp (dream-dm-req "GET" "/" {:Cookie "dream.session=s1"}))) "You have visited this page 1 time(s).
") ;; a different session is independent (dream-dm-test "counter distinct session" (dream-resp-body (dream-dm-capp (dream-dm-req "GET" "/" {}))) "You have visited this page 1 time(s).
") (define dream-dm-tests-run! (fn () {:total (+ dream-dm-pass dream-dm-fail) :passed dream-dm-pass :failed dream-dm-fail :fails dream-dm-fails}))