Apparently MongoDB returns "ok" as 1.0

This commit is contained in:
Michael S. Klishin 2011-08-14 05:15:46 +04:00
parent a073d7ed20
commit 97f537d176
2 changed files with 19 additions and 8 deletions

View file

@ -1,5 +1,5 @@
(ns monger.errors (ns monger.errors
(:import (com.mongodb DBObject WriteResult CommandResult) (:import (com.mongodb DBObject WriteResult)
(clojure.lang IPersistentMap)) (clojure.lang IPersistentMap))
(:require [monger convertion])) (:require [monger convertion]))
@ -8,9 +8,17 @@
;; API ;; API
;; ;;
(defn ^boolean ok? (defprotocol MongoCommandResult
[^DBObject result] (ok? [input] "Returns true if command result is a success"))
(.contains [true "true" 1] (.get result "ok")))
(extend-protocol MongoCommandResult
DBObject
(ok?
[^DBObject result]
(.contains [true "true" 1 1.0] (.get result "ok")))
WriteResult
(ok?
[^WriteResult result]
(ok? (.getLastError result))))

View file

@ -1,20 +1,23 @@
(ns monger.test.errors (ns monger.test.errors
(:import (com.mongodb BasicDBObject)) (:import (com.mongodb BasicDBObject WriteResult WriteConcern))
(:require [monger core collection convertion]) (:require [monger core collection convertion])
(:use [clojure.test])) (:use [clojure.test]))
;; ;;
;; ok? ;; MongoCommandResult
;; ;;
(deftest test-ok? (deftest test-ok?
(let [result-that-is-not-ok-1 (doto (BasicDBObject.) (.put "ok" 0)) (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-not-ok-2 (doto (BasicDBObject.) (.put "ok" "false"))
result-that-is-ok-1 (doto (BasicDBObject.) (.put "ok" 1)) 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-1)))
(is (not (monger.errors/ok? result-that-is-not-ok-2))) (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-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))))