From 97f537d1765aaa71f4b2747c584baeb61a5b07f4 Mon Sep 17 00:00:00 2001 From: "Michael S. Klishin" Date: Sun, 14 Aug 2011 05:15:46 +0400 Subject: [PATCH] Apparently MongoDB returns "ok" as 1.0 --- src/monger/errors.clj | 16 ++++++++++++---- test/monger/test/errors.clj | 11 +++++++---- 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/src/monger/errors.clj b/src/monger/errors.clj index 5a8f104..039faee 100644 --- a/src/monger/errors.clj +++ b/src/monger/errors.clj @@ -1,5 +1,5 @@ (ns monger.errors - (:import (com.mongodb DBObject WriteResult CommandResult) + (:import (com.mongodb DBObject WriteResult) (clojure.lang IPersistentMap)) (:require [monger convertion])) @@ -8,9 +8,17 @@ ;; API ;; -(defn ^boolean ok? - [^DBObject result] - (.contains [true "true" 1] (.get result "ok"))) +(defprotocol MongoCommandResult + (ok? [input] "Returns true if command result is a success")) +(extend-protocol MongoCommandResult + DBObject + (ok? + [^DBObject result] + (.contains [true "true" 1 1.0] (.get result "ok"))) + WriteResult + (ok? + [^WriteResult result] + (ok? (.getLastError result)))) diff --git a/test/monger/test/errors.clj b/test/monger/test/errors.clj index 866cf16..ed8d7c2 100644 --- a/test/monger/test/errors.clj +++ b/test/monger/test/errors.clj @@ -1,20 +1,23 @@ (ns monger.test.errors - (:import (com.mongodb BasicDBObject)) + (:import (com.mongodb BasicDBObject WriteResult WriteConcern)) (:require [monger core collection convertion]) (:use [clojure.test])) ;; -;; ok? +;; MongoCommandResult ;; + (deftest test-ok? (let [result-that-is-not-ok-1 (doto (BasicDBObject.) (.put "ok" 0)) result-that-is-not-ok-2 (doto (BasicDBObject.) (.put "ok" "false")) result-that-is-ok-1 (doto (BasicDBObject.) (.put "ok" 1)) - result-that-is-ok-2 (doto (BasicDBObject.) (.put "ok" "true"))] + result-that-is-ok-2 (doto (BasicDBObject.) (.put "ok" "true")) + result-that-is-ok-3 (doto (BasicDBObject.) (.put "ok" 1.0))] (is (not (monger.errors/ok? result-that-is-not-ok-1))) (is (not (monger.errors/ok? result-that-is-not-ok-2))) (is (monger.errors/ok? result-that-is-ok-1)) - (is (monger.errors/ok? result-that-is-ok-2)))) + (is (monger.errors/ok? result-that-is-ok-2)) + (is (monger.errors/ok? result-that-is-ok-3))))