packages feed

airship-0.9.4: test/unit/test.hs

{-# LANGUAGE OverloadedStrings #-}
module Main where

import Airship (requestBody, entireRequestBody, defaultRequest)
import Control.Concurrent (newMVar, modifyMVar)
import Data.ByteString (ByteString)

import Test.Tasty
import Test.Tasty.HUnit

main :: IO ()
main = defaultMain tests

tests :: TestTree
tests = testGroup "Tests" [examples]

examples :: TestTree
examples = testGroup "Examples" [exampleTests]

exampleTests :: TestTree
exampleTests = testGroup "ExampleTests"
  [ bodyTest ]

bodyChunks :: [ByteString]
bodyChunks = ["one", "two", "three", "four", "five"]

bodyChunksIO :: IO (IO ByteString)
bodyChunksIO = do
    v <- newMVar bodyChunks
    return $ modifyMVar v (\l -> return $ case l of { [] -> ([], ""); h : t -> (t, h) })

bodyTest :: TestTree
bodyTest = testCase "entireRequestBody returns the body in the correct order" $ do
    nextBody <- bodyChunksIO
    b <- entireRequestBody defaultRequest { requestBody = nextBody }
    b @?= "onetwothreefourfive"