From 7318d47781dd7a70bdffb88ec3f6a183f99f59dc Mon Sep 17 00:00:00 2001 From: Erik de Castro Lopo Date: Wed, 28 May 2014 22:51:04 +1000 Subject: [PATCH] yesod-test : Add htmlNoneContain (logical inverse of htmlAnyContain). --- yesod-test/Yesod/Test.hs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/yesod-test/Yesod/Test.hs b/yesod-test/Yesod/Test.hs index 2ff05c15..29d31637 100644 --- a/yesod-test/Yesod/Test.hs +++ b/yesod-test/Yesod/Test.hs @@ -75,6 +75,7 @@ module Yesod.Test , bodyContains , htmlAllContain , htmlAnyContain + , htmlNoneContain , htmlCount -- * Grab information @@ -353,6 +354,19 @@ htmlAnyContain query search = do _ -> liftIO $ HUnit.assertBool ("None of "++T.unpack query++" contain "++search) $ DL.any (DL.isInfixOf search) (map (TL.unpack . decodeUtf8) matches) +-- | Queries the html using a css selector, and fails if any matched +-- element contains the given string (in other words, it is the logical +-- inverse of htmlAnyContains). +-- +-- Since 1.2.1.6 +htmlNoneContain :: Query -> String -> YesodExample site () +htmlNoneContain query search = do + matches <- htmlQuery query + case DL.filter (DL.isInfixOf search) (map (TL.unpack . decodeUtf8) matches) of + [] -> return () + found -> failure $ "Found " <> T.pack (show $ length found) <> + " instances of " <> T.pack search <> " in " <> query <> " elements" + -- | Performs a css query on the last response and asserts the matched elements -- are as many as expected. htmlCount :: Query -> Int -> YesodExample site ()