CommentSpec.hs 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. {-# LANGUAGE NoImplicitPrelude #-}
  2. {-# LANGUAGE OverloadedStrings #-}
  3. module Handler.CommentSpec (spec) where
  4. import TestImport
  5. import Data.Aeson
  6. spec :: Spec
  7. spec = withApp $ do
  8. describe "valid request" $ do
  9. it "gives a 200" $ do
  10. get HomeR
  11. statusIs 200
  12. let message = "My message" :: Text
  13. body = object [ "message" .= message ]
  14. encoded = encode body
  15. request $ do
  16. setMethod "POST"
  17. setUrl CommentR
  18. setRequestBody encoded
  19. addRequestHeader ("Content-Type", "application/json")
  20. statusIs 200
  21. [Entity _id comment] <- runDB $ selectList [CommentMessage ==. message] []
  22. assertEq "Should have " comment (Comment message Nothing)
  23. describe "invalid requests" $ do
  24. it "400s when the JSON body is invalid" $ do
  25. get HomeR
  26. let body = object [ "foo" .= ("My message" :: Value) ]
  27. request $ do
  28. setMethod "POST"
  29. setUrl CommentR
  30. setRequestBody $ encode body
  31. addRequestHeader ("Content-Type", "application/json")
  32. statusIs 400