packages feed

pg-entity-0.0.2.0: test/Main.hs

module Main where

import Data.Pool (createPool, withResource)
import qualified Database.PostgreSQL.Simple as PG
import qualified Database.Postgres.Temp as Postgres.Temp
import qualified EntitySpec
import qualified GenericsSpec
import Optics.Core
import Test.Tasty (TestTree, defaultMain, testGroup)
import Utils

main :: IO ()
main = do
  env <- getTestEnvironment
  withResource (env ^. #pool) migrate
  spec <- traverse (`runTestM` env) specs
  defaultMain . testGroup "pg-entity tests" $ spec

specs :: [TestM TestTree]
specs =
  [ GenericsSpec.spec
  , EntitySpec.spec
  ]

getTestEnvironment :: IO TestEnv
getTestEnvironment = do
  eitherDb <- Postgres.Temp.start
  case eitherDb of
    Right db -> do
      pool <-
        createPool
          (PG.connectPostgreSQL $ Postgres.Temp.toConnectionString db)
          PG.close
          1
          100000000
          50
      pure TestEnv{..}
    Left _ -> error "meh"