all_unfiltered is no longer needed

This commit is contained in:
Jonas Nicklas 2010-07-10 01:58:34 +02:00
parent 789f5c71b2
commit 9ba7998a5b
6 changed files with 17 additions and 33 deletions

View File

@ -1,13 +1,4 @@
module Capybara
class Document < Node
def initialize(session)
@session = session
end
def all_unfiltered(locator)
XPath.wrap(locator).paths.map do |path|
driver.find(path)
end.flatten
end
end
end

View File

@ -77,9 +77,7 @@ class Capybara::Driver::Celerity < Capybara::Driver::Base
node.fire_event(event.to_s)
end
private
def all_unfiltered(locator)
def find(locator)
noko_node = Nokogiri::HTML(driver.body).xpath(node.xpath).first
all_nodes = noko_node.xpath(locator).map { |n| n.path }.join(' | ')
driver.find(all_nodes)

View File

@ -73,12 +73,12 @@ class Capybara::Driver::Selenium < Capybara::Driver::Base
node.displayed? and node.displayed? != "false"
end
private
def all_unfiltered(locator)
def find(locator)
node.find_elements(:xpath, locator).map { |n| self.class.new(driver, n) }
end
private
def type
self[:type]
end

View File

@ -1,24 +1,12 @@
module Capybara
class Element < Node
def initialize(session, driver_node)
@session = session
@driver_node = driver_node
end
# TODO: maybe we should explicitely delegate?
def method_missing(*args)
@driver_node.send(*args)
@base.send(*args)
end
def respond_to?(method)
super || @driver_node.respond_to?(method)
end
protected
def all_unfiltered(locator)
XPath.wrap(locator).paths.map do |path|
@driver_node.find(path)
end.flatten
super || @base.respond_to?(method)
end
end
end

View File

@ -1,6 +1,11 @@
module Capybara
class Node
attr_reader :session
attr_reader :session, :base
def initialize(session, base)
@session = session
@base = base
end
def click_link_or_button(locator)
msg = "no link or button '#{locator}' found"
@ -189,7 +194,9 @@ module Capybara
end
locator = XPath.from_css(locator) if kind == :css
results = all_unfiltered(locator)
results = XPath.wrap(locator).paths.map do |path|
base.find(path)
end.flatten
if options[:text]

View File

@ -41,7 +41,7 @@ module Capybara
def_delegator :driver, :source
def document
Capybara::Document.new(self)
Capybara::Document.new(self, driver)
end
def method_missing(*args)