Added missing test file

This commit is contained in:
Michael Snoyman 2013-03-10 09:43:21 +02:00
parent b8a8000ac7
commit 90252618d6

47
yesod-json/test/Spec.hs Normal file
View File

@ -0,0 +1,47 @@
{-# LANGUAGE OverloadedStrings, TemplateHaskell, QuasiQuotes, TypeFamilies, MultiParamTypeClasses #-}
import Yesod.Core
import Yesod.Json
import Test.Hspec
import qualified Data.Map as Map
import Network.Wai.Test
import Data.Text (Text)
data App = App
mkYesod "App" [parseRoutes|
/ HomeR GET
|]
instance Yesod App
getHomeR :: Handler RepPlain
getHomeR = do
val <- parseJsonBody_
case Map.lookup ("foo" :: Text) val of
Nothing -> invalidArgs ["foo not found"]
Just foo -> return $ RepPlain $ toContent (foo :: Text)
main :: IO ()
main = do
app <- toWaiApp App
hspec $ describe "Yesod.Json" $ do
it "parses valid content" $ flip runSession app $ do
sres <- srequest SRequest
{ simpleRequest = defaultRequest
, simpleRequestBody = "{\"foo\":\"bar\"}"
}
assertStatus 200 sres
assertBody "bar" sres
it "400 for bad JSON" $ flip runSession app $ do
sres <- srequest SRequest
{ simpleRequest = defaultRequest
, simpleRequestBody = "{\"foo\":\"bar\""
}
assertStatus 400 sres
it "400 for bad structure" $ flip runSession app $ do
sres <- srequest SRequest
{ simpleRequest = defaultRequest
, simpleRequestBody = "{\"foo2\":\"bar\"}"
}
assertStatus 400 sres
assertBodyContains "foo not found" sres