page-object 0.7.6 → 0.8

Sign up to get free protection for your applications and to get access to all the features.
data/page-object.gemspec CHANGED
@@ -19,8 +19,8 @@ Gem::Specification.new do |s|
19
19
  s.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
20
20
  s.require_paths = ["lib"]
21
21
 
22
- s.add_dependency 'watir-webdriver', '>= 0.6.1'
23
- s.add_dependency 'selenium-webdriver', '>= 2.26.0'
22
+ s.add_dependency 'watir-webdriver', '>= 0.6.2'
23
+ s.add_dependency 'selenium-webdriver', '>= 2.27.2'
24
24
 
25
25
  s.add_development_dependency 'rspec', '>= 2.6.0'
26
26
  s.add_development_dependency 'cucumber', '< 1.2.0'
@@ -0,0 +1,194 @@
1
+ require 'spec_helper'
2
+ require 'page-object'
3
+ require 'page-object/elements'
4
+
5
+ describe "Widget PageObject Extensions" do
6
+ context "When module is loaded and included before PageObject is loaded " do
7
+
8
+ class GxtTable < PageObject::Elements::Table
9
+
10
+ @protected
11
+
12
+ def child_xpath
13
+ ".//descendant::tr"
14
+ end
15
+ end
16
+
17
+ PageObject.register_widget :gxt_table, GxtTable, :div
18
+ end
19
+
20
+ class WidgetTestPageObject
21
+ include PageObject
22
+
23
+ gxt_table(:a_table, :id => "top_div_id")
24
+ gxt_table :gxt_block_table do |element|
25
+ "block_gxt_table"
26
+ end
27
+
28
+ div(:outer_div)
29
+ gxt_table(:a_nested_gxt_table) { |page| page.outer_div_element.gxt_table_element }
30
+ end
31
+
32
+ describe "Widget Element Locators" do
33
+
34
+ context "when using Watir" do
35
+ let(:watir_browser) { mock_watir_browser }
36
+ let(:watir_page_object) { WidgetTestPageObject.new(watir_browser) }
37
+
38
+ it "should find a gxt_table element" do
39
+ watir_browser.should_receive(:div).with(:id => 'blah').and_return(watir_browser)
40
+ element = watir_page_object.gxt_table_element(:id => 'blah')
41
+ element.should be_instance_of GxtTable
42
+ end
43
+ end
44
+
45
+ context "when using Selenium" do
46
+ let(:selenium_browser) { mock_selenium_browser }
47
+ let(:selenium_page_object) { WidgetTestPageObject.new(selenium_browser) }
48
+
49
+ it "should find a gxt_table element" do
50
+ selenium_browser.should_receive(:find_element).with(:id, 'blah').and_return(selenium_browser)
51
+ element = selenium_page_object.gxt_table_element(:id => 'blah')
52
+ element.should be_instance_of GxtTable
53
+ end
54
+ end
55
+ end
56
+
57
+ describe "Widget Accessors" do
58
+ let(:watir_browser) { mock_watir_browser }
59
+ let(:watir_page_object) { WidgetTestPageObject.new(watir_browser) }
60
+
61
+ context "using default identifiers" do
62
+ class WatirDefaultIdentifier
63
+ include PageObject
64
+
65
+ gxt_table :default_gxt_table
66
+ end
67
+
68
+ let(:default_identifier) { WatirDefaultIdentifier.new(watir_browser) }
69
+
70
+ def mock_driver_for(tag)
71
+ watir_browser.should_receive(tag).with(:index => 0).and_return(watir_browser)
72
+ end
73
+
74
+ it "should work for a gxt_table" do
75
+ mock_driver_for :div
76
+ default_identifier.default_gxt_table_element.should_not be_nil
77
+ end
78
+
79
+ end
80
+
81
+ describe "gxt_table accessors" do
82
+ context "when called on a page object" do
83
+ it "should generate accessor methods" do
84
+ watir_page_object.should respond_to(:a_table_element)
85
+ end
86
+
87
+ it "should call a block on the element method when present" do
88
+ watir_page_object.gxt_block_table_element.should == "block_gxt_table"
89
+ end
90
+ end
91
+
92
+ it "should retrieve the table element from the page" do
93
+ watir_browser.should_receive(:div).and_return(watir_browser)
94
+ element = watir_page_object.a_table_element
95
+ element.should be_instance_of GxtTable
96
+ end
97
+ end
98
+ end
99
+
100
+ describe "Widget Elements-GxtTable" do
101
+ describe "when mapping how to find an element" do
102
+ it "should map watir types to same" do
103
+ [:class, :id, :index, :xpath].each do |t|
104
+ identifier = GxtTable.watir_identifier_for t => 'value'
105
+ identifier.keys.first.should == t
106
+ end
107
+ end
108
+
109
+ it "should map selenium types to same" do
110
+ [:class, :id, :index, :name, :xpath].each do |t|
111
+ key, value = GxtTable.selenium_identifier_for t => 'value'
112
+ key.should == t
113
+ end
114
+ end
115
+ end
116
+
117
+ describe "interface" do
118
+ let(:gxt_table_element) { double('gxt_table_element') }
119
+
120
+ before(:each) do
121
+ gxt_table_element.stub(:[]).and_return(gxt_table_element)
122
+ gxt_table_element.stub(:find_elements).and_return(gxt_table_element)
123
+ end
124
+
125
+ context "for watir" do
126
+ let(:watir_table) { GxtTable.new(gxt_table_element, :platform => :watir_webdriver) }
127
+
128
+ it "should return a table row when indexed" do
129
+ gxt_table_element.stub(:[]).with(1).and_return(gxt_table_element)
130
+ watir_table[1].should be_instance_of PageObject::Elements::TableRow
131
+ end
132
+
133
+ it "should return the number of rows" do
134
+ gxt_table_element.stub(:wd).and_return(gxt_table_element)
135
+ gxt_table_element.should_receive(:find_elements).with(:xpath, ".//descendant::tr").and_return(gxt_table_element)
136
+ gxt_table_element.should_receive(:size).and_return(2)
137
+ watir_table.rows.should == 2
138
+ end
139
+ end
140
+
141
+ context "for selenium" do
142
+ let(:selenium_table) { GxtTable.new(gxt_table_element, :platform => :selenium_webdriver) }
143
+
144
+ it "should return a table row when indexed" do
145
+ gxt_table_element.should_receive(:find_elements).with(:xpath, ".//descendant::tr").and_return(gxt_table_element)
146
+ selenium_table[1].should be_instance_of PageObject::Elements::TableRow
147
+ end
148
+
149
+ it "should return the number of rows" do
150
+ gxt_table_element.should_receive(:find_elements).with(:xpath, ".//descendant::tr").and_return(gxt_table_element)
151
+ gxt_table_element.should_receive(:size).and_return(2)
152
+ selenium_table.rows.should == 2
153
+ end
154
+
155
+ it "should iterate over the table rows" do
156
+ selenium_table.should_receive(:rows).and_return(2)
157
+ count = 0
158
+ selenium_table.each { |e| count += 1 }
159
+ count.should == 2
160
+ end
161
+ end
162
+ end
163
+ end
164
+
165
+ describe "Element with nested elements" do
166
+ context "in Watir" do
167
+ before(:each) do
168
+ @watir_driver = Watir::Element.new(nil, {})
169
+ @watir_element = PageObject::Elements::Element.new(@watir_driver, :platform => :watir_webdriver)
170
+ end
171
+
172
+ it "should find a nested gxt_table" do
173
+ @watir_driver.should_receive(:div).and_return(@watir_driver)
174
+ @watir_element.gxt_table_element
175
+ end
176
+ end
177
+
178
+ context "in Selenium" do
179
+ before(:each) do
180
+ @selenium_driver = double('selenium')
181
+ @selenium_element = PageObject::Elements::Element.new(@selenium_driver, :platform => :selenium_webdriver)
182
+ end
183
+
184
+ it "should find a nested gxt_table" do
185
+ @selenium_driver.should_receive(:find_element).and_return(@selenium_driver)
186
+ @selenium_element.gxt_table_element
187
+ end
188
+ end
189
+ end
190
+ end
191
+
192
+
193
+
194
+
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: page-object
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.6
4
+ version: '0.8'
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-11-28 00:00:00.000000000 Z
12
+ date: 2012-12-22 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: watir-webdriver
@@ -18,7 +18,7 @@ dependencies:
18
18
  requirements:
