module RSpecParam::ClassMethods
Public Instance Methods
included(klass)
click to toggle source
Calls superclass method
# File lib/rspec_param.rb, line 57 def included(klass) super klass.extend ClassMethods end
param(name, default=nil, accumulate: false, &block)
click to toggle source
Calls superclass method
# File lib/rspec_param.rb, line 32 def param(name, default=nil, accumulate: false, &block) raise "One of a default param or block is required" unless default || block || accumulate block ||= lambda { accumulate ? (default || []) : default } # Create the let variable. let(name, &block) # Define the helper method. define_singleton_method(name) do |value=nil, &inner_block| raise "One of a value param or block is required" unless value || inner_block let_block = if accumulate # Accumulate values into an ivar to handle multiple calls in the # same context level. ivar = "@param_context_#{name}" existing_values = instance_variable_get(ivar) || [] existing_values << [value, inner_block] instance_variable_set(ivar, existing_values) lambda do super() + existing_values.map {|v, b| b ? instance_eval(&b) : v } end else inner_block || lambda { value } end let(name, &let_block) end end