class FlexValidations::Call

Public Class Methods

new(method, *args) click to toggle source
# File lib/flex_validations/call.rb, line 7
def initialize(method, *args)
  @method = method
  @args = args
end

Public Instance Methods

to_s() click to toggle source

@return [String]

# File lib/flex_validations/call.rb, line 27
def to_s
  args = "(#{@args.map(&:inspect).join(', ')})" if @args.length > 0

  "value.#{@method}#{args} should not raise error"
end
validate(value) click to toggle source

@param value [Object] Value to be validated

@return [FlexValidations::Result]

# File lib/flex_validations/call.rb, line 15
def validate(value)
  return not_respond(value) unless value.respond_to?(@method, false)

  begin
    ret = value.public_send(@method, *@args)
    success(value, ret)
  rescue => e
    failed(value, e)
  end
end

Private Instance Methods

failed(value, error) click to toggle source
# File lib/flex_validations/call.rb, line 94
def failed(value, error)
  msg = FailedMessage.new(value, @method, @args, error)

  Result::Fail::Simple.new(self, msg, value, error)
end
not_respond(value) click to toggle source
# File lib/flex_validations/call.rb, line 88
def not_respond(value)
  msg = NotRespondMessage.new(value, @method)

  Result::Fail::Simple.new(self, msg, value, false)
end
success(value, ret) click to toggle source
# File lib/flex_validations/call.rb, line 82
def success(value, ret)
  msg = SuccessMessage.new(value, @method, @args, ret)

  Result::Success::Simple.new(self, msg, value, ret)
end