- Share server code in Main - Switch to hasql-pool - Use pool in tests - DRY up test runner
46 lines
1.4 KiB
Haskell
46 lines
1.4 KiB
Haskell
module Main where
|
|
|
|
import Test.Hspec
|
|
import SpecHelper
|
|
|
|
import qualified Hasql.Pool as P
|
|
|
|
import PostgREST.DbStructure (getDbStructure)
|
|
import PostgREST.Main (postgrest)
|
|
import Data.String.Conversions (cs)
|
|
|
|
import qualified Feature.AuthSpec
|
|
import qualified Feature.ConcurrentSpec
|
|
import qualified Feature.CorsSpec
|
|
import qualified Feature.DeleteSpec
|
|
import qualified Feature.InsertSpec
|
|
import qualified Feature.QueryLimitedSpec
|
|
import qualified Feature.QuerySpec
|
|
import qualified Feature.RangeSpec
|
|
import qualified Feature.StructureSpec
|
|
|
|
main :: IO ()
|
|
main = do
|
|
setupDb
|
|
|
|
pool <- P.acquire (10, 10, cs dbString)
|
|
|
|
result <- P.use pool $ getDbStructure "test"
|
|
let dbStructure = either (error.show) id result
|
|
withApp = ($ postgrest cfgDefault dbStructure pool)
|
|
|
|
hspec . sequence_ . map (around withApp) $ specs
|
|
|
|
where
|
|
specs = map (uncurry describe) [
|
|
("Feature.AuthSpec" , Feature.AuthSpec.spec)
|
|
, ("Feature.ConcurrentSpec" , Feature.ConcurrentSpec.spec)
|
|
, ("Feature.CorsSpec" , Feature.CorsSpec.spec)
|
|
, ("Feature.DeleteSpec" , Feature.DeleteSpec.spec)
|
|
, ("Feature.InsertSpec" , Feature.InsertSpec.spec)
|
|
, ("Feature.QueryLimitedSpec" , Feature.QueryLimitedSpec.spec)
|
|
, ("Feature.QuerySpec" , Feature.QuerySpec.spec)
|
|
, ("Feature.RangeSpec" , Feature.RangeSpec.spec)
|
|
, ("Feature.StructureSpec" , Feature.StructureSpec.spec)
|
|
]
|