Sha256: 03c180404c32bc233e4ff9123a7c36a815a253729acc7b12778f02aa9375944b

Contents?: true

Size: 874 Bytes

Versions: 50

Compression:

Stored size: 874 Bytes

Contents

module RSpec
  module Matchers
    module BuiltIn
      class Exist < BaseMatcher
        def initialize(*expected)
          @expected = expected
        end

        def matches?(actual)
          @actual = actual
          predicates = [:exist?, :exists?].select { |p| @actual.respond_to?(p) }
          existence_values = predicates.map { |p| @actual.__send__(p, *@expected) }
          uniq_truthy_values = existence_values.map { |v| !!v }.uniq

          case uniq_truthy_values.size
          when 0; raise NoMethodError.new("#{@actual.inspect} does not respond to either #exist? or #exists?")
          when 1; existence_values.first
          else raise "#exist? and #exists? returned different values:\n\n" +
            " exist?: #{existence_values.first}\n" +
            "exists?: #{existence_values.last}"
          end
        end
      end
    end
  end
end

Version data entries

50 entries across 50 versions & 14 rubygems

Version Path
vagrant-unbundled-2.2.7.0 vendor/bundle/ruby/2.4.0/gems/rspec-expectations-2.14.5/lib/rspec/matchers/built_in/exist.rb
vagrant-unbundled-1.9.5.1 vendor/bundle/ruby/2.4.0/gems/rspec-expectations-2.14.5/lib/rspec/matchers/built_in/exist.rb
vagrant-unbundled-1.9.1.1 vendor/bundle/ruby/2.4.0/gems/rspec-expectations-2.14.5/lib/rspec/matchers/built_in/exist.rb
vagrant-unbundled-1.8.5.2 vendor/bundle/ruby/2.3.0/gems/rspec-expectations-2.14.5/lib/rspec/matchers/built_in/exist.rb
vagrant-unbundled-1.8.5.1 vendor/bundle/ruby/2.3.0/gems/rspec-expectations-2.14.5/lib/rspec/matchers/built_in/exist.rb
vagrant-unbundled-1.8.4.2 vendor/bundle/ruby/2.3.0/gems/rspec-expectations-2.14.5/lib/rspec/matchers/built_in/exist.rb
vagrant-unbundled-1.8.4.1 vendor/bundle/ruby/2.3.0/gems/rspec-expectations-2.14.5/lib/rspec/matchers/built_in/exist.rb
vagrant-unbundled-1.8.1.1 vendor/bundle/ruby/2.3.0/gems/rspec-expectations-2.14.5/lib/rspec/matchers/built_in/exist.rb
opal-rspec-cj-0.4.4 vendor_lib/rspec/matchers/built_in/exist.rb
opal-rspec-0.4.3 vendor_lib/rspec/matchers/built_in/exist.rb
vagrant-cloudstack-1.1.0 vendor/bundle/gems/rspec-expectations-2.14.5/lib/rspec/matchers/built_in/exist.rb
opal-rspec-0.4.2 vendor_lib/rspec/matchers/built_in/exist.rb
opal-rspec-0.4.1 vendor_lib/rspec/matchers/built_in/exist.rb
opal-rspec-0.4.0 vendor_lib/rspec/matchers/built_in/exist.rb
opal-rspec-0.4.0.beta4 vendor_lib/rspec/matchers/built_in/exist.rb
judge-2.0.5 vendor/bundle/ruby/2.1.0/gems/rspec-expectations-2.13.0/lib/rspec/matchers/built_in/exist.rb
rspec-expectations-2.99.2 lib/rspec/matchers/built_in/exist.rb
dxruby_rp5-0.0.4 spec/vendor/rspec-expectations-2.14.4/lib/rspec/matchers/built_in/exist.rb
rspec-expectations-2.99.1 lib/rspec/matchers/built_in/exist.rb
rspec-expectations-2.99.0 lib/rspec/matchers/built_in/exist.rb