From bbb1a66bac1ef2ae920b8739d61c13cb0023e987 Mon Sep 17 00:00:00 2001 From: Shane Kilkelly Date: Sun, 3 Mar 2013 17:16:10 +0000 Subject: [PATCH] add a htmlAnyContain function --- yesod-test/Yesod/Test.hs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/yesod-test/Yesod/Test.hs b/yesod-test/Yesod/Test.hs index be57a2d3..c62fa50a 100644 --- a/yesod-test/Yesod/Test.hs +++ b/yesod-test/Yesod/Test.hs @@ -253,6 +253,16 @@ htmlAllContain query search = do _ -> liftIO $ HUnit.assertBool ("Not all "++T.unpack query++" contain "++search) $ DL.all (DL.isInfixOf search) (map (TL.unpack . decodeUtf8) matches) +-- | Queries the html using a css selector, and passes if any matched +-- element contains the given string. +htmlAnyContain :: HoldsResponse a => Query -> String -> ST.StateT a IO () +htmlAnyContain query search = do + matches <- htmlQuery query + case matches of + [] -> failure $ "Nothing matched css query: " <> query + _ -> liftIO $ HUnit.assertBool ("None of "++T.unpack query++" contain "++search) $ + DL.any (DL.isInfixOf search) (map (TL.unpack . decodeUtf8) matches) + -- | Performs a css query on the last response and asserts the matched elements -- are as many as expected. htmlCount :: HoldsResponse a => Query -> Int -> ST.StateT a IO ()