yesod-test 1.2.1.2 → 1.2.1.3
raw patch · 3 files changed
+22/−6 lines, 3 filesdep ~wai
Dependency ranges changed: wai
Files
- Yesod/Test.hs +5/−5
- test/main.hs +15/−0
- yesod-test.cabal +2/−1
Yesod/Test.hs view
@@ -319,7 +319,7 @@ bodyEquals :: String -> YesodExample site () bodyEquals text = withResponse $ \ res -> liftIO $ HUnit.assertBool ("Expected body to equal " ++ text) $- (simpleBody res) == BSL8.pack text+ (simpleBody res) == encodeUtf8 (TL.pack text) -- | Assert the last response has the given text. The check is performed using the response -- body in full text form.@@ -329,7 +329,7 @@ (simpleBody res) `contains` text contains :: BSL8.ByteString -> String -> Bool-contains a b = DL.isInfixOf b (BSL8.unpack a)+contains a b = DL.isInfixOf b (TL.unpack $ decodeUtf8 a) -- | Queries the html using a css selector, and all matched elements must contain -- the given string.@@ -364,7 +364,7 @@ -- | Outputs the last response body to stderr (So it doesn't get captured by HSpec) printBody :: YesodExample site () printBody = withResponse $ \ SResponse { simpleBody = b } ->- liftIO $ hPutStrLn stderr $ BSL8.unpack b+ liftIO $ BSL8.hPutStrLn stderr b -- | Performs a CSS query and print the matches to stderr. printMatches :: Query -> YesodExample site ()@@ -539,7 +539,7 @@ , rbdGets = [] , rbdHeaders = [] }- let path = T.cons '/' $ T.intercalate "/" rbdPath+ let path = TE.decodeUtf8 $ Builder.toByteString $ H.encodePathSegments rbdPath -- expire cookies and filter them for the current path. TODO: support max age currentUtc <- liftIO getCurrentTime@@ -644,7 +644,7 @@ , remoteHost = Sock.SockAddrInet 1 2 , requestHeaders = headers ++ extraHeaders , rawPathInfo = TE.encodeUtf8 urlPath- , pathInfo = DL.filter (/="") $ T.split (== '/') urlPath+ , pathInfo = H.decodePathSegments $ TE.encodeUtf8 urlPath , rawQueryString = H.renderQuery False urlQuery , queryString = urlQuery }
test/main.hs view
@@ -1,4 +1,5 @@ {-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE CPP #-} {-# LANGUAGE MultiParamTypeClasses #-} import Test.HUnit hiding (Test)@@ -13,6 +14,7 @@ import Data.Text (Text) import Data.Monoid ((<>)) import Control.Applicative+import Network.Wai (pathInfo) import Data.ByteString.Lazy.Char8 () import qualified Data.Map as Map@@ -106,6 +108,15 @@ addNonce statusIs 200 bodyEquals "12345"+ ydescribe "utf8 paths" $ do+ yit "from path" $ do+ get ("/dynamic1/שלום" :: Text)+ statusIs 200+ bodyEquals "שלום"+ yit "from WAI" $ do+ get ("/dynamic2/שלום" :: Text)+ statusIs 200+ bodyEquals "שלום" instance RenderMessage LiteApp FormMessage where renderMessage _ _ = defaultFormMessage@@ -117,6 +128,10 @@ case mfoo of Nothing -> return "Hello world!" Just foo -> return $ "foo=" <> foo+ onStatic "dynamic1" $ withDynamic $ \d -> dispatchTo $ return (d :: Text)+ onStatic "dynamic2" $ onStatic "שלום" $ dispatchTo $ do+ req <- waiRequest+ return $ pathInfo req !! 1 onStatic "post" $ dispatchTo $ do mfoo <- lookupPostParam "foo" case mfoo of
yesod-test.cabal view
@@ -1,5 +1,5 @@ name: yesod-test-version: 1.2.1.2+version: 1.2.1.3 license: MIT license-file: LICENSE author: Nubis <nubis@woobiz.com.ar>@@ -59,6 +59,7 @@ , yesod-core , yesod-form , text+ , wai source-repository head type: git