couchdb-conduit-0.1.0.0: test/Database/CouchDB/Conduit/Test/View.hs
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE DeriveDataTypeable #-}
{-# LANGUAGE ScopedTypeVariables #-}
module Database.CouchDB.Conduit.Test.View where
import Test.Framework (testGroup, mutuallyExclusive, Test)
import Test.Framework.Providers.HUnit (testCase)
import Test.HUnit (Assertion)
--import Control.Monad.Trans.Class (lift)
import Control.Monad.IO.Class (liftIO)
import Data.Generics (Data, Typeable)
import Data.Conduit
import qualified Data.Conduit.List as CL
import Database.CouchDB.Conduit
import Database.CouchDB.Conduit.View
import Control.Monad.Trans.Reader (runReaderT)
tests :: Test
tests = mutuallyExclusive $ testGroup "View" [
testCase "Basic" case_basicViewM
-- testCase "Basic" case_basicView,
-- testCase "Basic with reduce" case_basicViewReduce
]
data T = T {
kind :: String,
intV :: Int,
strV :: String
} deriving (Show, Eq, Data, Typeable)
case_manip :: Assertion
case_manip = runCouch conn $ do
r' <- couchViewPut "test" "group3" "javascript"
"function(doc) {emit(null, doc);}" Nothing
r'' <- couchViewPut "test1" "group3" "javascript"
"function(doc) {emit(null, doc);}" Nothing
liftIO $ print (r', r'')
case_basicViewM :: Assertion
case_basicViewM = withCouchConnection conn . runReaderT . runResourceT $ do
s <- couchView "test" "group1" [("reduce", Just "false")]
_ <- s $= (CL.mapM (liftIO . print)) $$ CL.consume
s' <- couchView "test" "group1" [("reduce", Just "false")]
_ <- s' $= rowValue $$ CL.mapM_ (liftIO . print)
res' <- couchView' "test" "group1" [("reduce", Just "false")] $
rowValue =$ CL.consume
liftIO $ print res'
case_basicView :: Assertion
case_basicView = runCouch conn $ do
_ <- couchView' "test" "group1" [("reduce", Just "false")] $
(CL.mapM (liftIO . print)) =$ CL.consume
_ <- couchView' "test" "group1" [("reduce", Just "false")] $
rowValue =$ CL.mapM_ (liftIO . print)
res' <- couchView' "test" "group1" [("reduce", Just "false")] $
rowValue =$ CL.consume
liftIO $ print res'
case_basicViewReduce :: Assertion
case_basicViewReduce = runCouch conn $ do
res <- couchView' "test" "group1" [] $
CL.mapM (liftIO . print) =$ CL.consume
liftIO $ print res
conn :: CouchConnection
conn = def {couchDB = "cdbc_test"}