From 0fbfa2395bebf97b9aebd5b894f5c5499167e26a Mon Sep 17 00:00:00 2001 From: Joe Nelson Date: Sun, 17 Aug 2014 16:18:09 -0700 Subject: [PATCH] Ensure db fixtures loaded in feature specs --- dbapi.cabal | 2 +- test/Feature/RangeSpec.hs | 9 ++++----- test/SpecHelper.hs | 23 +++++++++++++++++++++++ test/Unit/PgQuerySpec.hs | 9 +-------- 4 files changed, 29 insertions(+), 14 deletions(-) create mode 100644 test/SpecHelper.hs diff --git a/dbapi.cabal b/dbapi.cabal index 2e85241a3..3f163d12d 100644 --- a/dbapi.cabal +++ b/dbapi.cabal @@ -52,7 +52,7 @@ Test-Suite spec Hs-Source-Dirs: src , test Ghc-Options: -Wall Main-Is: Spec.hs - Other-Modules: Dbapi + Other-Modules: Dbapi, SpecHelper Build-Depends: base, hspec2 , hspec-wai , HDBC, HDBC-postgresql diff --git a/test/Feature/RangeSpec.hs b/test/Feature/RangeSpec.hs index 4d6f5a26f..92ab568a4 100644 --- a/test/Feature/RangeSpec.hs +++ b/test/Feature/RangeSpec.hs @@ -5,16 +5,15 @@ import Test.Hspec import Test.Hspec.Wai import Test.Hspec.Wai.JSON -import Dbapi (AppConfig(..), app) +import SpecHelper + +import Dbapi (app) main :: IO () main = hspec spec -cfg :: AppConfig -cfg = AppConfig "postgres://postgres:@localhost:5432/dbapi_test" 9000 - spec :: Spec -spec = with (return $ app cfg) $ do +spec = with (prepareAppDb "schema" $ app cfg) $ do describe "GET /" $ do it "responds with 200" $ do get "/" `shouldRespondWith` 200 diff --git a/test/SpecHelper.hs b/test/SpecHelper.hs new file mode 100644 index 000000000..ee26e0420 --- /dev/null +++ b/test/SpecHelper.hs @@ -0,0 +1,23 @@ +module SpecHelper where + +import Network.Wai + +import Database.HDBC +import Database.HDBC.PostgreSQL + +import Dbapi (AppConfig(..)) + +cfg :: AppConfig +cfg = AppConfig "postgres://postgres:@localhost:5432/dbapi_test" 9000 + +loadFixture :: String -> IO Connection +loadFixture name = do + conn <- connectPostgreSQL $ configDbUri cfg + sql <- readFile $ "test/fixtures/" ++ name ++ ".sql" + runRaw conn "drop schema if exists \"1\" cascade" + runRaw conn sql + commit conn + return conn + +prepareAppDb :: String -> Application -> IO Application +prepareAppDb = (. return) . (>>) . loadFixture diff --git a/test/Unit/PgQuerySpec.hs b/test/Unit/PgQuerySpec.hs index 0f47f7284..502c6ae2d 100644 --- a/test/Unit/PgQuerySpec.hs +++ b/test/Unit/PgQuerySpec.hs @@ -5,18 +5,11 @@ module Unit.PgQuerySpec where import Test.Hspec import Database.HDBC -import Database.HDBC.PostgreSQL import PgQuery (insert) import Types (SqlRow(..)) -loadFixture :: String -> IO Connection -loadFixture name = do - conn <- connectPostgreSQL "postgres://postgres:@localhost:5432/dbapi_test" - sql <- readFile $ "test/fixtures/" ++ name ++ ".sql" - runRaw conn "drop schema if exists \"1\" cascade" - runRaw conn sql - return conn +import SpecHelper main :: IO () main = hspec spec