From 3fdaffa08dea2e2806c044b7b21d86823fe2a73b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=B6nke=20Hahn?= Date: Mon, 18 Jan 2016 12:29:33 +0100 Subject: [PATCH] servant-mock: add simple test case --- servant-mock/servant-mock.cabal | 6 ++++- servant-mock/test/Servant/MockSpec.hs | 34 +++++++++++++++++++++++++-- 2 files changed, 37 insertions(+), 3 deletions(-) diff --git a/servant-mock/servant-mock.cabal b/servant-mock/servant-mock.cabal index 5c2470a3..285927dc 100644 --- a/servant-mock/servant-mock.cabal +++ b/servant-mock/servant-mock.cabal @@ -58,5 +58,9 @@ test-suite spec build-depends: base, hspec, + hspec-wai, + QuickCheck, servant, - servant-mock + servant-server, + servant-mock, + aeson diff --git a/servant-mock/test/Servant/MockSpec.hs b/servant-mock/test/Servant/MockSpec.hs index c7d08307..34c94304 100644 --- a/servant-mock/test/Servant/MockSpec.hs +++ b/servant-mock/test/Servant/MockSpec.hs @@ -1,12 +1,42 @@ +{-# LANGUAGE DataKinds #-} +{-# LANGUAGE DeriveAnyClass #-} +{-# LANGUAGE DeriveGeneric #-} +{-# LANGUAGE OverloadedStrings #-} +{-# LANGUAGE TypeOperators #-} module Servant.MockSpec where -import Test.Hspec +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 +import Servant import Servant.API.Internal.Test.ComprehensiveAPI import Servant.Mock _ = mock comprehensiveAPI +data Body + = Body + | ArbitraryBody + deriving (Generic, ToJSON) + +instance Arbitrary Body where + arbitrary = return ArbitraryBody + spec :: Spec -spec = return () +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 + }