Class: RSpec::Support::MethodSignatureVerifier

Inherits:
Object
  • Object
show all
Defined in:
lib/rspec/support/method_signature_verifier.rb

Overview

Figures out wheter a given method can accept various arguments. Surprisingly non-trivial.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(signature, args) ⇒ MethodSignatureVerifier

Returns a new instance of MethodSignatureVerifier.



151
152
153
154
# File 'lib/rspec/support/method_signature_verifier.rb', line 151

def initialize(signature, args)
  @signature = signature
  @non_kw_args, @kw_args = split_args(*args)
end

Instance Attribute Details

#kw_argsObject (readonly)

Returns the value of attribute kw_args.



149
150
151
# File 'lib/rspec/support/method_signature_verifier.rb', line 149

def kw_args
  @kw_args
end

#non_kw_argsObject (readonly)

Returns the value of attribute non_kw_args.



149
150
151
# File 'lib/rspec/support/method_signature_verifier.rb', line 149

def non_kw_args
  @non_kw_args
end

Instance Method Details

#error_messageObject



162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
# File 'lib/rspec/support/method_signature_verifier.rb', line 162

def error_message
  if missing_kw_args.any?
    "Missing required keyword arguments: %s" % [
      missing_kw_args.join(", ")
    ]
  elsif invalid_kw_args.any?
    "Invalid keyword arguments provided: %s" % [
      invalid_kw_args.join(", ")
    ]
  elsif !valid_non_kw_args?
    "Wrong number of arguments. Expected %s, got %s." % [
      @signature.non_kw_args_arity_description,
      non_kw_args.length
    ]
  end
end

#valid?Boolean

Returns:

  • (Boolean)


156
157
158
159
160
# File 'lib/rspec/support/method_signature_verifier.rb', line 156

def valid?
   missing_kw_args.empty? &&
    invalid_kw_args.empty? &&
    valid_non_kw_args?
end