webrat 0.3.1 → 0.3.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,4 +1,10 @@
1
- == Trunk
1
+ == 0.3.2 / 2008-11-08
2
+
3
+ * Minor enhancements
4
+
5
+ * Fixes behavior or have_tag when a block is passed. It passes the matched node(s) to the block for further specs again. (Carl Lerche)
6
+
7
+ == 0.3.1 / 2008-11-07
2
8
 
3
9
  * Minor enhancements
4
10
 
@@ -3,7 +3,7 @@ require "rubygems"
3
3
  $LOAD_PATH.unshift(File.expand_path(File.dirname(__FILE__))) unless $LOAD_PATH.include?(File.expand_path(File.dirname(__FILE__)))
4
4
 
5
5
  module Webrat
6
- VERSION = '0.3.1'
6
+ VERSION = '0.3.2'
7
7
 
8
8
  def self.root #:nodoc:
9
9
  defined?(RAILS_ROOT) ? RAILS_ROOT : Merb.root
@@ -30,8 +30,8 @@ module Webrat
30
30
  # HaveSelector:: A new have selector matcher.
31
31
  # ---
32
32
  # @api public
33
- def have_selector(expected)
34
- HaveSelector.new(expected)
33
+ def have_selector(expected, &block)
34
+ HaveSelector.new(expected, &block)
35
35
  end
36
36
  alias_method :match_selector, :have_selector
37
37
 
@@ -49,8 +49,8 @@ module Webrat
49
49
 
50
50
  end
51
51
 
52
- def have_tag(name, attributes = {})
53
- HaveTag.new([name, attributes])
52
+ def have_tag(name, attributes = {}, &block)
53
+ HaveTag.new([name, attributes], &block)
54
54
  end
55
55
  alias_method :match_tag, :have_tag
56
56
 
@@ -16,17 +16,31 @@ module Webrat
16
16
  end
17
17
 
18
18
  def matches_rexml?(stringlike)
19
+ @query = query
20
+
19
21
  @document = rexml_document(stringlike)
20
-
21
- query.all? do |q|
22
- matched = REXML::XPath.match(@document, q)
23
- matched.any? && (!block_given? || matched.all?(&@block))
24
- end
22
+
23
+ matched = @query.map do |q|
24
+ if @document.is_a?(Array)
25
+ @document.map { |d| REXML::XPath.match(d, q) }
26
+ else
27
+ REXML::XPath.match(@document, q)
28
+ end
29
+ end.flatten.compact
30
+
31
+ matched.any? && (!@block || @block.call(matched))
25
32
  end
26
33
 
27
34
  def matches_nokogiri?(stringlike)
35
+ if Nokogiri::XML::NodeSet === stringlike
36
+ @query = query.map { |q| q.gsub(%r'//', './') }
37
+ else
38
+ @query = query
39
+ end
40
+
28
41
  @document = Webrat.nokogiri_document(stringlike)
29
- @document.xpath(*query).any?
42
+ matched = @document.xpath(*@query)
43
+ matched.any? && (!@block || @block.call(matched))
30
44
  end
31
45
 
32
46
  def rexml_document(stringlike)
@@ -35,9 +49,10 @@ module Webrat
35
49
  case stringlike
36
50
  when REXML::Document
37
51
  stringlike.root
38
- when REXML::Node
52
+ when REXML::Node, Array
53
+ @query = query.map { |q| q.gsub(%r'//', './') }
39
54
  stringlike
40
- when StringIO, String
55
+ else
41
56
  begin
42
57
  REXML::Document.new(stringlike.to_s).root
43
58
  rescue REXML::ParseException => e
@@ -76,8 +91,8 @@ module Webrat
76
91
  # HaveXpath:: A new have xpath matcher.
77
92
  # ---
78
93
  # @api public
79
- def have_xpath(expected)
80
- HaveXpath.new(expected)
94
+ def have_xpath(expected, &block)
95
+ HaveXpath.new(expected, &block)
81
96
  end
82
97
  alias_method :match_xpath, :have_xpath
83
98
 
@@ -5,9 +5,11 @@ module Webrat
5
5
  def self.nokogiri_document(stringlike) #:nodoc:
6
6
  return stringlike.dom if stringlike.respond_to?(:dom)
7
7
 
8
- if stringlike === Nokogiri::HTML::Document || stringlike === Nokogiri::XML::NodeSet
8
+ if Nokogiri::HTML::Document === stringlike
9
9
  stringlike
10
- elsif stringlike === StringIO
10
+ elsif Nokogiri::XML::NodeSet === stringlike
11
+ stringlike
12
+ elsif StringIO === stringlike
11
13
  Nokogiri::HTML(stringlike.string)
12
14
  elsif stringlike.respond_to?(:body)
13
15
  Nokogiri::HTML(stringlike.body.to_s)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: webrat
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bryan Helmkamp
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-11-07 00:00:00 -05:00
12
+ date: 2008-11-08 00:00:00 -05:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -110,7 +110,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
110
110
  requirements: []
111
111
 
112
112
  rubyforge_project:
113
- rubygems_version: 1.3.1
113
+ rubygems_version: 1.3.0
114
114
  signing_key:
115
115
  specification_version: 2
116
116
  summary: Webrat. Ruby Acceptance Testing for Web applications