module RSpec::NonDeterministicLet::Helpers::ClassMethods
Public Instance Methods
__nd_let_state_name(nd_let_name)
click to toggle source
# File lib/rspec/non_deterministic_let/helpers.rb, line 67 def __nd_let_state_name(nd_let_name) "__nd_let_state_#{nd_let_name.to_s}".to_sym end
__update_let_state(nd_let_name, description, let_block, is_exclamation)
click to toggle source
# File lib/rspec/non_deterministic_let/helpers.rb, line 47 def __update_let_state(nd_let_name, description, let_block, is_exclamation) nd_let = 'nd_let' nd_let += '!' if is_exclamation nd_let_state_name = __nd_let_state_name(nd_let_name) begin let_blocks = send(nd_let_state_name) description ||= "#{nd_let}:#{nd_let_name} \##{let_blocks.size + 1}" self.define_singleton_method(nd_let_state_name) do || let_blocks + [{block: let_block, description: description, is_exclamation: is_exclamation}] end rescue NoMethodError description ||= "#{nd_let}:#{nd_let_name} \##{1}" self.define_singleton_method(nd_let_state_name) do || [{block: let_block, description: description, is_exclamation: is_exclamation}] end end end
nd_let(nd_let_name, description=nil, &let_block)
click to toggle source
# File lib/rspec/non_deterministic_let/helpers.rb, line 24 def nd_let(nd_let_name, description=nil, &let_block) begin let_blocks = send(nd_let_name) description ||= "nd_let:#{nd_let_name} \##{let_blocks.size + 1}" self.define_singleton_method(nd_let_name) do || let_blocks + [{block: let_block, description: description}] end rescue NoMethodError description ||= "nd_let:#{nd_let_name} \##{1}" self.define_singleton_method(nd_let_name) do || [{block: let_block, description: description}] end end end
nd_let!(nd_let_name, description=nil, &let_block)
click to toggle source
# File lib/rspec/non_deterministic_let/helpers.rb, line 43 def nd_let!(nd_let_name, description=nil, &let_block) __update_let_state(nd_let_name, description, let_block, true) end
nd_let_context(*args, &example_group_block)
click to toggle source
# File lib/rspec/non_deterministic_let/helpers.rb, line 5 def nd_let_context(*args, &example_group_block) nd_let_name = args.shift return :end unless nd_let_name.is_a?(Symbol) send(__nd_let_state_name(nd_let_name)).each do |let_options| context(let_options[:description], *args) do if let_options[:is_exclamation] let!(nd_let_name, &let_options[:block]) else let(nd_let_name, &let_options[:block]) end # HACK: create nest using by recursive call. if nd_let_context(*args, &example_group_block) == :end self.module_exec(&example_group_block) end end end return nil end