From 4cc4061be37c2c7fea414c11a80b5ef2a30c2ffe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alberto=20Caama=C3=B1o=20Souto?= Date: Tue, 9 Jul 2024 11:58:56 +0200 Subject: [PATCH] fix: nullable ignores type validation (#107) --- src/ndto_generator.erl | 8 ++++++-- test/ndto_SUITE.erl | 9 +++++++++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/ndto_generator.erl b/src/ndto_generator.erl index ce82d08..d09392f 100644 --- a/src/ndto_generator.erl +++ b/src/ndto_generator.erl @@ -2706,8 +2706,12 @@ literal(Val) when is_map(Val) -> null_clause(#{nullable := true}) -> erl_syntax:clause( - [erl_syntax:variable('null')], - none, + [erl_syntax:variable('Val')], + erl_syntax:infix_expr( + erl_syntax:variable('Val'), + erl_syntax:operator('=:='), + erl_syntax:atom(null) + ), [erl_syntax:atom(true)] ); null_clause(_Schema) -> diff --git a/test/ndto_SUITE.erl b/test/ndto_SUITE.erl index 12b4a13..481b0e8 100644 --- a/test/ndto_SUITE.erl +++ b/test/ndto_SUITE.erl @@ -161,6 +161,15 @@ nullable(_Conf) -> ok = ndto:load(DTO1), ?assertEqual(true, test_nullable1:is_valid(null)), + case Type of + string -> + ?assertEqual( + {false, {'$.type', <<"Value is not a string">>}}, + test_nullable1:is_valid(5) + ); + _Other -> + ok + end, Schema2 = #{ type => Type