From f49e272f9ffcf0199b2b263c09b2d20373ebed9e Mon Sep 17 00:00:00 2001 From: "Michael S. Klishin" Date: Fri, 16 Dec 2011 07:18:16 +0400 Subject: [PATCH] Introduce monger.testing/defcleaner that supposed to be used with clojure.test/use-fixtures --- src/monger/testing.clj | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 src/monger/testing.clj diff --git a/src/monger/testing.clj b/src/monger/testing.clj new file mode 100644 index 0000000..ba54e78 --- /dev/null +++ b/src/monger/testing.clj @@ -0,0 +1,28 @@ +(ns monger.testing + (:require [monger collection])) + + +;; +;; API +;; + +(defmacro defcleaner + "Defines a fixture function that removes all documents from a collection. If collection is not specified, + a conventionally named var will be used. Supposed to be used with clojure.test/use-fixtures but may + be useful on its own. + + Examples: + + (defcleaner events) ;; collection name will be taken from the events-collection var + (defcleaner people \"accounts\") ;; collection name is given + " + [entities & coll-name] + (let [coll-arg (if coll-name + (str (first coll-name)) + (symbol (str entities "-collection"))) + fn-name (symbol (str "purge-" entities))] + `(defn ~fn-name + [f#] + (monger.collection/remove ~coll-arg) + (f#) + (monger.collection/remove ~coll-arg))))