123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- {-# LANGUAGE TemplateHaskell, QuasiQuotes, TypeFamilies, OverloadedStrings #-}
- module EmbedDevelTest where
- -- Tests the development mode of the embedded static subsite by
- -- using a custom generator testGen.
- import Data.Maybe (isNothing)
- import EmbedTestGenerator
- import EmbedProductionTest (findEtag)
- import Network.Wai.Test (SResponse(simpleHeaders))
- import Test.HUnit (assertBool)
- import Test.Hspec (Spec)
- import Yesod.Core
- import Yesod.EmbeddedStatic
- import Yesod.Test
- mkEmbeddedStatic True "eDev" [testGen]
- data MyApp = MyApp { getStatic :: EmbeddedStatic }
- mkYesod "MyApp" [parseRoutes|
- /static StaticR EmbeddedStatic getStatic
- |]
- instance Yesod MyApp
- noCacheControl :: YesodExample site ()
- noCacheControl = withResponse $ \r -> do
- liftIO $ assertBool "Cache-Control exists" $
- isNothing $ lookup "Cache-Control" $ simpleHeaders r
- liftIO $ assertBool "Expires exists" $
- isNothing $ lookup "Expires" $ simpleHeaders r
- embedDevSpecs :: Spec
- embedDevSpecs = yesodSpec (MyApp eDev) $ do
- ydescribe "Embedded Development Entries" $ do
- yit "e1 loads" $ do
- get $ StaticR e1
- statusIs 200
- assertHeader "Content-Type" "text/plain"
- noCacheControl
- bodyEquals "e1 devel"
- tag <- findEtag
- request $ do
- setMethod "GET"
- setUrl $ StaticR e1
- addRequestHeader ("If-None-Match", tag)
- statusIs 304
- yit "e2 with simulated directory" $ do
- get $ StaticR e2
- statusIs 200
- assertHeader "Content-Type" "abcdef"
- noCacheControl
- bodyEquals "e2 devel"
- yit "e3 without haskell name" $ do
- get $ StaticR $ embeddedResourceR ["xxxx", "e3"] []
- statusIs 200
- assertHeader "Content-Type" "yyy"
- noCacheControl
- bodyEquals "e3 devel"
- yit "e4 loads" $ do
- get $ StaticR e4
- statusIs 200
- assertHeader "Content-Type" "text/plain"
- noCacheControl
- bodyEquals "e4 devel"
- yit "e4 extra development dev1" $ do
- get $ StaticR $ embeddedResourceR ["dev1"] []
- statusIs 200
- assertHeader "Content-Type" "mime"
- noCacheControl
- bodyEquals "dev1 content"
- tag <- findEtag
- request $ do
- setMethod "GET"
- setUrl $ StaticR $ embeddedResourceR ["dev1"] []
- addRequestHeader ("If-None-Match", tag)
- statusIs 304
- yit "e4 extra development with path" $ do
- get $ StaticR $ embeddedResourceR ["dir", "dev2"] []
- statusIs 200
- assertHeader "Content-Type" "mime2"
- noCacheControl
- bodyEquals "dev2 content"
- yit "extra development file 404" $ do
- get $ StaticR $ embeddedResourceR ["xxxxxxxxxx"] []
- statusIs 404
|