use dependency injection in order to make include resolving testable

This commit is contained in:
jem 2018-05-15 19:31:24 +02:00
parent 6be21214b0
commit 464e9af7d6
3 changed files with 29 additions and 1 deletions

View file

@ -29,7 +29,8 @@
[prone "1.1.4"] [prone "1.1.4"]
[ring/ring-anti-forgery "1.1.0"] [ring/ring-anti-forgery "1.1.0"]
[ring-server "0.4.0"] [ring-server "0.4.0"]
[selmer "1.11.0"]] [selmer "1.11.0"]
[com.stuartsierra/component "0.3.2"]]
:repl-options {:init-ns smeagol.repl} :repl-options {:init-ns smeagol.repl}

11
src/smeagol/include.clj Normal file
View file

@ -0,0 +1,11 @@
(ns smeagol.include
(:require
[com.stuartsierra.component :as component]))
(defrecord Resolver [resolver-fn])
(defn new-resolver [resolver-fn]
(map->Resolver {:resolver-fn resolver-fn}))
(defn resolve-include [resolver uri]
(apply (:resolver-fn resolver) [uri]))

View file

@ -0,0 +1,16 @@
(ns smeagol.test.include
(:require [clojure.test :refer :all]
[com.stuartsierra.component :as component]
[smeagol.include :as sut]))
(defn test-include-resolver [uri]
(cond
(= uri "./simple.md") "Simple content."))
(def system-under-test
(component/system-map
:resolver (sut/new-resolver test-include-resolver)))
(deftest test-local-links
(testing "Rewriting of local links"
(is (= "Simple content." (sut/resolve-include (:resolver system-under-test) "./simple.md")))))