version: 1.0.0

+ map_validate/2: a simple way to validate maps
+ gitversion.mk removed
This commit is contained in:
Umgeher Torgersen 2024-10-13 19:36:09 +00:00
parent 7b5b494cbb
commit b5e2fecca5
4 changed files with 82 additions and 8 deletions

32
test/map_validate.erl Normal file
View file

@ -0,0 +1,32 @@
-module(map_validate).
-include_lib("eunit/include/eunit.hrl").
-define(SAMPLE, #{<<"name">> => <<"umgeher">>, email => <<"me@umgeher.org">>}).
returning_no_data_test() ->
?assertEqual({error, 'no data'}, utools:map_validate('not a map', #{})),
?assertEqual({error, 'no data'}, utools:map_validate(#{}, 'not a map')),
?assertEqual({error, 'no data'}, utools:map_validate('not a map', 'not a map')).
ok_without_doc_test() ->
?assertEqual(#{}, utools:map_validate(?SAMPLE, #{})).
ok_rule_required_test() ->
Rule = #{
key => <<"name">>,
required => true
},
?assertEqual(#{<<"name">> => <<"umgeher">>}, utools:map_validate(?SAMPLE, #{rules => [Rule]})).
error_required_missing_test() ->
Rule = #{key => some, required => true},
?assertEqual({error, some}, utools:map_validate(?SAMPLE, #{rules => [Rule]})).
ok_rule_not_required_with_default_value_test() ->
Rule = #{key => some, default => 123},
?assertEqual(#{some => 123}, utools:map_validate(?SAMPLE, #{rules => [Rule]})).
ok_merge_test() ->
Rule = #{key => some, default => 123},
?assertEqual(maps:merge(?SAMPLE, #{some => 123}), utools:map_validate(?SAMPLE, #{merge => true, rules => [Rule]})).