sydtest-yesod-0.3.0.2: A yesod companion library for sydtest
Safe HaskellSafe-Inferred
LanguageHaskell2010

Test.Syd.Yesod.E2E

Synopsis

Documentation

yesodE2ESpec :: URI -> YesodSpec (E2E site) -> Spec Source #

Run an end-to-end yesod test suite against a remote server at the given URI.

If you would like to write tests that can be run against both a local and a remote instance of your site, you can use the following type:

mySpec :: (Yesod site, RedirectUrl site (Route App)) => YesodSpec site
mySpec = do
  it "responds 200 OK to GET HomeR" $ do
    get HomeR
    statusIs 200

yesodE2ESpec' :: URI -> YesodSpec (E2E site) -> TestDef '[Manager] () Source #

Like yesodE2ESpec, but doesn't set up the Manager for you.

If you are running the end-to-end test against a server that uses https://, make sure to use a TLS-enabled Manager.

You can do this using beforeAll newTlsManager.

localToE2EClient :: YesodClient site -> YesodClient (E2E site) Source #

Turn a local 'YesodClient site' into a remote 'YesodClient (E2E site)'.

localToE2ESpec :: YesodSpec (E2E site) -> YesodSpec site Source #

See localToE2EClient

Turn an end-to-end yesod test suite into a local yesod test suite by treating a local instance as remote.

data E2E site Source #

A dummy type that is an instance of Yesod, with as a phantom type, the app that it represents.

That is to say, E2E site is an instance of Yesod that pretends to be a site. You can treat it as a site in end-to-end tests, except that you cannot use the site value because there is none in there.

Constructors

E2E 

Instances

Instances details
Generic (E2E site) Source # 
Instance details

Defined in Test.Syd.Yesod.E2E

Associated Types

type Rep (E2E site) :: Type -> Type #

Methods

from :: E2E site -> Rep (E2E site) x #

to :: Rep (E2E site) x -> E2E site #

Generic (Route (E2E site)) Source # 
Instance details

Defined in Test.Syd.Yesod.E2E

Associated Types

type Rep (Route (E2E site)) :: Type -> Type #

Methods

from :: Route (E2E site) -> Rep (Route (E2E site)) x #

to :: Rep (Route (E2E site)) x -> Route (E2E site) #

Show (E2E site) Source # 
Instance details

Defined in Test.Syd.Yesod.E2E

Methods

showsPrec :: Int -> E2E site -> ShowS #

show :: E2E site -> String #

showList :: [E2E site] -> ShowS #

Show (Route site) => Show (Route (E2E site)) Source # 
Instance details

Defined in Test.Syd.Yesod.E2E

Methods

showsPrec :: Int -> Route (E2E site) -> ShowS #

show :: Route (E2E site) -> String #

showList :: [Route (E2E site)] -> ShowS #

Eq (E2E site) Source # 
Instance details

Defined in Test.Syd.Yesod.E2E

Methods

(==) :: E2E site -> E2E site -> Bool #

(/=) :: E2E site -> E2E site -> Bool #

Eq (Route site) => Eq (Route (E2E site)) Source # 
Instance details

Defined in Test.Syd.Yesod.E2E

Methods

(==) :: Route (E2E site) -> Route (E2E site) -> Bool #

(/=) :: Route (E2E site) -> Route (E2E site) -> Bool #

Yesod site => Yesod (E2E site) Source # 
Instance details

Defined in Test.Syd.Yesod.E2E

Methods

approot :: Approot (E2E site) #

catchHandlerExceptions :: MonadUnliftIO m => E2E site -> m a -> (SomeException -> m a) -> m a #

errorHandler :: ErrorResponse -> HandlerFor (E2E site) TypedContent #

defaultLayout :: WidgetFor (E2E site) () -> HandlerFor (E2E site) Html #

urlParamRenderOverride :: E2E site -> Route (E2E site) -> [(Text, Text)] -> Maybe Builder #

isAuthorized :: Route (E2E site) -> Bool -> HandlerFor (E2E site) AuthResult #

isWriteRequest :: Route (E2E site) -> HandlerFor (E2E site) Bool #

authRoute :: E2E site -> Maybe (Route (E2E site)) #

cleanPath :: E2E site -> [Text] -> Either [Text] [Text] #

joinPath :: E2E site -> Text -> [Text] -> [(Text, Text)] -> Builder #

addStaticContent :: Text -> Text -> ByteString -> HandlerFor (E2E site) (Maybe (Either Text (Route (E2E site), [(Text, Text)]))) #

maximumContentLength :: E2E site -> Maybe (Route (E2E site)) -> Maybe Word64 #

maximumContentLengthIO :: E2E site -> Maybe (Route (E2E site)) -> IO (Maybe Word64) #

makeLogger :: E2E site -> IO Logger #

messageLoggerSource :: E2E site -> Logger -> Loc -> LogSource -> LogLevel -> LogStr -> IO () #

jsLoader :: E2E site -> ScriptLoadPosition (E2E site) #

jsAttributes :: E2E site -> [(Text, Text)] #

jsAttributesHandler :: HandlerFor (E2E site) [(Text, Text)] #

makeSessionBackend :: E2E site -> IO (Maybe SessionBackend) #

fileUpload :: E2E site -> RequestBodyLength -> FileUpload #

shouldLogIO :: E2E site -> LogSource -> LogLevel -> IO Bool #

yesodMiddleware :: ToTypedContent res => HandlerFor (E2E site) res -> HandlerFor (E2E site) res #

yesodWithInternalState :: E2E site -> Maybe (Route (E2E site)) -> (InternalState -> IO a) -> IO a #

defaultMessageWidget :: Html -> HtmlUrl (Route (E2E site)) -> WidgetFor (E2E site) () #

ParseRoute site => ParseRoute (E2E site) Source # 
Instance details

Defined in Test.Syd.Yesod.E2E

Methods

parseRoute :: ([Text], [(Text, Text)]) -> Maybe (Route (E2E site)) #

(Eq (Route site), RenderRoute site) => RenderRoute (E2E site) Source # 
Instance details

Defined in Test.Syd.Yesod.E2E

Associated Types

data Route (E2E site) #

Methods

renderRoute :: Route (E2E site) -> ([Text], [(Text, Text)]) #

RenderRoute site => RedirectUrl (E2E site) (Route site) Source # 
Instance details

Defined in Test.Syd.Yesod.E2E

Methods

toTextUrl :: (MonadHandler m, HandlerSite m ~ E2E site) => Route site -> m Text #

type Rep (E2E site) Source # 
Instance details

Defined in Test.Syd.Yesod.E2E

type Rep (E2E site) = D1 ('MetaData "E2E" "Test.Syd.Yesod.E2E" "sydtest-yesod-0.3.0.2-KtanN3rUmDp9Q8nAuuA5iX" 'False) (C1 ('MetaCons "E2E" 'PrefixI 'False) (U1 :: Type -> Type))
type Rep (Route (E2E site)) Source # 
Instance details

Defined in Test.Syd.Yesod.E2E

type Rep (Route (E2E site)) = D1 ('MetaData "Route" "Test.Syd.Yesod.E2E" "sydtest-yesod-0.3.0.2-KtanN3rUmDp9Q8nAuuA5iX" 'False) (C1 ('MetaCons "E2ERoute" 'PrefixI 'True) (S1 ('MetaSel ('Just "unE2ERoute") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Route site))))
data Route (E2E site) Source # 
Instance details

Defined in Test.Syd.Yesod.E2E

data Route (E2E site) = E2ERoute {}