Sha256: 61c2ee484b91d7a8f35b662eb5a14b594794fa58e62fe4765c360a042d8e442d

Contents?: true

Size: 1.75 KB

Versions: 4

Compression:

Stored size: 1.75 KB

Contents

require 'forwardable'
require 'turnip_formatter/resource/step'

module TurnipFormatter
  module Resource
    module Scenario
      class Base
        attr_reader :example

        extend Forwardable
        def_delegators :raw, :line, :keyword, :name, :steps

        #
        # @param  [RSpec::Core::Example]  example
        #
        def initialize(example)
          @example = example
        end

        def steps
          @steps ||= (backgrounds.map(&:steps).flatten + raw.steps).map do |step|
            TurnipFormatter::Resource::Step.new(example, step)
          end
        end

        def id
          'scenario_' + object_id.to_s
        end

        #
        # @return  [Symbol] scenario status (:passed | :failed | :pending)
        #
        def status
          execution_result.status.to_sym
        end

        #
        # @return  [Float] scenario run time (sec)
        #
        def run_time
          execution_result.run_time
        end

        def feature_info
          path = RSpec::Core::Metadata.relative_path(feature_file_path)
          "\"#{feature.name}\" in #{path}"
        end

        def backgrounds
          feature.backgrounds
        end

        def tags
          @tags ||= (feature.tag_names + raw.tag_names).sort.uniq
        end

        def feature
          example.metadata[:turnip_formatter][:feature]
        end

        private

        def raw
          @raw = example.metadata[:turnip_formatter][:scenario]
        end

        def feature_file_path
          example.metadata[:file_path]
        end

        #
        # @return  [OpenStruct or ::RSpec::Core::Example::ExecutionResult]
        #
        def execution_result
          @execution_result ||= example.execution_result
        end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
turnip_formatter-0.6.0.pre.beta.6 lib/turnip_formatter/resource/scenario/base.rb
turnip_formatter-0.6.0.pre.beta.5 lib/turnip_formatter/resource/scenario/base.rb
turnip_formatter-0.6.0.pre.beta.4 lib/turnip_formatter/resource/scenario/base.rb
turnip_formatter-0.6.0.pre.beta.3 lib/turnip_formatter/resource/scenario/base.rb