packages feed

network-wait-0.1.1.0: test-postgres/Spec.hs

-------------------------------------------------------------------------------
-- network-wait
-- Copyright 2022 Michael B. Gale (github@michael-gale.co.uk)
-------------------------------------------------------------------------------

{-# LANGUAGE TypeApplications #-}

import Control.Monad.Catch
import Control.Retry

import Database.PostgreSQL.Simple

import Test.Tasty
import Test.Tasty.HUnit

import Network.Wait.PostgreSQL

-------------------------------------------------------------------------------

tests :: TestTree
tests = testGroup "Network.Wait.PostgreSQL"
    [ testCase "Can't connect to server that doesn't exist" $ do
        res <- try @IO @SomeException $
            waitPostgreSql retryPolicyDefault defaultConnectInfo{
                connectHost = "doesnotexist"
            }

        case res of
            Left _ -> pure ()
            Right _ -> assertFailure "`waitPostgreSql` did not fail"
    , testCase "Can connect to server that does exist" $ do
            let policy = limitRetries 5 <> exponentialBackoff (2*1000*1000)
            res <- try @IO @SomeException $
                waitPostgreSqlVerbose putStrLn policy defaultConnectInfo

            case res of
                Left ex -> assertFailure $
                    "`waitPostgreSql` caused an exception: " <> show ex
                Right _ -> pure ()
    ]

-- | `main` is the entry point to this test suite.
main :: IO ()
main = defaultMain tests

-------------------------------------------------------------------------------