19
19
  - - ! '>='
20
20
  - !ruby/object:Gem::Version
21
- version: 0.6.1
21
+ version: 0.6.2
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
@@ -26,7 +26,7 @@ dependencies:
26
26
  requirements:
27
27
  - - ! '>='
28
28
  - !ruby/object:Gem::Version
29
- version: 0.6.1
29
+ version: 0.6.2
30
30
  - !ruby/object:Gem::Dependency
31
31
  name: selenium-webdriver
32
32
  requirement: !ruby/object:Gem::Requirement
@@ -34,7 +34,7 @@ dependencies:
34
34
  requirements:
35
35
  - - ! '>='
36
36
  - !ruby/object:Gem::Version
37
- version: 2.26.0
37
+ version: 2.27.2
38
38
  type: :runtime
39
39
  prerelease: false
40
40
  version_requirements: !ruby/object:Gem::Requirement
@@ -42,7 +42,7 @@ dependencies:
42
42
  requirements:
43
43
  - - ! '>='
44
44
  - !ruby/object:Gem::Version
45
- version: 2.26.0
45
+ version: 2.27.2
46
46
  - !ruby/object:Gem::Dependency
47
47
  name: rspec
48
48
  requirement: !ruby/object:Gem::Requirement
@@ -137,6 +137,7 @@ files:
137
137
  - features/form.feature
