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 /test | |
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.
Diffstat (limited to 'test')
-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 |