Fix JSON comparison bug for non-comparable types
parent
df71779620
commit
2ff381d7f5
|
@ -434,12 +434,16 @@ field =
|
|||
, description = description
|
||||
, encoder =
|
||||
\o ->
|
||||
let
|
||||
v =
|
||||
encoder o
|
||||
in
|
||||
-- If the value matches the default, do not record
|
||||
if o == Tuple.first default then
|
||||
if E.encode 0 v == E.encode 0 (encoder (Tuple.first default)) then
|
||||
Nothing
|
||||
|
||||
else
|
||||
Maybe.Just (encoder o)
|
||||
Maybe.Just v
|
||||
, decoder = D.opFieldWithDefault fieldName default decoder
|
||||
, docs = docs
|
||||
, requiredness =
|
||||
|
|
|
@ -89,11 +89,17 @@ suite =
|
|||
, fuzz fuzzer
|
||||
"Room -> JSON -> Room is equal"
|
||||
(\room ->
|
||||
room
|
||||
|> Room.encode
|
||||
let
|
||||
value : E.Value
|
||||
value =
|
||||
Room.encode room
|
||||
in
|
||||
value
|
||||
|> D.decodeValue Room.decode
|
||||
|> Result.toMaybe
|
||||
|> Maybe.map Tuple.first
|
||||
|> Expect.equal (Just room)
|
||||
|> Maybe.map Room.encode
|
||||
|> Maybe.map (E.encode 0)
|
||||
|> Expect.equal (Just <| E.encode 0 value)
|
||||
)
|
||||
]
|
||||
|
|
Loading…
Reference in New Issue