github.com/pf-qiu/concourse/v6@v6.7.3-0.20201207032516-1f455d73275f/web/elm/tests/TooltipTests.elm (about) 1 module TooltipTests exposing (all) 2 3 import Browser.Dom 4 import Common 5 import Data 6 import Expect 7 import HoverState exposing (TooltipPosition(..)) 8 import Message.Callback as Callback 9 import Message.Effects as Effects 10 import Message.Message exposing (DomID(..), Message(..), PipelinesSection(..)) 11 import Test exposing (Test, describe, test) 12 import Tooltip 13 14 15 all : Test 16 all = 17 describe ".handleCallback" <| 18 [ describe "OnlyShowWhenOverflowing policy" 19 [ test "callback with overflowing viewport turns hover -> pending" <| 20 \_ -> 21 ( { hovered = HoverState.Hovered domID }, [] ) 22 |> Tooltip.handleCallback 23 (Callback.GotViewport domID <| 24 Ok overflowingViewport 25 ) 26 |> Tuple.first 27 |> .hovered 28 |> Expect.equal (HoverState.TooltipPending domID) 29 , test "callback with overflowing viewport gets element position" <| 30 \_ -> 31 ( { hovered = HoverState.Hovered domID }, [] ) 32 |> Tooltip.handleCallback 33 (Callback.GotViewport domID <| 34 Ok overflowingViewport 35 ) 36 |> Tuple.second 37 |> Common.contains (Effects.GetElement domID) 38 , test "callback with non-overflowing does nothing" <| 39 \_ -> 40 ( { hovered = HoverState.Hovered domID }, [] ) 41 |> Tooltip.handleCallback 42 (Callback.GotViewport domID <| 43 Ok nonOverflowingViewport 44 ) 45 |> Tuple.first 46 |> .hovered 47 |> Expect.equal (HoverState.Hovered domID) 48 ] 49 , test "AlwaysShow callback with non-overflowing viewport gets element" <| 50 \_ -> 51 ( { hovered = HoverState.Hovered Dashboard }, [] ) 52 |> Tooltip.handleCallback 53 (Callback.GotViewport Dashboard <| Ok nonOverflowingViewport) 54 |> Tuple.second 55 |> Common.contains (Effects.GetElement Dashboard) 56 , test "callback with tooltip position turns pending -> tooltip" <| 57 \_ -> 58 ( { hovered = HoverState.TooltipPending domID }, [] ) 59 |> Tooltip.handleCallback 60 (Callback.GotElement <| Ok Data.elementPosition) 61 |> Tuple.first 62 |> .hovered 63 |> Expect.equal (HoverState.Tooltip domID Data.elementPosition) 64 ] 65 66 67 nonOverflowingViewport : Browser.Dom.Viewport 68 nonOverflowingViewport = 69 { scene = 70 { width = 1 71 , height = 0 72 } 73 , viewport = 74 { width = 1 75 , height = 0 76 , x = 0 77 , y = 0 78 } 79 } 80 81 82 domID : DomID 83 domID = 84 SideBarPipeline AllPipelinesSection Data.pipelineId 85 86 87 overflowingViewport : Browser.Dom.Viewport 88 overflowingViewport = 89 { scene = 90 { width = 1 91 , height = 0 92 } 93 , viewport = 94 { width = 0 95 , height = 0 96 , x = 0 97 , y = 0 98 } 99 }