packages feed

tmp-proc-rabbitmq-0.5.0.0: test/Test/TmpProc/Docker/RabbitMQSpec.hs

{-# LANGUAGE DataKinds         #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TypeApplications  #-}
module Test.TmpProc.Docker.RabbitMQSpec where

import           Test.Hspec
import           Test.Hspec.TmpProc

import           Data.Proxy                     (Proxy (..))
import qualified Data.Text                      as Text

import           System.TmpProc.Docker.RabbitMQ


spec :: Spec
spec = tdescribe desc $ do
  beforeAll setupHandles $ afterAll terminateAll $ do

    context "when using the Proc from the HList by its 'Name'" $ do

      context "ixPing" $ do

        it "should succeed" $ \hs
          -> ixPing @"a-rabbitmq-server" Proxy hs `shouldReturn` OK

      context "ixReset" $ do

        it "should succeed" $ \hs
          -> ixReset @"a-rabbitmq-server" Proxy hs `shouldReturn` ()


setupHandles :: IO (HList '[ProcHandle TmpRabbitMQ])
setupHandles = startupAll $ testProc `HCons` HNil


testProc :: TmpRabbitMQ
testProc = TmpRabbitMQ


desc :: String
desc = "Tmp.Proc:RabbitMQ:" ++ Text.unpack (nameOf testProc)