12345678910111213141516171819202122232425262728293031323334 |
- {-# LANGUAGE OverloadedStrings #-}
- module RawMongoHelpers where
- import qualified Database.MongoDB as MongoDB
- import Database.Persist.MongoDB (toInsertDoc, docToEntityThrow, collectionName, recordToDocument)
- import MongoInit
- import PersistentTest (cleanDB)
- import PersistentTestModels
- db :: ReaderT MongoDB.MongoContext IO () -> IO ()
- db = db' cleanDB
- specs :: Spec
- specs = do
- describe "raw MongoDB helpers" $ do
- it "collectionName" $ do
- collectionName (Person "Duder" 0 Nothing) @?= "Person"
- it "toInsertFields, entityFields, & docToEntityThrow" $ db $ do
- let p1 = Person "Duder" 0 Nothing
- let doc = toInsertDoc p1
- MongoDB.ObjId _id <- MongoDB.insert "Person" $ doc
- let idSelector = "_id" MongoDB.=: _id
- Entity _ ent1 <- docToEntityThrow $ idSelector:doc
- liftIO $ p1 @?= ent1
- let p2 = p1 {personColor = Just "blue"}
- let doc2 = idSelector:recordToDocument p2
- MongoDB.save "Person" doc2
- Entity _ ent2 <- docToEntityThrow doc2
- liftIO $ p2 @?= ent2
|