diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/chameleon/testing.clj | 125 |
1 files changed, 106 insertions, 19 deletions
diff --git a/test/chameleon/testing.clj b/test/chameleon/testing.clj index 13acb1a..35f897d 100644 --- a/test/chameleon/testing.clj +++ b/test/chameleon/testing.clj @@ -6,37 +6,124 @@ [chameleon.logging :as log] [chameleon.specs :as cs] [chameleon.route :as cr] - [chameleon.aai-processor :as cai])) + [chameleon.aai-processor :as cai] + [chameleon.config :as cc] + [integrant.core :as ic] + [integrant.core :as ig]) + (:import [chameleon.kafka CljKafkaConsumer])) +;; STUBS (s/fdef chameleon.route/assert-gallifrey! - :args (s/cat :host :chameleon.specs/host - :provenance :chameleon.specs/provenance - :type :chameleon.specs/type - :payload :chameleon.specs/payload - :loggers :chameleon.specs/loggers) - :ret nil?) + :args (s/cat :host :chameleon.specs/host + :provenance :chameleon.specs/provenance + :type :chameleon.specs/type + :payload :chameleon.specs/payload + :loggers :chameleon.specs/loggers) + :ret nil?) + +(s/fdef org.httpkit.client/request + :args (s/cat :host :chameleon.specs/host + :provenance :chameleon.specs/provenance + :type :chameleon.specs/type + :payload :chameleon.specs/payload + :loggers :chameleon.specs/loggers) + :ret (s/or :get :chameleon.specs/string + :create (s/spec clojure.string/blank? :gen #(gen/return "")) + :update :chameleon.specs/string)) + +(s/fdef ig/ref + :args (binding [s/*recursion-limit* 30] + (s/cat :keyword (s/spec keyword? :gen-max 4))) + :ret any?) + +(s/fdef ig/load-namespaces + :args (binding [s/*recursion-limit* 30] + (s/cat :config (s/spec map? :gen-max 4))) + :ret map?) + + +(s/fdef org.httpkit.client/request + :args (s/cat :request map?) + :ret :route/response) + + +;; TESTS +;; This requires a fix. I should return a random generated hashmap and not an empty one. +;; If i leave it at `(s/spec map?)` it takes about 7 minutes +;; to run the tests, so returning an empty hash-map for now. +(s/fdef chameleon.config/config + :args (s/cat :config (s/spec map? :gen #(gen/return {}))) + :ret map?) (s/fdef chameleon.aai-processor/from-spike - :args (s/cat :gallifrey-host :chameleon.specs/host - :payload :spike/payload - :loggers :chameleon.specs/loggers) - :ret nil?) + :args (s/cat :gallifrey-host :chameleon.specs/host + :payload :spike/payload + :loggers :chameleon.specs/loggers) + :ret nil?) (s/fdef chameleon.aai-processor/from-gallifrey - :args (s/cat :body :gallifrey/payload) - :ret map?) + :args (s/cat :body :gallifrey/payload) + :ret map?) (s/fdef chameleon.aai-processor/gen-trim-relationship - :args (s/cat :relationship :chameleon.specs/relationship) - :ret map?) + :args (s/cat :relationship :chameleon.specs/relationship) + :ret map?) + +(s/fdef chameleon.kafka/clj-kafka-consumer + :args (s/cat :config :kafka/config :group-id :chameleon.specs/string + :topic :chameleon.specs/string :logger :chameleon.specs/logger) + :ret #(instance? CljKafkaConsumer %)) +(s/fdef chameleon.kafka/consumer-record->clojure + :args (s/cat :consumer-record :kafka/consumer-record) + :ret :kafka/clojure-consumer-record) + +(s/fdef chameleon.route/query + :args (s/cat :host :chameleon.specs/host :key :kafka/key :type :chameleon.specs/type + :gallifrey-params :gallifrey/payload) + :ret string?) + +(s/fdef chameleon.route/assert-create! + :args (s/cat :host :chameleon.specs/host :actor :chameleon.specs/string + :type :chameleon.specs/type :key :kafka/key + :payload :gallifrey/payload) + :ret string?) + +(s/fdef chameleon.route/assert-update! + :args (s/cat :host :chameleon.specs/host :actor :chameleon.specs/string + :type :chameleon.specs/type :key :kafka/key + :payload :gallifrey/payload) + :ret string?) + +(s/fdef chameleon.route/assert-delete! + :args (s/cat :host :chameleon.specs/host :actor :chameleon.specs/string + :type :chameleon.specs/type :key :kafka/key + :payload :gallifrey/payload) + :ret string?) + + +;; INSTRUMENTS - MOCKS (st/instrument 'chameleon.route/assert-gallifrey! {:stub '(chameleon.route/assert-gallifrey!)}) +(st/instrument 'org.httpkit.client/request {:stub '(org.httpkit.client/request)}) +(st/instrument 'ig/ref {:stub '(ig/ref)}) +(st/instrument 'ig/load-namespaces {:stub '(ig/load-namespaces)}) + +;; TESTING INSTRUMENTATIONS +#_(chameleon.route/assert-gallifrey! "host" "aai" "type" {} + (log/error-logger "chameleon.testing") (log/audit-logger "chameleon.testing")) +#_(org.httpkit.client/request {"host" "aai"}) +#_(integrant.core/load-namespaces {:foo "bar"}) +#_(integrant.core/ref :foo) -;; Testing instrumentation -(chameleon.route/assert-gallifrey! "host" "aai" "type" {} (log/error-logger "chameleon.testing") (log/audit-logger "chameleon.testing")) -(->> '(chameleon.aai-processor/from-spike +(->> '(chameleon.config/config + chameleon.aai-processor/from-spike chameleon.aai-processor/from-gallifrey - chameleon.aai-processor/gen-trim-relationship) + chameleon.aai-processor/gen-trim-relationship + chameleon.kafka/clj-kafka-consumer + chameleon.kafka/consumer-record->clojure + chameleon.route/query + chameleon.route/assert-create! + chameleon.route/assert-update!) st/check st/summarize-results) |