Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 31 additions & 0 deletions test/state_flow/walkthrough_test.clj
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
(ns state-flow.walkthrough-test
"Guards doc/walkthrough.repl against silent drift from the public API (#107)."
(:require [clojure.java.io :as io]
[clojure.string :as string]
[clojure.test :refer [deftest is testing]]
[state-flow.api :as flow]))

(def walkthrough-path "doc/walkthrough.repl")

(deftest walkthrough-file-exists
(is (.exists (io/file walkthrough-path))
(str "expected " walkthrough-path " to exist")))

(deftest walkthrough-references-current-public-api
(testing "symbols shown in the walkthrough still resolve on state-flow.api"
(let [body (slurp walkthrough-path)
required-snippets ["flow/swap-state"
"flow/get-state"
"match?"
"(flow \""
"(run"]]
(doseq [snippet required-snippets]
(is (string/includes? body snippet)
(str "walkthrough should mention " (pr-str snippet))))
(doseq [sym '[state-flow.api/swap-state
state-flow.api/get-state
state-flow.api/run
state-flow.api/match?
state-flow.api/flow]]
(is (some? (resolve sym))
(str "API var missing: " sym))))))
Comment on lines +16 to +31