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"