packages feed

hasql-resource-pool-0.5.3.0: test/Main.hs

module Main where

import BasePrelude
import Test.Hspec
import Hasql.Pool
import qualified Hasql.Connection as Connection
import qualified Hasql.Decoders as Decoders
import qualified Hasql.Encoders as Encoders
import qualified Hasql.Session as Session
import qualified Hasql.Statement as Statement


main = hspec $ do
  describe "Hasql.Pool.use" $ do
    it "releases a spot in the pool when there is an error" $ do
      pool <- acquire (1, 1, "host=localhost port=5432 user=postgres dbname=postgres")
      let
        statement = Statement.Statement "" Encoders.noParams Decoders.noResult True
        session = Session.statement () statement
        in do
          use pool session `shouldNotReturn` (Right ())
      let
        session = let
          statement = let
            decoder = Decoders.singleRow (Decoders.column (Decoders.nonNullable Decoders.int8))
            in Statement.Statement "SELECT 1" Encoders.noParams decoder True
          in Session.statement () statement
        in do
          use pool session `shouldReturn` (Right 1)