packages feed

sandwich-contexts-0.3.0.0: test/Spec/NixContexts/PostgreSQL.hs

{-# LANGUAGE CPP #-}

module Spec.NixContexts.PostgreSQL where

#ifdef mingw32_HOST_OS

import Relude
import Test.Sandwich

tests :: TopSpec
tests = describe "PostgreSQL Nix" $ do
  it "works" pending

#else

import Data.String.Interpolate
import Database.PostgreSQL.Simple (Only(..), connectPostgreSQL, query_)
import Relude
import Test.Sandwich
import Test.Sandwich.Contexts.Nix
import Test.Sandwich.Contexts.PostgreSQL


tests :: TopSpec
tests = describe "PostgreSQL Nix" $ do
  introduceNixContext nixpkgsReleaseDefault $ do
    introducePostgresUnixSocketViaNix defaultPostgresNixOptions $ do
      it "should have a working postgres Unix socket" $ do
        ctx@(PostgresContext {..}) <- getContext postgres
        info [i|Got context: #{ctx}|]
        selectTwoPlusTwo (encodeUtf8 postgresConnString) >>= (`shouldBe` 4)



selectTwoPlusTwo :: MonadIO m => ByteString -> m Int
selectTwoPlusTwo connString = liftIO $ do
  conn <- connectPostgreSQL connString
  [Only n] <- query_ conn "select 2 + 2"
  return n
#endif