From a2bc59dcfa7452df95fb9b87f317f5db4f4fbecd Mon Sep 17 00:00:00 2001 From: Juha Jokimaki Date: Sun, 30 Oct 2016 16:34:38 +0200 Subject: [PATCH] Test that every query operator is defined --- test/monger/test/query_operators_test.clj | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/test/monger/test/query_operators_test.clj b/test/monger/test/query_operators_test.clj index bb09997..5022e04 100644 --- a/test/monger/test/query_operators_test.clj +++ b/test/monger/test/query_operators_test.clj @@ -3,10 +3,28 @@ [monger.collection :as mc] [monger.js :as js] [clojure.test :refer :all] - [monger.operators :refer :all])) + [clojure.set :refer [difference]] + [monger.operators :refer :all]) + (:import [com.mongodb QueryOperators])) ;; (use-fixtures :each purge-people purge-docs purge-things purge-libraries) +(deftest every-query-operator-is-defined + (let [driver-query-operators (->> (.getDeclaredFields QueryOperators) (map #(.get % nil)) set) + monger-query-operators (->> (ns-publics 'monger.operators) (map (comp name first)) set) + ; $within is deprecated and replaced by $geoWithin since v2.4. + ; $uniqueDocs is deprecated since v2.6. + deprecated-query-operators #{"$within" "$uniqueDocs"} + ; Query modifier operators that are deprecated in the mongo shell since v3.2 + deprecated-meta-operators #{"$comment" "$explain" "$hint" "$maxScan" + "$maxTimeMS" "$max" "$min" "$orderby" + "$returnKey" "$showDiskLoc" "$snapshot" "$query"} + undefined-non-deprecated-operators (difference driver-query-operators + deprecated-query-operators + deprecated-meta-operators + monger-query-operators)] + (is (= #{} undefined-non-deprecated-operators)))) + (let [conn (mg/connect) db (mg/get-db conn "monger-test")] (defn purge-collections