Sha256: 3da82aa5bee33a5002695c74b3a0fc5fd3566aaf10ce3c9160c973f46a2bb69f

Contents?: true

Size: 1.07 KB

Versions: 3

Compression:

Stored size: 1.07 KB

Contents

module Spec
  module Matchers

    class Satisfy #:nodoc:
      def initialize(&block)
        @block = block
      end

      def matches?(actual, &block)
        @block = block if block
        @actual = actual
        @block.call(actual)
      end

      def failure_message
        "expected #{@actual} to satisfy block"
      end

      def negative_failure_message
        "expected #{@actual} not to satisfy block"
      end
    end

    # :call-seq:
    #   should satisfy {}
    #   should_not satisfy {}
    #
    # Passes if the submitted block returns true. Yields target to the
    # block.
    #
    # Generally speaking, this should be thought of as a last resort when
    # you can't find any other way to specify the behaviour you wish to
    # specify.
    #
    # If you do find yourself in such a situation, you could always write
    # a custom matcher, which would likely make your specs more expressive.
    #
    # == Examples
    #
    #   5.should satisfy { |n|
    #     n > 3
    #   }
    def satisfy(&block)
      Matchers::Satisfy.new(&block)
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
picolena-0.1.6 rails_plugins/rspec/lib/spec/matchers/satisfy.rb
picolena-0.1.7 rails_plugins/rspec/lib/spec/matchers/satisfy.rb
picolena-0.1.8 rails_plugins/rspec/lib/spec/matchers/satisfy.rb