diff options
author | Michael Jones <m.pricejones@gmail.com> | 2024-06-24 17:35:31 +0100 |
---|---|---|
committer | Louis Pilfold <louis@lpil.uk> | 2024-07-17 14:17:16 +0100 |
commit | 5fde146360014b726f4608e583803d376a0022fa (patch) | |
tree | de17c4c01ed36570ae29ba014b0455a2a225f737 | |
parent | 232d49aadf65da91e281c3235d4bd1af3c9425a6 (diff) | |
download | gleam_stdlib-5fde146360014b726f4608e583803d376a0022fa.tar.gz gleam_stdlib-5fde146360014b726f4608e583803d376a0022fa.zip |
Add failing tests for optional field behaviour
optional_field currently treats the key as being optional but
incorrectly treats the value as being nullable. We want the key to be
optional but the value to be normal.
-rw-r--r-- | test/gleam/dynamic_test.gleam | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/test/gleam/dynamic_test.gleam b/test/gleam/dynamic_test.gleam index 4b6c797..42018e9 100644 --- a/test/gleam/dynamic_test.gleam +++ b/test/gleam/dynamic_test.gleam @@ -408,13 +408,30 @@ pub fn optional_field_test() { |> dict.insert("ok", None) |> dynamic.from |> dynamic.optional_field("ok", dynamic.int) - |> should.equal(Ok(None)) + |> should.equal( + Error([DecodeError(expected: "Int", found: "Atom", path: ["ok"])]), + ) dict.new() |> dict.insert("ok", Nil) |> dynamic.from |> dynamic.optional_field("ok", dynamic.int) - |> should.equal(Ok(None)) + |> should.equal( + Error([DecodeError(expected: "Int", found: "Nil", path: ["ok"])]), + ) + + // optional_field and optional should combine together to give nested Options + dict.new() + |> dict.insert("ok", Nil) + |> dynamic.from + |> dynamic.optional_field("ok", dynamic.optional(dynamic.int)) + |> should.equal(Ok(Some(None))) + + dict.new() + |> dict.insert("ok", 4) + |> dynamic.from + |> dynamic.optional_field("ok", dynamic.optional(dynamic.int)) + |> should.equal(Ok(Some(Some(4)))) dict.new() |> dynamic.from |