peregrin-0.3.2: src-test/Main.hs
{-# LANGUAGE OverloadedStrings #-}
module Main ( main ) where
import Control.Applicative ((<$>))
import Database.PeregrinSpec ( mkMigrateSpec )
import Data.Maybe (fromMaybe)
import Data.Pool (createPool)
import qualified Database.PostgreSQL.Harness.Client as H
import Database.PostgreSQL.Simple (connectPostgreSQL, close)
import System.Environment (lookupEnv)
import Test.Hspec
main :: IO ()
main = do
-- We require an environment variable to point to a tempgres server instance.
url <- fmap
(fromMaybe (error "Missing TEMPGRES_URL environment variable"))
(lookupEnv "TEMPGRES_URL")
-- Connection pool creation function. We use a fresh temporary
-- database for every connection pool.
let mkConnectionPool = do
connectionString <- H.toConnectionString <$> H.createTemporaryDatabase url
createPool (connectPostgreSQL connectionString) close 1 1 5
-- Run
hspec $ mkMigrateSpec mkConnectionPool