From dfb7bd3fc834ae0ef881186433a893bdcdc93855 Mon Sep 17 00:00:00 2001 From: "Michael S. Klishin" Date: Wed, 7 Mar 2012 11:33:32 +0400 Subject: [PATCH] Remember object ids of inserted documents --- src/monger/testing.clj | 13 ++++++++++++- test/monger/test/factory_dsl.clj | 1 + 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/monger/testing.clj b/src/monger/testing.clj index bd85c25..b73645b 100644 --- a/src/monger/testing.clj +++ b/src/monger/testing.clj @@ -43,6 +43,7 @@ (def factories (atom {})) (def defaults (atom {})) +(def last-oids (atom {})) (defn defaults-for [f-group & { :as attributes }] @@ -55,7 +56,7 @@ (assoc-in a [(name f-group) (name f-name)] attributes)))) -(declare build seed) +(declare build seed remember-oid) (defn- expand-associate-for-building [f] (let [mt (meta f) @@ -102,6 +103,7 @@ merged (merge { :_id (ObjectId.) } d attributes overrides) expanded (expand-all-with merged expand-for-seeding)] (assert (mr/ok? (mc/insert f-group expanded))) + (remember-oid f-group f-name (:_id expanded)) expanded))) (defn embedded-doc @@ -114,3 +116,12 @@ (with-meta (fn [] [f-group f-name]) { :associate-gen true :parent-gen true })) +(defn- remember-oid + [f-group f-name oid] + (swap! last-oids (fn [a] + (assoc-in a [(name f-group) (name f-name)] oid)))) + +(defn last-oid-of + "Returns last object id of a document inserted using given factory" + [f-group f-name] + (get-in @last-oids [(name f-group) (name f-name)])) diff --git a/test/monger/test/factory_dsl.clj b/test/monger/test/factory_dsl.clj index 5408116..53b57c8 100644 --- a/test/monger/test/factory_dsl.clj +++ b/test/monger/test/factory_dsl.clj @@ -90,6 +90,7 @@ doc (seed "domains" "clojure" :created-at t)] (is (= 1 (mc/count "domains"))) (is (:_id doc)) + (is (= (:_id doc) (last-oid-of "domains" "clojure"))) (is (= t (:created-at doc))) (is (= "clojure.org" (:name doc))) (is (false? (:ipv6-enabled doc)))))