81 lines
2.2 KiB
Elm
81 lines
2.2 KiB
Elm
module Test.Values.Settings exposing (..)
|
|
|
|
import Expect
|
|
import Fuzz exposing (Fuzzer)
|
|
import Internal.Config.Default as Default
|
|
import Internal.Values.Settings as Settings exposing (Settings)
|
|
import Json.Decode as D
|
|
import Json.Encode as E
|
|
import Test exposing (..)
|
|
|
|
|
|
fuzzer : Fuzzer Settings
|
|
fuzzer =
|
|
Fuzz.map3 Settings
|
|
(Fuzz.oneOf
|
|
[ Fuzz.constant Default.currentVersion
|
|
, Fuzz.string
|
|
]
|
|
)
|
|
(Fuzz.oneOf
|
|
[ Fuzz.constant Default.deviceName
|
|
, Fuzz.string
|
|
]
|
|
)
|
|
(Fuzz.oneOf
|
|
[ Fuzz.constant Default.syncTime
|
|
, Fuzz.int
|
|
]
|
|
)
|
|
|
|
|
|
suite : Test
|
|
suite =
|
|
describe "Settings"
|
|
[ describe "init"
|
|
[ test "Current version"
|
|
(Settings.init
|
|
|> .currentVersion
|
|
|> Expect.equal Default.currentVersion
|
|
|> always
|
|
)
|
|
, test "Device name"
|
|
(Settings.init
|
|
|> .deviceName
|
|
|> Expect.equal Default.deviceName
|
|
|> always
|
|
)
|
|
, test "Sync time"
|
|
(Settings.init
|
|
|> .syncTime
|
|
|> Expect.equal Default.syncTime
|
|
|> always
|
|
)
|
|
, test "JSON encode init is {}"
|
|
(Settings.init
|
|
|> Settings.encode
|
|
|> E.encode 0
|
|
|> Expect.equal "{}"
|
|
|> always
|
|
)
|
|
, test "JSON decode {} is init"
|
|
("{}"
|
|
|> D.decodeString Settings.decoder
|
|
|> Expect.equal (Ok ( Settings.init, [] ))
|
|
|> always
|
|
)
|
|
]
|
|
, describe "JSON"
|
|
[ fuzz2 fuzzer
|
|
Fuzz.int
|
|
"JSON encode -> JSON decode -> identical"
|
|
(\settings indent ->
|
|
settings
|
|
|> Settings.encode
|
|
|> E.encode indent
|
|
|> D.decodeString Settings.decoder
|
|
|> Expect.equal (Ok ( settings, [] ))
|
|
)
|
|
]
|
|
]
|