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