Sha256: 956f74da2023c0ac1d0b7fb51848099e5db467a7e0c96de31acf8c5cb6444689

Contents?: true

Size: 897 Bytes

Versions: 18

Compression:

Stored size: 897 Bytes

Contents

module RSpec
  module Matchers
    # :call-seq:
    #   should exist
    #   should_not exist
    #
    # Passes if actual.exist? or actual.exists?
    def exist(*args)
      Matcher.new :exist do
        match do |actual|
          predicates = [:exist?, :exists?].select { |p| actual.respond_to?(p) }
          existance_values = predicates.map { |p| actual.send(p, *args) }
          uniq_truthy_values = existance_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; existance_values.first
            else raise "#exist? and #exists? returned different values:\n\n" +
                       " exist?: #{existance_values.first}\n" +
                       "exists?: #{existance_values.last}"
          end
        end
      end
    end
  end
end

Version data entries

18 entries across 18 versions & 4 rubygems

Version Path
horseman-0.0.4 vendor/ruby/1.9.1/gems/rspec-expectations-2.7.0/lib/rspec/matchers/exist.rb
horseman-0.0.3 vendor/ruby/1.9.1/gems/rspec-expectations-2.7.0/lib/rspec/matchers/exist.rb
horseman-0.0.2 vendor/ruby/1.9.1/gems/rspec-expectations-2.7.0/lib/rspec/matchers/exist.rb
nutshell-crm-0.0.6.alpha vendor/bundle/gems/rspec-expectations-2.7.0/lib/rspec/matchers/exist.rb
nutshell-crm-0.0.5 vendor/bundle/gems/rspec-expectations-2.7.0/lib/rspec/matchers/exist.rb
nutshell-crm-0.0.4 vendor/bundle/gems/rspec-expectations-2.7.0/lib/rspec/matchers/exist.rb
nutshell-crm-0.0.3 vendor/bundle/gems/rspec-expectations-2.7.0/lib/rspec/matchers/exist.rb
nutshell-crm-0.0.2 vendor/bundle/gems/rspec-expectations-2.7.0/lib/rspec/matchers/exist.rb
nutshell-crm-0.0.1 vendor/bundle/gems/rspec-expectations-2.7.0/lib/rspec/matchers/exist.rb
rspec-expectations-2.7.0 lib/rspec/matchers/exist.rb
rspec-expectations-2.7.0.rc1 lib/rspec/matchers/exist.rb
messagebus_ruby_api-0.4.7 spec/ruby/1.9.1/gems/rspec-expectations-2.5.0/lib/rspec/matchers/exist.rb
messagebus_ruby_api-0.4.4 spec/ruby/1.9.1/gems/rspec-expectations-2.5.0/lib/rspec/matchers/exist.rb
rspec-expectations-2.6.0 lib/rspec/matchers/exist.rb
rspec-expectations-2.6.0.rc6 lib/rspec/matchers/exist.rb
rspec-expectations-2.6.0.rc4 lib/rspec/matchers/exist.rb
rspec-expectations-2.6.0.rc2 lib/rspec/matchers/exist.rb
rspec-expectations-2.5.0 lib/rspec/matchers/exist.rb