Sha256: 743730b9761bf87881c34f071bf0ea52416f857805a5720ae137294fff09e2fa

Contents?: true

Size: 906 Bytes

Versions: 7

Compression:

Stored size: 906 Bytes

Contents

require 'hyperion'
require 'rspec/core'

module TestFrameworkHooks
  def reset_registered?
    rspec_after_example_hooks.any? do |hook_proc|
      hook_proc.source_location == method(:reset).to_proc.source_location
    end
  end

  def can_hook_reset?
    !!RSpec.current_example
  end

  def hook_reset
    hyperion = self
    rspec_hooks.register(:prepend, :after, :each) { hyperion.reset }
  end

  def rspec_after_example_hooks
    if rspec_hooks.respond_to?(:[]) # approximately rspec 3.1.0
      rspec_hooks[:after][:example].to_a.map(&:block)
    else # approximately rspec 3.3.0
      default_if_no_hooks = nil
      hook_collection = rspec_hooks.send(:hooks_for, :after, :example) {default_if_no_hooks}
      return [] unless hook_collection
      hook_collection.items_and_filters.map(&:first).map(&:block)
    end
  end

  def rspec_hooks
    RSpec.current_example.example_group.hooks
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
hyperion_http-0.6.0 lib/hyperion_test/test_framework_hooks.rb
hyperion_http-0.5.0 lib/hyperion_test/test_framework_hooks.rb
hyperion_http-0.3.0 lib/hyperion_test/test_framework_hooks.rb
hyperion_http-0.2.4 lib/hyperion_test/test_framework_hooks.rb
hyperion_http-0.2.3 lib/hyperion_test/test_framework_hooks.rb
hyperion_http-0.2.2 lib/hyperion_test/test_framework_hooks.rb
hyperion_http-0.2.1 lib/hyperion_test/test_framework_hooks.rb