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