Class: Capybara::RSpecMatchers::HaveMatcher

Inherits:
Object
  • Object
show all
Defined in:
lib/capybara/rspec/matchers.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name, locator, options = {}, &block) ⇒ HaveMatcher

Returns a new instance of HaveMatcher.



46
47
48
49
50
51
# File 'lib/capybara/rspec/matchers.rb', line 46

def initialize(name, locator, options={}, &block)
  @name = name
  @locator = locator
  @options = options
  @failure_message = block
end

Instance Attribute Details

#actualObject (readonly)

Returns the value of attribute actual.



44
45
46
# File 'lib/capybara/rspec/matchers.rb', line 44

def actual
  @actual
end

#failure_messageObject (readonly)

Returns the value of attribute failure_message.



44
45
46
# File 'lib/capybara/rspec/matchers.rb', line 44

def failure_message
  @failure_message
end

#locatorObject (readonly)

Returns the value of attribute locator.



44
45
46
# File 'lib/capybara/rspec/matchers.rb', line 44

def locator
  @locator
end

#nameObject (readonly)

Returns the value of attribute name.



44
45
46
# File 'lib/capybara/rspec/matchers.rb', line 44

def name
  @name
end

#optionsObject (readonly)

Returns the value of attribute options.



44
45
46
# File 'lib/capybara/rspec/matchers.rb', line 44

def options
  @options
end

Instance Method Details

#argumentsObject



53
54
55
# File 'lib/capybara/rspec/matchers.rb', line 53

def arguments
  if options.empty? then [locator] else [locator, options] end
end

#descriptionObject



81
82
83
# File 'lib/capybara/rspec/matchers.rb', line 81

def description
  "has #{selector_name}"
end

#does_not_match?(actual) ⇒ Boolean

Returns:

  • (Boolean)


62
63
64
65
# File 'lib/capybara/rspec/matchers.rb', line 62

def does_not_match?(actual)
  @actual = wrap(actual)
  @actual.send(:"has_no_#{name}?", *arguments)
end

#failure_message_for_shouldObject



67
68
69
70
71
72
73
74
75
# File 'lib/capybara/rspec/matchers.rb', line 67

def failure_message_for_should
  if failure_message
    failure_message.call(actual, self)
  elsif(@options[:count])
    "expected #{selector_name} to be returned #{@options[:count]} times"
  else
    "expected #{selector_name} to return something"
  end
end

#failure_message_for_should_notObject



77
78
79
# File 'lib/capybara/rspec/matchers.rb', line 77

def failure_message_for_should_not
  "expected #{selector_name} not to return anything"
end

#matches?(actual) ⇒ Boolean

Returns:

  • (Boolean)


57
58
59
60
# File 'lib/capybara/rspec/matchers.rb', line 57

def matches?(actual)
  @actual = wrap(actual)
  @actual.send(:"has_#{name}?", *arguments)
end

#selector_nameObject



85
86
87
88
89
# File 'lib/capybara/rspec/matchers.rb', line 85

def selector_name
  selector_name = "#{name} #{locator.inspect}"
  selector_name << " with text #{options[:text].inspect}" if options[:text]
  selector_name
end

#wrap(actual) ⇒ Object



91
92
93
94
95
96
97
# File 'lib/capybara/rspec/matchers.rb', line 91

def wrap(actual)
  if actual.respond_to?("has_selector?")
    actual
  else
    Capybara.string(actual.to_s)
  end
end