packages feed

webdriver-w3c-0.0.3: test/Web/Api/WebDriver/Monad/Test/Session/InvalidElementState.hs

{-# LANGUAGE BangPatterns, OverloadedStrings #-}
module Web.Api.WebDriver.Monad.Test.Session.InvalidElementState (
    invalidElementStateExit
  ) where

import Data.Typeable (Typeable)
import System.IO


import Web.Api.WebDriver
import Test.Tasty.WebDriver

import qualified Data.Text as Text

import qualified Test.Tasty as T
import qualified Test.Tasty.ExpectedFailure as TE


invalidElementState
  :: (Monad eff)
  => WDError
  -> WebDriverT eff()
invalidElementState e = case e of
  ResponseError InvalidElementState _ _ _ _ -> assertSuccess "yay!"
  err -> assertFailure $ AssertionComment $
    "Expecting 'invalid element state' but got: " <> Text.pack (show err)


invalidElementStateExit
  :: (Monad eff)
  => (String -> WebDriverT eff() -> T.TestTree)
  -> FilePath
  -> T.TestTree
invalidElementStateExit buildTestCase dir =
  let path = dir ++ "/invalidElementState.html" in
  T.testGroup "Invalid Element State"
    [ buildTestCase "elementClear" (_test_elementClear_invalid_element_state path)
    ]



_test_elementClear_invalid_element_state
  :: (Monad eff) => FilePath -> WebDriverT eff()
_test_elementClear_invalid_element_state page =
  let
    session :: (Monad eff) => WebDriverT eff()
    session = do
      navigateTo $ Text.pack page
      !element <- findElement CssSelector "body"
      elementClear element
      throwError $ UnexpectedResult IsSuccess "Expecting 'invalid_element_state'"
      return ()

  in catchError session invalidElementState