Ensure that ClickedThumbnail message is emitted

This commit is contained in:
Alexander Kobjolke 2023-12-30 23:19:56 +01:00
parent 9045353810
commit fd48480a05

View file

@ -1,12 +1,13 @@
module PhotoGrooveTest exposing (..) module PhotoGrooveTest exposing (..)
import Expect import Expect
import Fuzz import Fuzz exposing (Fuzzer)
import Html.Attributes as Attr import Html.Attributes as Attr
import Json.Decode as J import Json.Decode as J
import Json.Encode as Encode import Json.Encode as Encode
import PhotoGroove.Internal as Testee exposing (FilterType(..), FilterValues, Message(..), Photo, filterTypeToName, initialModel) import PhotoGroove.Internal as Testee exposing (FilterType(..), FilterValues, Message(..), Photo, filterTypeToName, initialModel)
import Test exposing (..) import Test exposing (..)
import Test.Html.Event as Event
import Test.Html.Query as Query import Test.Html.Query as Query
import Test.Html.Selector exposing (attribute, tag) import Test.Html.Selector exposing (attribute, tag)
@ -89,6 +90,28 @@ thumbnailRendered url query =
|> Query.count (Expect.atLeast 1) |> Query.count (Expect.atLeast 1)
clickThumbnail : Test
clickThumbnail =
fuzz3 urlFuzzer Fuzz.string urlFuzzer "clicking a thumbnail selects it" <|
\urlsBefore urlSelected urlsAfter ->
let
url =
urlSelected ++ ".jpeg"
photos =
(urlsBefore ++ url :: urlsAfter) |> List.map photoFromUrl
srcToClick =
Testee.urlPrefix ++ url
in
{ initialModel | status = Testee.Loaded photos "" }
|> Testee.view
|> Query.fromHtml
|> Query.find [ tag "img", attribute (Attr.src srcToClick) ]
|> Event.simulate Event.click
|> Event.expect (Testee.ClickedThumbnail url)
photoFromUrl : String -> Photo photoFromUrl : String -> Photo
photoFromUrl url = photoFromUrl url =
{ url = url, size = 0, title = "" } { url = url, size = 0, title = "" }
@ -105,3 +128,15 @@ selectedUrl status =
Testee.Errored _ -> Testee.Errored _ ->
Nothing Nothing
urlFuzzer : Fuzzer (List String)
urlFuzzer =
Fuzz.intRange 1 5
|> Fuzz.map urlsFromCount
urlsFromCount : Int -> List String
urlsFromCount count =
List.range 1 count
|> List.map (\num -> String.fromInt num ++ ".jpg")