utools/test/map_validate.erl

33 lines
1.2 KiB
Erlang
Raw Permalink Normal View History

-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]})).