diff --git a/lib/capybara/result.rb b/lib/capybara/result.rb index bda27a87..a86a5a89 100644 --- a/lib/capybara/result.rb +++ b/lib/capybara/result.rb @@ -1,6 +1,9 @@ +require 'forwardable' + module Capybara class Result include Enumerable + extend Forwardable def initialize(elements, query) @elements = elements @@ -9,13 +12,7 @@ module Capybara @query = query end - def each(&block) - @result.each(&block) - end - - def first - @result.first - end + def_delegators :@result, :each, :[], :at, :size, :count, :length, :first, :last, :empty? def matches_count? @query.matches_count?(@result.size) @@ -26,10 +23,6 @@ module Capybara @result.first end - def size; @result.size; end - alias_method :length, :size - alias_method :count, :size - def find_error if @result.count == 0 Capybara::ElementNotFound.new("Unable to find #{@query.description}") @@ -66,11 +59,6 @@ module Capybara "expected not to find #{@query.description}, but there #{declension("was", "were")} #{count} #{declension("match", "matches")}" end - def empty? - @result.empty? - end - def [](key); @result[key]; end - private def declension(singular, plural, count=count) diff --git a/spec/result_spec.rb b/spec/result_spec.rb new file mode 100644 index 00000000..82de3a6d --- /dev/null +++ b/spec/result_spec.rb @@ -0,0 +1,51 @@ +require 'spec_helper' + +describe Capybara::Result do + let :string do + Capybara.string <<-STRING +