page-object 0.7.6 → 0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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: