packages feed

pqi-conformance-0.0.1.0: src/library/Pqi/Conformance/Operation/Finish.hs

-- | Coverage for 'Pqi.finish': closing a connection releases it without
-- error, whether the connection was open or the null sentinel.
module Pqi.Conformance.Operation.Finish
  ( spec,
  )
where

import Pqi (IsConnection (..))
import Pqi.Conformance.Harness
import Pqi.Conformance.Prelude
import Test.Hspec

spec :: (IsConnection c) => Proxy c -> SpecWith ByteString
spec proxy =
  describe "finish" do
    it "closes an open connection cleanly" \conninfo ->
      differentialConnect proxy conninfo \(_ :: Proxy c) conninfo' -> do
        connection <- connectdb conninfo' :: IO c
        before <- status connection
        finish connection
        pure before

    it "closes the null sentinel cleanly" \conninfo ->
      differentialConnect proxy conninfo \(_ :: Proxy c) _ -> do
        connection <- newNullConnection :: IO c
        finish connection
        pure ()