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