Sha256: ed08ab379a1da3c8b955979c0d8225c34ce3e0c9ec3c9490e29a8f3180ac3272

Contents?: true

Size: 1.05 KB

Versions: 5

Compression:

Stored size: 1.05 KB

Contents

# -*- coding: utf-8 -*-

require 'turnip/rspec'

module Turnip
  module RSpec
    class << self
      alias_method :original_run, :run

      def run(feature_file)
        features = original_run(feature_file)
        example_groups = ::RSpec.world.example_groups[-features.length..-1]

        features.zip(example_groups).each do |feature, example_group|
          update_metadata(feature, example_group)
        end
      end

      #
      # @param  [Turnip::Builder::Feature]   feature
      # @param  [RSpec::Core::ExampleGroup]  example_group
      #
      def update_metadata(feature, example_group)
        background_steps = feature.backgrounds.map(&:steps).flatten
        examples = example_group.children

        feature.scenarios.zip(examples).each do |scenario, parent_example|
          example = parent_example.examples.first
          steps   = background_steps + scenario.steps
          tags    = (feature.tags + scenario.tags).uniq

          example.metadata[:turnip_formatter] = { steps: steps, tags: tags }
        end
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
turnip_formatter-0.5.0 lib/turnip_formatter/ext/turnip/rspec.rb
turnip_formatter-0.4.0 lib/turnip_formatter/ext/turnip/rspec.rb
turnip_formatter-0.3.4 lib/turnip_formatter/ext/turnip/rspec.rb
turnip_formatter-0.3.3 lib/turnip_formatter/ext/turnip/rspec.rb
turnip_formatter-0.3.2 lib/turnip_formatter/ext/turnip/rspec.rb