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})))