elm-matrix-sdk-beta/tests/Test/Values/Event.elm

84 lines
2.0 KiB
Elm
Raw Normal View History

module Test.Values.Event exposing (..)
2024-01-04 02:13:17 +00:00
import Expect
import Fuzz exposing (Fuzzer)
import Internal.Values.Event as Event exposing (Event)
import Json.Encode as E
import Test exposing (..)
2024-04-12 11:57:38 +00:00
import Test.Grammar.UserId as UserId
import Test.Tools.Timestamp as TestTimestamp
fuzzer : Fuzzer Event
fuzzer =
Fuzz.map8 Event
valueFuzzer
Fuzz.string
TestTimestamp.fuzzer
Fuzz.string
2024-04-12 11:57:38 +00:00
UserId.fullUserFuzzer
(Fuzz.maybe Fuzz.string)
Fuzz.string
(Fuzz.maybe unsignedDataFuzzer)
2023-12-29 13:58:50 +00:00
2023-12-29 13:50:43 +00:00
{-| Fuzzer for an event with a set state key
-}
fuzzerState : Fuzzer Event
fuzzerState =
Fuzz.map2
(\event default ->
{ event
2023-12-29 13:58:50 +00:00
| stateKey =
event.stateKey
|> Maybe.withDefault default
|> Maybe.Just
2023-12-29 13:50:43 +00:00
}
)
fuzzer
Fuzz.string
unsignedDataFuzzer : Fuzzer Event.UnsignedData
unsignedDataFuzzer =
2024-07-16 08:20:38 +00:00
Fuzz.map5
(\age memb prev redact trans ->
Event.UnsignedData
{ age = age
2024-07-16 08:20:38 +00:00
, membership = memb
, prevContent = prev
, redactedBecause = redact
, transactionId = trans
}
)
(Fuzz.maybe Fuzz.int)
2024-07-16 08:20:38 +00:00
(Fuzz.maybe Fuzz.string)
(Fuzz.maybe valueFuzzer)
(Fuzz.maybe <| Fuzz.lazy (\_ -> fuzzer))
(Fuzz.maybe Fuzz.string)
{-| Example values that can be used for arbitrary JSON values
-}
valueFuzzer : Fuzzer E.Value
valueFuzzer =
Fuzz.oneOf
[ Fuzz.map E.int Fuzz.int
, Fuzz.map E.string Fuzz.string
, Fuzz.map (E.list E.int) (Fuzz.list Fuzz.int)
, Fuzz.map (E.list E.string) (Fuzz.list Fuzz.string)
, Fuzz.map Event.encode (Fuzz.lazy (\_ -> fuzzer))
]
2024-01-04 01:00:31 +00:00
2024-01-04 02:13:17 +00:00
2024-01-04 01:00:31 +00:00
suite : Test
suite =
describe "Sanity check"
2024-01-04 02:13:17 +00:00
[ fuzz fuzzer
"event = event"
2024-01-04 01:00:31 +00:00
(\event ->
Event.isEqual event event
|> Expect.equal True
)
]