Move error raise into query

This commit is contained in:
Jonas Nicklas 2012-02-01 15:10:45 +01:00
parent 4c1b124009
commit c7367c0511
3 changed files with 11 additions and 12 deletions

View File

@ -27,7 +27,7 @@ module Capybara
query = query(*args)
synchronize do
results = resolve(query)
raise_find_error(query) unless results.length == 1
query.raise_error!(:find, results) unless results.length == 1
results.first
end
end
@ -143,12 +143,6 @@ module Capybara
end.select { |node| query.matches_filters?(node) }
end
end
protected
def raise_find_error(query)
raise Capybara::ElementNotFound, query.failure_message(:find, self)
end
end
end
end

View File

@ -1,8 +1,9 @@
module Capybara
class Query
attr_accessor :selector, :locator, :options, :xpath
attr_accessor :node, :selector, :locator, :options, :xpath
def initialize(node, *args)
@node = node
@options = if args.last.is_a?(Hash) then args.pop.dup else {} end
unless options.has_key?(:visible)
@options[:visible] = Capybara.ignore_hidden_elements
@ -20,7 +21,7 @@ module Capybara
@xpath = @selector.call(@locator).to_s
end
def failure_message(type, node)
def failure_message(type)
message = selector.failure_message.call(node, self) if selector.failure_message
message ||= options[:message]
if type == :assert
@ -31,7 +32,7 @@ module Capybara
message
end
def negative_failure_message(type, node)
def negative_failure_message(type)
"expected #{description} not to return anything"
end
@ -55,6 +56,10 @@ module Capybara
true
end
def raise_error!(type, results)
raise Capybara::ElementNotFound, failure_message(type)
end
def matches_count?(nodes)
case
when nodes.empty?

View File

@ -16,11 +16,11 @@ module Capybara
end
def failure_message_for_should
query.failure_message(:assert, @actual)
query.failure_message(:assert)
end
def failure_message_for_should_not
query.negative_failure_message(:assert, @actual)
query.negative_failure_message(:assert)
end
def description