page-object 0.5.5 → 0.6

Sign up to get free protection for your applications and to get access to all the features.
@@ -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