+ map_validate/2: a simple way to validate maps + gitversion.mk removed
32 lines
1.2 KiB
Erlang
32 lines
1.2 KiB
Erlang
-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]})).
|
|
|