Sha256: 8a1707a2159f06df18c934991759e3396d5121113629f7014817c4ca2bfcc1bb

Contents?: true

Size: 1.4 KB

Versions: 29

Compression:

Stored size: 1.4 KB

Contents

# Based on https://github.com/bogdan/accept_values_for

def accept_values(attribute, *values)
  AcceptValues.new(attribute, *values)
end

class AcceptValues  #:nodoc:

  def initialize(attribute, *values)
    @attribute = attribute
    @values = values
  end

  def matches?(model)
    @model = model
    #return false unless model.is_a?(ActiveRecord::Base)
    @values.each do |value|
      model.send("#{@attribute}=", value)
      model.valid?
      if model.errors[@attribute].present?
        @failed_value = value
        return false
      end
    end
    true
  end

  def does_not_match?(model)
    @model = model
    #return false unless model.is_a?(ActiveRecord::Base)
    @values.each do |value|
      model.send("#{@attribute}=", value)
      model.valid?
      unless model.errors[@attribute].present?
        @failed_value = value
        return false
      end
    end
    true
  end

  def failure_message_for_should
    result = "expected #{@model.class.name} to accept value #{@failed_value.inspect} for #{@attribute.inspect}\n"
    result += 'Errors: ' + @model.errors[@attribute].join(', ') if @model.respond_to?(:errors)
    result
  end

  def failure_message_for_should_not
    "expected #{@model.class.name} to reject value #{@failed_value.inspect} for #{@attribute.inspect} attribute"
  end

  def description
    "accept values #{@values.map(&:inspect).join(', ')} for #{@attribute.inspect}"
  end
end

Version data entries

29 entries across 29 versions & 1 rubygems

Version Path
raygun-0.0.34 rails_32/spec/support/accept_values.rb
raygun-0.0.34.pre2 rails_32/spec/support/accept_values.rb
raygun-0.0.33 rails_32/spec/support/accept_values.rb
raygun-0.0.32 rails_32/spec/support/accept_values.rb
raygun-0.0.31 rails_32/spec/support/accept_values.rb
raygun-0.0.30 rails_32/spec/support/accept_values.rb
raygun-0.0.29 rails_32/spec/support/accept_values.rb
raygun-0.0.28 rails_32/spec/support/accept_values.rb
raygun-0.0.27 app_prototype/spec/support/accept_values.rb
raygun-0.0.26 app_prototype/spec/support/accept_values.rb
raygun-0.0.25 app_prototype/spec/support/accept_values.rb
raygun-0.0.24 app_prototype/spec/support/accept_values.rb
raygun-0.0.23 app_prototype/spec/support/accept_values.rb
raygun-0.0.22 app_prototype/spec/support/accept_values.rb
raygun-0.0.21 app_prototype/spec/support/accept_values.rb
raygun-0.0.18 app_prototype/spec/support/accept_values.rb
raygun-0.0.17 app_prototype/spec/support/accept_values.rb
raygun-0.0.16 app_prototype/spec/support/accept_values.rb
raygun-0.0.15 app_prototype/spec/support/accept_values.rb
raygun-0.0.14 app_prototype/spec/support/accept_values.rb