Sha256: eea056f1decc61b8759b3c5a303f61d68864589476f6460ea42fa17afc4e85b0

Contents?: true

Size: 1.84 KB

Versions: 90

Compression:

Stored size: 1.84 KB

Contents

module Shoulda # :nodoc:
  module ActiveRecord # :nodoc:
    module Matchers

      # 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>:blank</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 ||= :blank
          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

90 entries across 60 versions & 10 rubygems

Version Path
apl-library-0.0.90 vendor/bundle/ruby/2.1.0/gems/apl-library-0.0.90/vendor/bundle/ruby/1.9.1/gems/shoulda-2.11.3/lib/shoulda/active_record/matchers/validate_format_of_matcher.rb
apl-library-0.0.90 vendor/bundle/ruby/1.9.1/gems/shoulda-2.11.3/lib/shoulda/active_record/matchers/validate_format_of_matcher.rb
apl-library-0.0.90 vendor/bundle/ruby/2.1.0/gems/apl-library-0.0.90/vendor/bundle/ruby/2.1.0/gems/shoulda-2.11.3/lib/shoulda/active_record/matchers/validate_format_of_matcher.rb
apl-library-0.0.90 vendor/bundle/ruby/2.1.0/gems/shoulda-2.11.3/lib/shoulda/active_record/matchers/validate_format_of_matcher.rb
dirty_history-0.7.3 dirty_history/ruby/1.9.1/gems/shoulda-2.11.3/lib/shoulda/active_record/matchers/validate_format_of_matcher.rb
dirty_history-0.7.2 dirty_history/ruby/1.9.1/gems/shoulda-2.11.3/lib/shoulda/active_record/matchers/validate_format_of_matcher.rb
dirty_history-0.7.1 dirty_history/ruby/1.9.1/gems/shoulda-2.11.3/lib/shoulda/active_record/matchers/validate_format_of_matcher.rb
dirty_history-0.7.0 dirty_history/ruby/1.9.1/gems/shoulda-2.11.3/lib/shoulda/active_record/matchers/validate_format_of_matcher.rb
dirty_history-0.6.7 dirty_history/ruby/1.9.1/gems/shoulda-2.11.3/lib/shoulda/active_record/matchers/validate_format_of_matcher.rb
dirty_history-0.6.6 dirty_history/ruby/1.9.1/gems/shoulda-2.11.3/lib/shoulda/active_record/matchers/validate_format_of_matcher.rb
dirty_history-0.6.5 dirty_history/ruby/1.9.1/gems/shoulda-2.11.3/lib/shoulda/active_record/matchers/validate_format_of_matcher.rb
dirty_history-0.6.4 dirty_history/ruby/1.9.1/gems/shoulda-2.11.3/lib/shoulda/active_record/matchers/validate_format_of_matcher.rb
dirty_history-0.6.3 dirty_history/ruby/1.9.1/gems/shoulda-2.11.3/lib/shoulda/active_record/matchers/validate_format_of_matcher.rb
challah-0.6.2 vendor/bundle/gems/shoulda-2.11.3/lib/shoulda/active_record/matchers/validate_format_of_matcher.rb
dirty_history-0.6.2 dirty_history/ruby/1.9.1/gems/shoulda-2.11.3/lib/shoulda/active_record/matchers/validate_format_of_matcher.rb
dirty_history-0.6.1 dirty_history/ruby/1.9.1/gems/shoulda-2.11.3/lib/shoulda/active_record/matchers/validate_format_of_matcher.rb
dirty_history-0.6.0 dirty_history/ruby/1.9.1/gems/shoulda-2.11.3/lib/shoulda/active_record/matchers/validate_format_of_matcher.rb
challah-0.6.1 vendor/bundle/gems/shoulda-2.11.3/lib/shoulda/active_record/matchers/validate_format_of_matcher.rb
dirty_history-0.5.4 dirty_history/ruby/1.9.1/gems/shoulda-2.11.3/lib/shoulda/active_record/matchers/validate_format_of_matcher.rb
challah-0.6.0 vendor/bundle/gems/shoulda-2.11.3/lib/shoulda/active_record/matchers/validate_format_of_matcher.rb