module RSpec::Repetitive
Constants
- VERSION
Public Class Methods
_each_example(example_group, &block)
click to toggle source
# File lib/rspec/repetitive.rb, line 37 def self._each_example(example_group, &block) return enum_for(:_each_example, example_group) unless block_given? example_group.examples.each(&block) example_group.children.each { |child_example_group| _each_example(child_example_group, &block) } end
configure(configuration)
click to toggle source
# File lib/rspec/repetitive.rb, line 5 def self.configure(configuration) configuration.extend(self) configuration.on_example_group_definition do |top_level_example_group| tagged_examples(top_level_example_group, :"rspec-repetitive_before_block").each do |example| new_description = example.metadata[:"rspec-repetitive_example_description_prefix"] + " " + example.description register_example_from_source_example(example, new_description) do |old_block, *args| instance_exec(*args, &example.metadata[:"rspec-repetitive_before_block"]) instance_exec(*args, &old_block) end end end end
register_example_from_source_example(source_example, description, &around_example_block)
click to toggle source
# File lib/rspec/repetitive.rb, line 20 def self.register_example_from_source_example(source_example, description, &around_example_block) example_block = if block_given? ->(*args) { instance_exec(source_example.metadata[:block], *args, &around_example_block) } else source_example.metadata[:block] end new_metadata = Hash[source_example.metadata.reject { |k, v| RSpec::Core::Metadata::RESERVED_KEYS.include?(k) }]. merge(:caller => [source_example.metadata[:block].source_location.join(":")]) RSpec::Core::Example.new(source_example.example_group, description, new_metadata, example_block) end
tagged_examples(example_group, tag)
click to toggle source
# File lib/rspec/repetitive.rb, line 33 def self.tagged_examples(example_group, tag) _each_example(example_group).select { |example| example.metadata[tag] }.to_a end
Public Instance Methods
repeat_each_example(example_description_prefix = "", &block)
click to toggle source
# File lib/rspec/repetitive.rb, line 44 def repeat_each_example(example_description_prefix = "", &block) metadata[:"rspec-repetitive_before_block"] = block metadata[:"rspec-repetitive_example_description_prefix"] = example_description_prefix end