packages feed

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
@@ -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` []