page-object 0.5.5 → 0.6

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.
@@ -1,15 +1,23 @@
1
1
  require 'spec_helper'
2
2
  require 'page-object/page_factory'
3
3
 
4
- class FactoryTestPageObject
4
+ class FactoryTestPage
5
5
  include PageObject
6
6
  page_url "http://google.com"
7
7
  end
8
8
 
9
+ class AnotherPage
10
+ include PageObject
11
+ end
12
+
13
+ class YetAnotherPage
14
+ include PageObject
15
+ end
16
+
9
17
  class TestWorld
10
18
  include PageObject::PageFactory
11
-
12
19
  attr_accessor :browser
20
+ attr_accessor :current_page
13
21
  end
14
22
 
15
23
  describe PageObject::PageFactory do
@@ -20,21 +28,70 @@ describe PageObject::PageFactory do
20
28
 
21
29
  it "should create a new page object and execute a block" do
22
30
  @world.browser.should_not_receive(:goto)
23
- @world.on_page FactoryTestPageObject do |page|
24
- page.should be_instance_of FactoryTestPageObject
31
+ @world.on_page FactoryTestPage do |page|
32
+ page.should be_instance_of FactoryTestPage
25
33
  end
26
34
  end
27
35
 
28
36
  it "should create and visit a new page" do
29
37
  @world.browser.should_receive(:goto)
30
- @world.visit_page FactoryTestPageObject do |page|
31
- page.should be_instance_of FactoryTestPageObject
38
+ @world.visit_page FactoryTestPage do |page|
39
+ page.should be_instance_of FactoryTestPage
32
40
  end
33
41
  end
34
42
 
35
43
  it "should set an instance variable that can be used outside of the block" do
36
- page = @world.on_page FactoryTestPageObject
44
+ page = @world.on_page FactoryTestPage
37
45
  current_page = @world.instance_variable_get "@current_page"
38
46
  current_page.should === page
39
47
  end
40
- end
48
+
49
+ it "should raise an error when you do not provide a default route" do
50
+ expect { PageObject::PageFactory.routes = {:another => []} }.to raise_error
51
+ end
52
+
53
+ it "should store the routes" do
54
+ routes = ['a', 'b', 'c']
55
+ PageObject::PageFactory.routes = {:default => routes}
56
+ PageObject::PageFactory.page_object_routes[:default].should == routes
57
+ end
58
+
59
+ it "should navigate to a page calling the default methods" do
60
+ pages = [[FactoryTestPage, :a_method], [AnotherPage, :b_method]]
61
+ PageObject::PageFactory.routes = {:default => pages}
62
+ fake_page = double('a_page')
63
+ FactoryTestPage.should_receive(:new).and_return(fake_page)
64
+ fake_page.should_receive(:a_method)
65
+ @world.navigate_to(AnotherPage).class.should == AnotherPage
66
+ end
67
+
68
+ it "should fail when it does not find a proper route" do
69
+ PageObject::PageFactory.routes = {:default => ['a'], :another => ['b']}
70
+ expect { @world.navigate_to(AnotherPage, :using => :no_route) }.to raise_error
71
+ end
72
+
73
+ it "should fail when no default method specified" do
74
+ PageObject::PageFactory.routes = {
75
+ :default => [[FactoryTestPage, :a_method], [AnotherPage, :b_method]]
76
+ }
77
+ fake_page = double('a_page')
78
+ FactoryTestPage.should_receive(:new).and_return(fake_page)
79
+ fake_page.should_receive(:respond_to?).with(:a_method).and_return(false)
80
+ expect { @world.navigate_to(AnotherPage) }.to raise_error
81
+ end
82
+
83
+ it "should know how to continue routng from a location" do
84
+ PageObject::PageFactory.routes = {
85
+ :default => [[FactoryTestPage, :a_method],
86
+ [AnotherPage, :b_method],
87
+ [YetAnotherPage, :c_method]]
88
+ }
89
+ fake_page = double('a_page')
90
+ AnotherPage.should_receive(:new).and_return(fake_page)
91
+ fake_page.should_receive(:respond_to?).with(:b_method).and_return(true)
92
+ fake_page.should_receive(:b_method)
93
+ @world.current_page = FactoryTestPage.new(@world.browser)
94
+ FactoryTestPage.should_not_receive(:new)
95
+ @world.continue_navigation_to(YetAnotherPage).class.should == YetAnotherPage
96
+ end
97
+ end
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.5.5
4
+ version: '0.6'
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-12-27 00:00:00.000000000 Z
12
+ date: 2012-01-11 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: watir-webdriver
16
- requirement: &70351263125040 !ruby/object:Gem::Requirement
16
+ requirement: &70258715882600 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,21 +21,21 @@ dependencies:
21
21
  version: 0.4.1
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70351263125040
24
+ version_requirements: *70258715882600
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: selenium-webdriver
27
- requirement: &70351263124060 !ruby/object:Gem::Requirement
27
+ requirement: &70258711304260 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
31
31
  - !ruby/object:Gem::Version
