|
7 | 7 | [clj-time.format :as f] |
8 | 8 | [clj-time.coerce :as c]) |
9 | 9 | (:use midje.sweet) |
10 | | - (:import (com.mongodb MongoQueryException))) |
| 10 | + (:import (com.mongodb MongoQueryException WriteResult))) |
11 | 11 |
|
12 | 12 | ;; Test run-command-transform() |
13 | 13 | (against-background |
|
285 | 285 | (execute {} "testdb" "db.timeDocs.find({ time: { $lt: new ISODate('2017-02-15T00:00:00.000Z') } }).count()") => 1 |
286 | 286 | (execute {} "testdb" "db.timeDocs.find({ time: { $lte: new ISODate('2017-02-15T00:00:00.000Z') } }).count()") => 2 |
287 | 287 | (execute {} "testdb" "db.timeDocs.find({ time: { $lt: new ISODate('2017-02-17') } }).count()") => 2)) |
| 288 | + |
| 289 | +;; Test collect-command-transform() with insert() |
| 290 | +(against-background |
| 291 | + [(before :contents |
| 292 | + (let [conn (mg/connect) |
| 293 | + db (mg/get-db conn "testdb")] |
| 294 | + (if db (mc/drop db "documents")))) |
| 295 | + (after :contents |
| 296 | + (let [conn (mg/connect)] |
| 297 | + (mg/drop-db conn "testdb")))] |
| 298 | + |
| 299 | + (fact "Monglorious inserts a document" |
| 300 | + (execute {} "testdb" "db.documents.insert({name: 'TEST'})") => #(= "TEST" (get % "name")) |
| 301 | + (execute {} "testdb" "db.documents.insert({name: 'DOCUMENT'})") => (fn [_] |
| 302 | + (let [conn (mg/connect) |
| 303 | + db (mg/get-db conn "testdb") |
| 304 | + docs (mc/find-maps db "documents")] |
| 305 | + (and (= 2 (count docs)) |
| 306 | + (= #{"TEST" "DOCUMENT"} (set (map :name docs))))))) |
| 307 | + |
| 308 | + (fact "Monglorious inserts several documents" |
| 309 | + (execute {} "testdb" "db.documents.insert([{name: 'BATCH 1'}, {name: 'BATCH 2'}])") => (fn [_] |
| 310 | + (let [conn (mg/connect) |
| 311 | + db (mg/get-db conn "testdb") |
| 312 | + docs (mc/find-maps db "documents")] |
| 313 | + (and (= 4 (count docs)) |
| 314 | + (= #{"TEST" "DOCUMENT" "BATCH 1" "BATCH 2"} (set (map :name docs))))))) |
| 315 | + |
| 316 | + (fact "Monglorious insertOnes a document" |
| 317 | + (execute {} "testdb" "db.documents.insertOne({name: 'ONE'})") => #(= "ONE" (get % "name")) |
| 318 | + (execute {} "testdb" "db.documents.insertOne({name: 'TWO'})") => (fn [_] |
| 319 | + (let [conn (mg/connect) |
| 320 | + db (mg/get-db conn "testdb") |
| 321 | + docs (mc/find-maps db "documents")] |
| 322 | + (and (= 6 (count docs)) |
| 323 | + (= #{"TEST" "DOCUMENT" "BATCH 1" "BATCH 2" "ONE" "TWO"} (set (map :name docs)))))))) |
0 commit comments