Sha256: cbc1a40b07878898a89f715a752a8b8dad8859e6ace924b41201e66520074929

Contents?: true

Size: 1.56 KB

Versions: 5

Compression:

Stored size: 1.56 KB

Contents

class TestRunner
  include MessageDriver::Client
  include RSpec::Matchers

  attr_accessor :raised_error
  attr_accessor :current_feature_file

  def run_config_code(src)
    instance_eval(src, current_feature_file)
  end

  def run_test_code(src)
    begin
      instance_eval(src, current_feature_file)
    rescue => e
      @raised_error = e
    end
  end

  def fetch_messages(destination_name)
    destination = fetch_destination(destination_name)
    pause_if_needed
    result = []
    begin
      msg = destination.pop_message
      result << msg unless msg.nil?
    end until msg.nil?
    result
  end

  def purge_destination(destination_name)
    destination = fetch_destination(destination_name)
    if destination.respond_to? :purge
      destination.purge
    else
      fetch_messages(destination)
    end
  end

  def fetch_destination(destination)
    case destination
    when String, Symbol
      MessageDriver::Broker.find_destination(destination)
    when MessageDriver::Destination::Base
      destination
    else
      raise "didn't understand destination #{destination.inspect}"
    end
  end

  def publish_table_to_destination(destination, table)
    table.hashes.each do |msg|
      destination.publish(msg[:body], msg[:headers]||{}, msg[:properties]||{})
    end
  end

  def pause_if_needed(seconds=0.1)
    seconds *= 10 if ENV['CI'] == 'true'
    case BrokerConfig.current_adapter
    when :in_memory
    else
      sleep seconds
    end
  end
end

module KnowsMyTestRunner
  def test_runner
    @test_runner ||= TestRunner.new
  end
end

World(KnowsMyTestRunner)

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
message-driver-0.2.2 features/support/test_runner.rb
message-driver-0.2.1 features/support/test_runner.rb
message-driver-0.2.0 features/support/test_runner.rb
message-driver-0.2.0.rc2 features/support/test_runner.rb
message-driver-0.2.0.rc1 features/support/test_runner.rb