sydtest-yesod-0.3.0.0: test/Test/Syd/YesodSpec.hs
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE OverloadedStrings #-}
module Test.Syd.YesodSpec (spec) where
import Data.Text (Text)
import Test.Syd
import Test.Syd.Yesod
import Test.Syd.Yesod.App
import Yesod.Core
spec :: Spec
spec = yesodSpec App $ do
describe "Local" blogSpec
describe "E2E" $ localToE2ESpec blogSpec
blogSpec :: (Yesod site, RedirectUrl site (Route App)) => YesodSpec site
blogSpec = do
it "responds 200 OK to GET HomeR" $ do
get HomeR
statusIs 200
it "responds 200 OK to GET HomeR using the request builder" $ do
request $ do
setUrl HomeR
setMethod "GET"
statusIs 200
it "responds 200 OK to GET /" $ do
get ("/" :: Text)
statusIs 200
it "responds 200 OK to POST HomeR" $ do
post HomeR
statusIs 200
it "responds 200 OK to POST HomeR using the request builder" $ do
request $ do
setUrl HomeR
setMethod "POST"
statusIs 200
it "responds 200 OK to POST /" $ do
post ("/" :: Text)
statusIs 200
it "is able to add a header" $ do
request $ do
setUrl ExpectsHeaderR
addRequestHeader ("TEST_HEADER", "test")
statusIs 200
it "is able to add a get param" $ do
request $ do
setUrl ExpectsGetParamR
addGetParam "TEST_PARAM" "test"
statusIs 200
it "is able to add a post param" $ do
request $ do
setUrl ExpectsPostParamR
setMethod "POST"
addPostParam "TEST_PARAM" "test"
statusIs 200
it "is able to add a raw post body" $ do
request $ do
setUrl ExpectsPostBodyR
setMethod "POST"
setRequestBody "test"
statusIs 200
it "is able to add a post file" $ do
request $ do
setUrl ExpectsPostFileR
setMethod "POST"
addFileWith "TEST_PARAM" "filename" "test" (Just "text/plain")
statusIs 200
it "can check for redirects" $ do
get RedirectHomeR
locationShouldBe HomeR
errOrDestination <- followRedirect
liftIO $ case errOrDestination of
Left err -> expectationFailure (show err)
Right _ -> pure ()
statusIs 200
it "retains cookies" $ do
get SetCookieR
statusIs 200
get ExpectsCookieR
statusIs 200
it "can do forms" $ do
get FormR
statusIs 200
request $ do
setUrl FormR
setMethod "POST"
addToken
addPostParam "testKey" "testVal"
statusIs 200