32
- version: 2.15.0
32
+ version: 2.16.0
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70351263124060
35
+ version_requirements: *70258711304260
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rspec
38
- requirement: &70351263120380 !ruby/object:Gem::Requirement
38
+ requirement: &70258711301120 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: 2.6.0
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *70351263120380
46
+ version_requirements: *70258711301120
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: cucumber
49
- requirement: &70351263119680 !ruby/object:Gem::Requirement
49
+ requirement: &70258711300560 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: 1.1.0
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *70351263119680
57
+ version_requirements: *70258711300560
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: yard
60
- requirement: &70351263118960 !ruby/object:Gem::Requirement
60
+ requirement: &70258711298760 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,7 +65,7 @@ dependencies:
65
65
  version: 0.7.2
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *70351263118960
68
+ version_requirements: *70258711298760
69
69
  description: Page Object DSL that works with both Watir and Selenium
70
70
  email:
71
71
  - jeff.morgan@leandog.com
@@ -79,6 +79,7 @@ files:
79
79
  - .travis.yml
80
80
  - ChangeLog
81
81
  - Gemfile
82
+ - Guardfile
82
83
  - LICENSE
83
84
  - README.md
84
85
  - Rakefile
@@ -104,6 +105,7 @@ files:
104
105
  - features/html/modal.html
105
106
  - features/html/modal_1.html
106
107
  - features/html/modal_2.html
108
+ - features/html/multi_elements.html
107
109
  - features/html/nested_elements.html
108
110
  - features/html/nested_frame_1.html
109
111
  - features/html/nested_frame_2.html
@@ -115,6 +117,7 @@ files:
115
117
  - features/link.feature
116
118
  - features/list_item.feature
117
119
  - features/modal_dialog.feature
120
+ - features/multi_elements.feature
118
121
  - features/nested_elements.feature
119
122
  - features/ordered_list.feature
120
123
  - features/page_level_actions.feature
@@ -137,6 +140,7 @@ files:
137
140
  - features/step_definitions/link_steps.rb
138
141
  - features/step_definitions/list_item_steps.rb
139
142
  - features/step_definitions/modal_dialog_steps.rb
143
+ - features/step_definitions/multi_elements_steps.rb
140
144
  - features/step_definitions/nested_elements_steps.rb
141
145
  - features/step_definitions/ordered_list_steps.rb
142
146
  - features/step_definitions/page_level_actions_steps.rb
@@ -309,6 +313,7 @@ test_files:
309
313
  - features/html/modal.html
310
314
  - features/html/modal_1.html
311
315
  - features/html/modal_2.html
316
+ - features/html/multi_elements.html
312
317
  - features/html/nested_elements.html
313
318
  - features/html/nested_frame_1.html
314
319
  - features/html/nested_frame_2.html
@@ -320,6 +325,7 @@ test_files:
320
325
  - features/link.feature
321
326
  - features/list_item.feature
322
327
  - features/modal_dialog.feature
328
+ - features/multi_elements.feature
323
329
  - features/nested_elements.feature
324
330
  - features/ordered_list.feature
325
331
  - features/page_level_actions.feature
@@ -342,6 +348,7 @@ test_files:
342
348
  - features/step_definitions/link_steps.rb
343
349
  - features/step_definitions/list_item_steps.rb
344
350
  - features/step_definitions/modal_dialog_steps.rb
351
+ - features/step_definitions/multi_elements_steps.rb
345
352
  - features/step_definitions/nested_elements_steps.rb
346
353
  - features/step_definitions/ordered_list_steps.rb
347
354
  - features/step_definitions/page_level_actions_steps.rb