138
138
  - features/frames.feature
139
139
  - features/generic_elements.feature
140
+ - features/gxt_table_extension.feature
140
141
  - features/headings.feature
141
142
  - features/hidden_field.feature
142
143
  - features/html/async.html
@@ -202,6 +203,7 @@ files:
202
203
  - features/step_definitions/form_steps.rb
203
204
  - features/step_definitions/frames_steps.rb
204
205
  - features/step_definitions/generic_element_steps.rb
206
+ - features/step_definitions/gxt_table_steps.rb
205
207
  - features/step_definitions/headings_steps.rb
206
208
  - features/step_definitions/hidden_field_steps.rb
207
209
  - features/step_definitions/image_steps.rb
@@ -316,6 +318,7 @@ files:
316
318
  - lib/page-object/platforms/watir_webdriver/text_field.rb
317
319
  - lib/page-object/platforms/watir_webdriver/unordered_list.rb
318
320
  - lib/page-object/version.rb
321
+ - lib/page-object/widgets.rb
319
322
  - page-object.gemspec
320
323
  - pageobject.gems
321
324
  - spec/page-object/element_locators_spec.rb
@@ -358,6 +361,7 @@ files:
358
361
  - spec/page-object/platforms/watir_webdriver_spec.rb
359
362
  - spec/page-object/selenium_accessors_spec.rb
360
363
  - spec/page-object/watir_accessors_spec.rb
364
+ - spec/page-object/widget_spec.rb
361
365
  - spec/spec_helper.rb
362
366
  homepage: http://github.com/cheezy/page-object
363
367
  licenses: []
@@ -373,7 +377,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
373
377
  version: '0'
374
378
  segments:
375
379
  - 0
376
- hash: 2544194930156169774
380
+ hash: -1688683572184715777
377
381
  required_rubygems_version: !ruby/object:Gem::Requirement
378
382
  none: false
379
383
  requirements:
@@ -382,7 +386,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
382
386
  version: '0'
383
387
  segments:
384
388
  - 0
385
- hash: 2544194930156169774
389
+ hash: -1688683572184715777
386
390
  requirements: []
387
391
  rubyforge_project: page-object
388
392
  rubygems_version: 1.8.24
@@ -402,6 +406,7 @@ test_files:
402
406
  - features/form.feature
403
407
  - features/frames.feature
404
408
  - features/generic_elements.feature
409
+ - features/gxt_table_extension.feature
405
410
  - features/headings.feature
406
411
  - features/hidden_field.feature
407
412
  - features/html/async.html
@@ -467,6 +472,7 @@ test_files:
467
472
  - features/step_definitions/form_steps.rb
468
473
  - features/step_definitions/frames_steps.rb
469
474
  - features/step_definitions/generic_element_steps.rb
475
+ - features/step_definitions/gxt_table_steps.rb
470
476
  - features/step_definitions/headings_steps.rb
471
477
  - features/step_definitions/hidden_field_steps.rb
472
478
  - features/step_definitions/image_steps.rb
@@ -543,5 +549,6 @@ test_files:
543
549
  - spec/page-object/platforms/watir_webdriver_spec.rb
544
550
  - spec/page-object/selenium_accessors_spec.rb
545
551
  - spec/page-object/watir_accessors_spec.rb
552
+ - spec/page-object/widget_spec.rb
546
553
  - spec/spec_helper.rb
547
554
  has_rdoc: