servant/servant-mock/test/Servant/MockSpec.hs

43 lines
1.0 KiB
Haskell
Raw Normal View History

2016-01-18 12:29:33 +01:00
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TypeOperators #-}
module Servant.MockSpec where
2016-01-18 12:29:33 +01:00
import Data.Aeson as Aeson
import Data.Proxy
import GHC.Generics
import Servant.API
import Test.Hspec hiding (pending)
import Test.Hspec.Wai
import Test.QuickCheck
2016-01-18 12:29:33 +01:00
import Servant
import Servant.API.Internal.Test.ComprehensiveAPI
import Servant.Mock
_ = mock comprehensiveAPI
2016-01-18 12:29:33 +01:00
data Body
= Body
| ArbitraryBody
deriving (Generic, ToJSON)
instance Arbitrary Body where
arbitrary = return ArbitraryBody
spec :: Spec
2016-01-18 12:29:33 +01:00
spec = do
describe "mock" $ do
context "Get" $ do
let api :: Proxy (Get '[JSON] Body)
api = Proxy
app = serve api (mock api)
with (return app) $ do
it "serves arbitrary response bodies" $ do
get "/" `shouldRespondWith` 200{
matchBody = Just $ Aeson.encode ArbitraryBody
}