class SequelSpec::Matchers::Validation::ValidateMatcher

Public Instance Methods

additionnal_param_required?() click to toggle source
# File lib/sequel_spec/validation/validate_matcher.rb, line 57
def additionnal_param_required?
  false
end
allowing_blank() click to toggle source
# File lib/sequel_spec/validation/validate_matcher.rb, line 45
def allowing_blank
  with_options :allow_blank => true
end
allowing_missing() click to toggle source
# File lib/sequel_spec/validation/validate_matcher.rb, line 49
def allowing_missing
  with_options :allow_missing => true
end
allowing_nil() click to toggle source
# File lib/sequel_spec/validation/validate_matcher.rb, line 41
def allowing_nil
  with_options :allow_nil => true
end
args_to_called_attributes(args) click to toggle source
# File lib/sequel_spec/validation/validate_matcher.rb, line 61
def args_to_called_attributes(args)
  [args.pop].flatten
end
valid?(db, instance, klass, attribute, options) click to toggle source
# File lib/sequel_spec/validation/validate_matcher.rb, line 5
def valid?(db, instance, klass, attribute, options)
  additionnal_param_check if self.respond_to?(:additionnal_param_check)

  instance = instance.dup
  instance.class.columns

  called = false

  proxy = Proc.new do |args|
    called_options = args.last.is_a?(Hash) ? args.pop : {}
    called_attributes = args_to_called_attributes(args)
    called_additionnal = args.shift if additionnal_param_required?

    if !args.empty?
      @suffix << "but called with too many params"
    elsif called_attributes.include?(attribute)
      if additionnal_param_required? && @additionnal != called_additionnal
        @suffix << "but called with #{called_additionnal} instead"
      elsif !options.empty? && called_options != options
        @suffix << "but called with option(s) #{hash_to_nice_string called_options} instead"
      else
        called = true
      end
    end
  end

  instance.singleton_class.send(:define_method, validation_type,
    Proc.new { |*args| proxy.call(args) }
  )

  # Run validations
  instance.valid?

  called
end
with_message(message) click to toggle source
# File lib/sequel_spec/validation/validate_matcher.rb, line 53
def with_message(message)
  with_options :message => message
end