module Inspector::Constraints::Have

Public Class Methods

new(expected) click to toggle source
# File lib/inspector/constraints/have.rb, line 42
def initialize(expected)
  @expected        = expected.to_i
end

Public Instance Methods

inspect() click to toggle source
# File lib/inspector/constraints/have.rb, line 53
def inspect
  "#<%{constraint} %{expected}%{collection}>" % {
    :constraint => to_s.split('_').join(' '),
    :expected   => @expected.inspect,
    :collection => " #{@collection_name}".rstrip
  }
end
method_missing(method, *args, &block) click to toggle source
# File lib/inspector/constraints/have.rb, line 61
def method_missing(method, *args, &block)
  @collection_name = method
  @args = args
  @block = block
  self
end
valid?(collection_or_owner) click to toggle source
# File lib/inspector/constraints/have.rb, line 46
def valid?(collection_or_owner)
  collection = determine_collection(collection_or_owner)
  return false if collection.nil?
  query_method = determine_query_method(collection)
  compare(collection.__send__(query_method))
end

Private Instance Methods

determine_collection(collection_or_owner) click to toggle source
# File lib/inspector/constraints/have.rb, line 70
def determine_collection(collection_or_owner)
  collection_or_owner.__send__(@collection_name, *@args, &@block) if collection_or_owner.respond_to?(@collection_name)
  collection_or_owner if determine_query_method(collection_or_owner)
  # elsif (@plural_collection_name && collection_or_owner.respond_to?(@plural_collection_name))
  #   collection_or_owner.__send__(@plural_collection_name, *@args, &@block)
  # else
  #   collection_or_owner.__send__(@collection_name, *@args, &@block)
  # end
end
determine_query_method(collection) click to toggle source
# File lib/inspector/constraints/have.rb, line 80
def determine_query_method(collection)
  [:size, :length, :count].detect {|m| collection.respond_to?(m)}
end