Skip to content

Instantly share code, notes, and snippets.

@dazld
Created September 10, 2017 16:56
Show Gist options
  • Save dazld/7520c01e962f4064de7a0d250669a2bd to your computer and use it in GitHub Desktop.
Save dazld/7520c01e962f4064de7a0d250669a2bd to your computer and use it in GitHub Desktop.
(ns itag.test.handler
(:require [clojure.test :refer :all]
[clojure.spec.alpha :as spec]
[clojure.spec.gen.alpha :as gen]
[clojure.pprint :refer :all]
[ring.mock.request :refer :all]
[itag.handler :refer :all]))
(def id-regex #"^[0-9]*$")
(def skills (gen/elements ["java" "js" "clojure" "c" "python" "bash" "sql"]))
(def skill-gen
(gen/fmap (fn [[skill]]
skill)
skills))
;(println (last (skill-gen)))
(spec/def ::id int?)
(spec/def ::pos pos?)
(spec/def ::min-age #(<= 21 %))
(spec/def ::max-age #(>= 180 %))
(spec/def ::id-regex
(spec/and
string?
#(re-matches id-regex %)))
(spec/def ::id-types (spec/or ::id ::id-regex))
(spec/def ::name string?)
(spec/def ::age
(spec/and
int?
::min-age
::max-age))
(spec/def ::skills
(spec/and
set?))
;#(contains?)))
(spec/def ::developer (spec/keys :req-un [::name ::age ::skills]))
(spec/explain ::developer {:name "dan" :age 3 :skills #{"a"}})
(defn check [k v]
(let [result (spec/valid? k v)]
(if result
result
(spec/explain k v))))
(deftest developer-shape
(is (check ::developer (gen/generate (spec/gen ::developer))))
(is (check ::developer {:name "dan" :age 21 :skills #{"a"}}))
(is (= 1 1)))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment