aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorMichael Jones <m.pricejones@gmail.com>2024-06-24 17:35:31 +0100
committerLouis Pilfold <louis@lpil.uk>2024-07-17 14:17:16 +0100
commit5fde146360014b726f4608e583803d376a0022fa (patch)
treede17c4c01ed36570ae29ba014b0455a2a225f737 /test
parent232d49aadf65da91e281c3235d4bd1af3c9425a6 (diff)
downloadgleam_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.gleam21
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