dbcleaner 0.1.1 → 0.1.2
raw patch · 3 files changed
+69/−4 lines, 3 filesdep ~basesetup-changednew-uploaderPVP ok
version bump matches the API change (PVP)
Dependency ranges changed: base
API changes (from Hackage documentation)
Files
- Setup.hs +0/−2
- dbcleaner.cabal +5/−2
- test/Database/DBCleaner/PostgreSQLSimpleSpec.hs +64/−0
− Setup.hs
@@ -1,2 +0,0 @@-import Distribution.Simple-main = defaultMain
dbcleaner.cabal view
@@ -1,5 +1,5 @@ name: dbcleaner-version: 0.1.1+version: 0.1.2 synopsis: Clean database tables automatically around hspec tests description: A simple database cleaner library for testing that provides different cleanup strategies.@@ -14,7 +14,7 @@ library exposed-modules: Database.DBCleaner.PostgreSQLSimple , Database.DBCleaner.Types- build-depends: base >=4.4 && <4.9+ build-depends: base >=4.4 && <4.10 , postgresql-simple , text hs-source-dirs: src@@ -22,6 +22,9 @@ test-suite spec type: exitcode-stdio-1.0+ other-modules: Database.DBCleaner.PostgreSQLSimple+ , Database.DBCleaner.PostgreSQLSimpleSpec+ , Database.DBCleaner.Types build-depends: base , hspec , postgresql-simple
+ test/Database/DBCleaner/PostgreSQLSimpleSpec.hs view
@@ -0,0 +1,64 @@+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}++module Database.DBCleaner.PostgreSQLSimpleSpec where++import Control.Applicative ((<$>), (<*>))+import Control.Monad (void)+import Data.Text (Text)+import Database.PostgreSQL.Simple (Connection,+ connectPostgreSQL,+ execute, query_)+import Database.PostgreSQL.Simple.FromRow+import Database.PostgreSQL.Simple.ToField+import Database.PostgreSQL.Simple.ToRow+import Test.Hspec++import Database.DBCleaner.PostgreSQLSimple (withConnection)+import Database.DBCleaner.Types (Strategy (..))++data User = User+ { userName :: Text+ , userEmail :: Text+ } deriving (Show, Eq)++instance FromRow User where+ fromRow = User <$> field+ <*> field++instance ToRow User where+ toRow User{..} = [ toField userName+ , toField userEmail+ ]++withTestConnection :: Strategy -> (Connection -> IO a) -> IO a+withTestConnection s f = connectPostgreSQL "dbname=dbcleaner" >>= withConnection s f++createUser :: Connection -> User -> IO ()+createUser c = void . execute c "INSERT INTO users (name, email) VALUES (?, ?)"++listUsers :: Connection -> IO [User]+listUsers c = query_ c "SELECT name, email FROM users"++spec :: Spec+spec =+ describe "withPGConnection" $ do+ context "when strategy is Transaction" $+ it "deletes all records create inside the transaction" $ do+ withTestConnection Transaction $ \c -> do+ let user1 = User "user1" "user1@example.com"+ user2 = User "user2" "user2@example.com"+ mapM_ (createUser c) [user1, user2]+ listUsers c >>= shouldMatchList [user1, user2]++ withTestConnection Transaction listUsers `shouldReturn` []++ context "when strategy is Truncation" $+ it "truncates all the tables of the schema" $ do+ withTestConnection Truncation $ \c -> do+ let user1 = User "user1" "user1@example.com"+ user2 = User "user2" "user2@example.com"+ mapM_ (createUser c) [user1, user2]+ listUsers c >>= shouldMatchList [user1, user2]++ withTestConnection Truncation listUsers `shouldReturn` []