6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
# File 'lib/riot-datamapper/has_validation.rb', line 6
def evaluate(model, validation, field, options={})
validator = model.validators.context(:default).detect do |v|
keyword = validation.to_s.match(/validates_(\w+)_of/)[1]
v.class.inspect.downcase =~ /#{keyword}/ && v.field_name.to_sym == field.to_sym
end
fail_msg = "expected #{model} to have validation :#{validation} on :#{field}"
pass_msg = "#{model} has validation :#{validation} on :#{field}"
options_msg = " with options #{options.inspect}"
return fail(fail_msg) if validator.nil?
unless options.empty?
if options.all? { |key, value| validator.options[key] == value }
pass_msg << options_msg
else
return fail(fail_msg + options_msg)
end
end
pass(pass_msg)
end
|