44 lines
1.2 KiB
Haskell
44 lines
1.2 KiB
Haskell
|
{-# LANGUAGE NoImplicitPrelude #-}
|
||
|
{-# LANGUAGE OverloadedStrings #-}
|
||
|
module Handler.CommentSpec (spec) where
|
||
|
|
||
|
import TestImport
|
||
|
import Data.Aeson
|
||
|
|
||
|
spec :: Spec
|
||
|
spec = withApp $ do
|
||
|
describe "valid request" $ do
|
||
|
it "gives a 200" $ do
|
||
|
get HomeR
|
||
|
statusIs 200
|
||
|
|
||
|
let message = "My message" :: Text
|
||
|
body = object [ "message" .= message ]
|
||
|
encoded = encode body
|
||
|
|
||
|
request $ do
|
||
|
setMethod "POST"
|
||
|
setUrl CommentR
|
||
|
setRequestBody encoded
|
||
|
addRequestHeader ("Content-Type", "application/json")
|
||
|
|
||
|
statusIs 200
|
||
|
|
||
|
[Entity _id comment] <- runDB $ selectList [CommentMessage ==. message] []
|
||
|
assertEq "Should have " comment (Comment message Nothing)
|
||
|
|
||
|
describe "invalid requests" $ do
|
||
|
it "400s when the JSON body is invalid" $ do
|
||
|
get HomeR
|
||
|
|
||
|
let body = object [ "foo" .= ("My message" :: Value) ]
|
||
|
|
||
|
request $ do
|
||
|
setMethod "POST"
|
||
|
setUrl CommentR
|
||
|
setRequestBody $ encode body
|
||
|
addRequestHeader ("Content-Type", "application/json")
|
||
|
|
||
|
statusIs 400
|
||
|
|