Namespaces
(ns docs-gen.render-test
(:require [clojure.test :refer :all]
[clojure.java.io :as io]
[docs-gen.render :refer :all]))
Fixtures
(def test-page "<html><body><div><h1><a href=\"./punk.html\">Dirty Harry</a></h1></div></body></html>")
(def test-page-2 "<html><body><div><a href=\"/punk.html\">Dirty Harry</a></div></body></html>")
(def test-page-without-href "<html><body><div><a>Dirty Harry</a></div></body></html>")
Configuration Helpers
(deftest config-helpers
(testing "Sites"
(letfn [(contains-key [keys] (fn [val] (some #(= % val) keys)))]
(is (every? (contains-key ["code" "dissertation" "design" "docs"]) (collect-vals :sites config))))))
(deftest collector-helpers
(testing "Back one directory"
(is (= (back-one-directory "/portfolio/image") "/portfolio/"))
(is (= (back-one-directory "/portfolio") "/")))
(testing "Root directory contains all sites"
(is (every? true? (map #(.exists (io/file (str root-dir (:site %)))) sites)))))
(deftest metadata-collection
(testing "Metadata Helpers"
(is (= (loc "") 0)))
(testing "Metadata Collection"
(is (= (weave-meta-data [] test-page) {}))
(is (= (weave-meta-data [:non-existent] test-page) {:non-existent "No such metadata collector exists"}))
(is (= (weave-meta-data [:words :loc] "") {:loc 0 :words 0}))
(is (= (weave-meta-data [:words] test-page) {:words 2}))))
(deftest nav-builders
(testing "Navigation Element"
(is (= (nav-element [:loc :words] "/category/subcategory/title" test-page))
{:category "category" :subcategory "subcategory" :title "title" :loc 0 :words 2})))