Sha256: 3abf378b12ff7705e466bcc29f8735ad1a9ddc8254e7b893b1f6cf0a344f112a
Contents?: true
Size: 1.84 KB
Versions: 1
Compression:
Stored size: 1.84 KB
Contents
module Shoulda # :nodoc: module Matchers module ActiveRecord # :nodoc: # Ensures that the model is not valid if the given attribute is not # formatted correctly. # # Options: # * <tt>with_message</tt> - value the test expects to find in # <tt>errors.on(:attribute)</tt>. <tt>Regexp</tt> or <tt>String</tt>. # Defaults to the translation for <tt>:invalid</tt>. # * <tt>with(string to test against)</tt> # * <tt>not_with(string to test against)</tt> # # Examples: # it { should validate_format_of(:name). # with('12345'). # with_message(/is not optional/) } # it { should validate_format_of(:name). # not_with('12D45'). # with_message(/is not optional/) } # def validate_format_of(attr) ValidateFormatOfMatcher.new(attr) end class ValidateFormatOfMatcher < ValidationMatcher # :nodoc: def initialize(attribute) super end def with_message(message) @expected_message = message if message self end def with(value) raise "You may not call both with and not_with" if @value_to_fail @value_to_pass = value self end def not_with(value) raise "You may not call both with and not_with" if @value_to_pass @value_to_fail = value self end def matches?(subject) super(subject) @expected_message ||= :invalid return disallows_value_of(@value_to_fail, @expected_message) if @value_to_fail allows_value_of(@value_to_pass, @expected_message) if @value_to_pass end def description "#{@attribute} have a valid format" end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
shoulda-matchers-1.0.0.beta2 | lib/shoulda/matchers/active_record/validate_format_of_matcher.rb |