module Turnip::RSpec
Public Class Methods
run(feature_file)
click to toggle source
# File lib/turnip/rspec.rb, line 66 def run(feature_file) feature = Turnip::Builder.build(feature_file) return nil if feature.nil? instance_eval <<-EOS, feature_file, feature.line context = ::RSpec.describe feature.name, feature.metadata_hash run_scenario_group(context, feature, feature_file) EOS end
Private Class Methods
run_scenario_group(context, group, filename)
click to toggle source
@param [RSpec::ExampleGroups] context @param [Turnip::Node::Feature|Turnip::Node::Rule] group @param [String] filename
# File lib/turnip/rspec.rb, line 84 def run_scenario_group(context, group, filename) background_steps = group.backgrounds.map(&:steps).flatten context.before do background_steps.each do |step| run_step(filename, step) end end group.scenarios.each do |scenario| step_names = (background_steps + scenario.steps).map(&:to_s) description = step_names.join(' -> ') context.describe scenario.name, scenario.metadata_hash do instance_eval <<-EOS, filename, scenario.line it description do scenario.steps.each do |step| run_step(filename, step) end end EOS end end if group.is_a?(Turnip::Node::Feature) group.rules.each do |rule| rule_context = context.context(rule.name, { turnip: true }) run_scenario_group(rule_context, rule, filename) end end end