monomer-1.0.0.0: test/unit/Monomer/Widgets/Containers/AlertSpec.hs
{-|
Module : Monomer.Widgets.Containers.AlertSpec
Copyright : (c) 2018 Francisco Vallarino
License : BSD-3-Clause (see the LICENSE file)
Maintainer : fjvallarino@gmail.com
Stability : experimental
Portability : non-portable
Unit tests for Alert dialog widget.
-}
module Monomer.Widgets.Containers.AlertSpec (spec) where
import Control.Lens ((&), (.~))
import Data.Text (Text)
import Test.Hspec
import qualified Data.Sequence as Seq
import Monomer.Core
import Monomer.Core.Themes.SampleThemes
import Monomer.Event
import Monomer.TestEventUtil
import Monomer.TestUtil
import Monomer.Widgets.Containers.Alert
import qualified Monomer.Lens as L
data AlertEvent
= CloseClick
deriving (Eq, Show)
spec :: Spec
spec = describe "Alert"
handleEvent
handleEvent :: Spec
handleEvent = describe "handleEvent" $ do
it "should generate a close event if clicked outside the dialog" $
events (Point 3000 3000) `shouldBe` Seq.singleton CloseClick
it "should generate a close event when clicking the Accept button" $
events (Point 50 450) `shouldBe` Seq.singleton CloseClick
it "should not generate a close event when clicking the dialog" $
events (Point 300 200) `shouldBe` Seq.empty
where
wenv = mockWenv () & L.theme .~ darkTheme
alertNode = alertMsg "Alert!" CloseClick
events p = nodeHandleEventEvts wenv [evtClick p] alertNode