watirspec 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
data/History.rdoc CHANGED
@@ -1,3 +1,11 @@
1
+ === Version 0.1.2 / 2010-04-05
2
+
3
+ * Added match_array matcher for RSpec for using with Array when regular expressions are needed. It is useful when verifying html tables with #to_a method.
4
+ expected_array = ["1", "2", /\d+/, "3"]
5
+
6
+ ["1", "2", "66", "3"].should match_array(expected_array)
7
+ table(:id => "table_id").to_a.should match_array(expected_array)
8
+
1
9
  === Version 0.1.1 / 2010-04-04
2
10
 
3
11
  * Watir::Table#to_a and Watir::TableRow#to_a work now well with tr, th, td elements, colspan and nested tables.
@@ -0,0 +1,43 @@
1
+ Spec::Runner.configure do |config| #:nodoc:
2
+ config.include(WatiRspec::SpecHelper)
3
+
4
+ config.before(:all) do
5
+ open_browser_at "about:blank"
6
+ end
7
+
8
+ config.after(:all) do
9
+ close
10
+ end
11
+ end
12
+
13
+ module Spec #:nodoc:all
14
+ class ExampleGroup
15
+ subject {self}
16
+ end
17
+ end
18
+
19
+ # match_array is useful for matching arrays where some elements are regular expressions.
20
+ # expected_array = ["1", "2", /\d+/, "3"]
21
+ #
22
+ # ["1", "2", "66", "3"].should match_array(expected_array)
23
+ # table(:id => "table_id").to_a.should match_array(expected_array)
24
+ Spec::Matchers.define :match_array do |array2|
25
+ match do |array1|
26
+ raise "match_array works only with Array objects!" unless array1.is_a?(Array) && array2.is_a?(Array)
27
+ match?(array1, array2)
28
+ end
29
+
30
+ def match?(array1, array2)
31
+ array2.each_with_index do |element, i|
32
+ if element.is_a?(Array)
33
+ return false unless match?(array1[i], element)
34
+ elsif element.is_a?(Regexp)
35
+ return false unless array1[i] =~ element
36
+ else
37
+ return false unless array1[i] == element
38
+ end
39
+ end
40
+
41
+ true
42
+ end
43
+ end
@@ -1,3 +1,3 @@
1
1
  module WatiRspec
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.2"
3
3
  end
@@ -86,11 +86,7 @@ module Watir
86
86
  def to_a
87
87
  assert_exists
88
88
  y = []
89
- @o.getElementsByTagName("TR").each do |row|
90
- # make sure that this row is directly child element of the table
91
- # and not from some inner table
92
- next unless row.parentElement.parentElement.uniqueID == @o.uniqueID
93
-
89
+ @o.rows.each do |row|
94
90
  y << TableRow.new(@container, :ole_object, row).to_a
95
91
  end
96
92
  y
@@ -99,7 +95,7 @@ module Watir
99
95
 
100
96
  class TableRow < Element
101
97
 
102
- # This method returns (multi)-dimensional array of the text's in table row.
98
+ # This method returns (multi-dimensional) array of the text's in table's row.
103
99
  #
104
100
  # It works with th, td elements, colspan, rowspan and nested tables.
105
101
  def to_a
@@ -108,7 +104,10 @@ module Watir
108
104
  @o.cells.each do |cell|
109
105
  inner_tables = cell.getElementsByTagName("TABLE")
110
106
  inner_tables.each do |inner_table|
111
- y << Watir::Table.new(@container, :ole_object, inner_table).to_a
107
+ # make sure that the inner table is directly child for this cell
108
+ if inner_table.parentElement.uniqueID == cell.uniqueID
109
+ y << Table.new(@container, :ole_object, inner_table).to_a
110
+ end
112
111
  end
113
112
 
114
113
  if inner_tables.length == 0
data/lib/watirspec.rb CHANGED
@@ -5,7 +5,7 @@ require "watir"
5
5
  require "watirspec/util"
6
6
  require "watirspec/waiter"
7
7
  require "watirspec/spec_helper"
8
- require "watirspec/rspec"
8
+ require "watirspec/spec"
9
9
  require "watirspec/watir"
10
10
  require "watirspec/autoit"
11
11
 
