Sha256: d5fe0d4c185bf6ae7231a7b03e7b4feababc63f856f2874bdc06a9bfcb7aad69

Contents?: true

Size: 1.88 KB

Versions: 3

Compression:

Stored size: 1.88 KB

Contents

if defined?(RSpec)
  RSpec::Matchers.define :succeed_with do |expected|
    match_unless_raises Exception do |actual_deferred|
      resolved_value = nil
      actual_deferred.callback do |value|
        resolved_value = value
      end
      actual_deferred.errback do |error|
        if error.is_a? Exception
          raise error
        else
          raise "Callback error: #{error.inspect}"
        end
      end

      probe_event_machine :check => (lambda do |ignored|
        resolved_value.should == expected
      end), :timeout => 1
    end
  end

  RSpec::Matchers.define :be_successful do |expected|
    match_unless_raises Exception do |actual_deferred|
      done = false
      actual_deferred.callback do
        done = true
      end
      actual_deferred.errback do |error|
        if error.is_a? Exception
          raise error
        else
          raise "Callback error: #{error.inspect}"
        end
      end

      probe_event_machine :check => (lambda do |ignored|
        done
      end), :timeout => 1
    end
  end

  RSpec::Matchers.define :be_a_failure do |expected|
    match_unless_raises Exception do |actual_deferred|
      done = false
      actual_deferred.callback do
        raise "Expected error but was success"
      end
      actual_deferred.errback do |error|
        done = true
      end

      probe_event_machine :check => (lambda do |ignored|
        done
      end), :timeout => 1
    end
  end

  RSpec::Matchers.define :fail_with do |expected|
    match_unless_raises Exception do |actual_deferred|
      resolved_value = nil
      actual_deferred.errback do |value|
        resolved_value = value
      end
      actual_deferred.callback do |error|
        raise "Should have failed, but succedded with #{error}"
      end

      probe_event_machine :check => (lambda do |ignored|
        resolved_value.should == expected
      end), :timeout => 1
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
em-dextras-0.2.0 lib/em-dextras/spec/spec_matchers.rb
em-dextras-0.1.0 lib/em-dextras/spec/spec_matchers.rb
em-dextras-0.0.1 lib/em-dextras/spec/spec_matchers.rb