packages feed

hspec-yesod-0.3.0.0: src/Test/Hspec/Yesod/Internal.hs

-- | This module exposes functions that are used internally by yesod-test. The functions exposed here are _not_ a stable API—they may be changed or removed without any major version bump.
--
-- That said, you may find them useful if your application can accept API breakage.
module Test.Hspec.Yesod.Internal
    ( RequestBuilderData(..)
    , RBDPostData(..)
    , RequestPart(..)
    , voidRequestBuilderUrl
    ) where

import qualified Data.Text as T
import qualified Data.ByteString.Lazy.Char8 as BSL8
import qualified Network.HTTP.Types as H
import Network.Wai.Test hiding (assertHeader, assertNoHeader, request)

data RequestBuilderData url site = RequestBuilderData
    { rbdPostData :: RBDPostData
    , rbdResponse :: (Maybe SResponse)
    , rbdMethod :: H.Method
    , rbdSite :: site
    , rbdUrl :: Maybe url
    , rbdPath :: [T.Text]
    , rbdGets :: H.Query
    , rbdHeaders :: H.RequestHeaders
    }

voidRequestBuilderUrl :: RequestBuilderData url site -> RequestBuilderData () site
voidRequestBuilderUrl rbd =
    rbd
        { rbdUrl = () <$ rbdUrl rbd
        }

data RBDPostData = MultipleItemsPostData [RequestPart]
                 | BinaryPostData BSL8.ByteString

-- | Request parts let us discern regular key/values from files sent in the request.
data RequestPart
  = ReqKvPart T.Text T.Text
  | ReqFilePart T.Text FilePath BSL8.ByteString T.Text