@@ -0,0 +1,21 @@
1
+ require "spec/autorun"
2
+ require "watirspec"
3
+
4
+ describe "Array match_array matcher" do
5
+
6
+ it "matches other arrays with regexps" do
7
+ expected_ary = ["1", "2", "3", /\d/]
8
+ ["1", "2", "3", "5"].should match_array(expected_ary)
9
+
10
+ expected_ary = ["1", ["2", /\d+/], /3/]
11
+ ["1", [], "4"].should_not match_array(expected_ary)
12
+ ["1", ["2", "55"], "3"].should match_array(expected_ary)
13
+ end
14
+
15
+ it "doesn't work with other objects than Array" do
16
+ lambda {"".should match_array("")}.should raise_exception
17
+ lambda {[].should match_array("")}.should raise_exception
18
+ lambda {"".should match_array([])}.should raise_exception
19
+ end
20
+
21
+ end
@@ -23,6 +23,12 @@ describe Watir::TableRow do
23
23
  second_row.to_a.should =~ [[%w[11 12], %w[13 14]], "3"]
24
24
  end
25
25
 
26
+ it "#to_a works with deep-nested tables" do
27
+ second_row = table(:id => "deepnested")[2]
28
+ second_row.to_a.should =~ [[%w[11 12],
29
+ [[["404", "405"], ["406", "407"]], "14"]], "3"]
30
+ end
31
+
26
32
  it "#to_a works with colspan" do
27
33
  second_row = table(:id => "colspan")[2]
28
34
  second_row.to_a.should == ["3"]
@@ -34,6 +34,14 @@ describe Watir::Table do
34
34
  table(:id => "nested").to_a.should =~ expected_table
35
35
  end
36
36
 
37
+ it "#to_a works with deep-nested tables" do
38
+ expected_table = [
39
+ %w[1 2],
40
+ [[%w[11 12], [[["404", "405"], ["406", "407"]], "14"]], "3"]
41
+ ]
42
+ table(:id => "deepnested").to_a.should =~ expected_table
43
+ end
44
+
37
45
  it "#to_a works with colspan" do
38
46
  expected_table = [
39
47
  %w[1 2],
@@ -1,7 +1,7 @@
1
1
  =begin
2
- you have to require this file from your projects' environment.rb, which
2
+ you have to load this file from your projects' environment.rb, which
3
3
  will use common functionality:
4
- require_rel "../../../ui-test-common/environment.rb
4
+ WatiRspec::Util.load_common
5
5
 
6
6
  add all your require statements into this file to avoid unnecessary
7
7
  code in your other projects' files
Binary file
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 1
8
- - 1
9
- version: 0.1.1
8
+ - 2
9
+ version: 0.1.2
10
10
  platform: ruby
11
11
  authors:
12
12
  - Jarmo Pertman
@@ -122,8 +122,8 @@ files:
122
122
  - lib/spec.opts
123
123
  - lib/watirspec/autoit.rb
124
124
  - lib/watirspec/html_formatter.rb
125
- - lib/watirspec/rspec.rb
126
125
  - lib/watirspec/runner.rb
126
+ - lib/watirspec/spec.rb
127
127
  - lib/watirspec/spec_helper.rb
128
128
  - lib/watirspec/util.rb
129
129
  - lib/watirspec/version.rb
@@ -134,6 +134,7 @@ files:
134
134
  - Rakefile
135
135
  - README.rdoc
136
136
  - spec/spec_helper_spec.rb
137
+ - spec/spec_match_array_spec.rb
137
138
  - spec/util_spec.rb
138
139
  - spec/watir_table_row_spec.rb
139
140
  - spec/watir_table_spec.rb
@@ -146,6 +147,7 @@ files:
146
147
  - templates/project/ide_runner.rb
147
148
  - templates/project/spec/dummy_spec.rb
148
149
  - watirspec-0.1.1.gem
150
+ - watirspec-0.1.2.gem
149
151
  has_rdoc: true
150
152
  homepage: http://github.com/jarmo/WatiRspec
151
153
  licenses: []
@@ -187,6 +189,6 @@ rubyforge_project:
187
189
  rubygems_version: 1.3.6
188
190
  signing_key:
189
191
  specification_version: 3
190
- summary: watirspec 0.1.1
192
+ summary: watirspec 0.1.2
191
193
  test_files: []
192
194
 
@@ -1,17 +0,0 @@
1
- Spec::Runner.configure do |config| #:nodoc:
2
- config.include(WatiRspec::SpecHelper)
3
-
4
- config.before(:all) do
5
- open_browser_at "about:blank"
6
- end
7
-
8
- config.after(:all) do
9
- close
10
- end
11
- end
12
-
13
- module Spec #:nodoc:all
14
- class ExampleGroup
15
- subject {self}
16
- end
17
- end