page_navigation 0.9 → 0.10
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/ChangeLog +4 -0
- data/lib/page_navigation.rb +23 -19
- data/lib/page_navigation/routes.rb +1 -1
- data/lib/page_navigation/version.rb +1 -1
- data/page_navigation.gemspec +8 -9
- data/spec/lib/page_navigation_spec.rb +153 -106
- metadata +19 -18
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 26e978842cccf0452d958bb6a2c7efd0fc095e57
|
4
|
+
data.tar.gz: 0c3c880153a5a05a23c8e6687d3942972c14b11d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b20c38f047c3d17a3fd4175b0eb5b5a6effa3f2f9459f04a0c5bbe977b87ca348b613a285f4d3be0a44d30686ad40fec39a226b6ffbcf1d4401809c3648d2ec9
|
7
|
+
data.tar.gz: 968fdf507da0d612bb1d7ed1cd4a2359bc39b10d7dd75e0f9868abf2b89ebbec61ccd030f2b8068991c2aa03be0ca48dece92dfe22ff132f771d577b5c061942
|
data/.gitignore
CHANGED
data/ChangeLog
CHANGED
@@ -1,3 +1,7 @@
|
|
1
|
+
=== Version 0.10 / 2016-10-18
|
2
|
+
* Improved error message when navigation methods are undefined
|
3
|
+
* Added optional 'visit' argument to navigate_to and navigate_all to visit first page (Thanks sciros)
|
4
|
+
|
1
5
|
=== Version 0.9 / 2013-05-03
|
2
6
|
* Added :from entry to navigate_to method call
|
3
7
|
|
data/lib/page_navigation.rb
CHANGED
@@ -7,7 +7,7 @@ require 'data_magic'
|
|
7
7
|
# that implement a PageObject like pattern.
|
8
8
|
#
|
9
9
|
# In order to use these two methods you must define routes. A route
|
10
|
-
# is
|
10
|
+
# is simply an array of Class/Method calls and can contain parameters
|
11
11
|
# that can be passed to the methods. Here is an example:
|
12
12
|
#
|
13
13
|
# @example Example routes defined in env.rb
|
@@ -47,22 +47,24 @@ module PageNavigation
|
|
47
47
|
# page.navigate_to(PageThree) # will use the default path
|
48
48
|
# page.navigate_to(PageThree, :using => :another_route)
|
49
49
|
#
|
50
|
-
# @param [PageObject]
|
51
|
-
# @param [Hash] a hash that contains
|
50
|
+
# @param [PageObject] page_cls a class that implements the PageObject pattern.
|
51
|
+
# @param [Hash] how a hash that contains two elements. One with the key
|
52
52
|
# :using. This will be used to lookup the route. It has a
|
53
|
-
# default value of :default.
|
54
|
-
#
|
53
|
+
# default value of :default. The other is with the key :visit. This specifies
|
54
|
+
# whether to explicitly visit the first page. It has a default value of false.
|
55
|
+
# @param [block] block an optional block to be called
|
55
56
|
# @return [PageObject] the page you are navigating to
|
56
57
|
#
|
57
|
-
def navigate_to(page_cls, how = {:using => :default}, &block)
|
58
|
+
def navigate_to(page_cls, how = {:using => :default, :visit => false}, &block)
|
58
59
|
how[:using] = :default unless how[:using]
|
60
|
+
how[:visit] = false unless how[:visit]
|
59
61
|
path = path_for how
|
60
62
|
to_index = find_index_for(path, page_cls)-1
|
61
63
|
if to_index == -1
|
62
64
|
return on(page_cls, &block)
|
63
65
|
else
|
64
66
|
start = how[:from] ? path.find_index { |entry| entry[0] == how[:from] } : 0
|
65
|
-
navigate_through_pages(path[start..to_index])
|
67
|
+
navigate_through_pages(path[start..to_index], how[:visit])
|
66
68
|
end
|
67
69
|
on(page_cls, &block)
|
68
70
|
end
|
@@ -71,11 +73,11 @@ module PageNavigation
|
|
71
73
|
# Same as navigate_to except it will start at the @current_page
|
72
74
|
# instead the beginning of the path.
|
73
75
|
#
|
74
|
-
# @param [PageObject]
|
75
|
-
# @param [Hash] a hash that contains an element with the key
|
76
|
+
# @param [PageObject] page_cls a class that implements the PageObject pattern.
|
77
|
+
# @param [Hash] how a hash that contains an element with the key
|
76
78
|
# :using. This will be used to lookup the route. It has a
|
77
79
|
# default value of :default.
|
78
|
-
# @param [block]
|
80
|
+
# @param [block] block an optional block to be called
|
79
81
|
# @return [PageObject] the page you are navigating to
|
80
82
|
#
|
81
83
|
def continue_navigation_to(page_cls, how = {:using => :default}, &block)
|
@@ -83,9 +85,9 @@ module PageNavigation
|
|
83
85
|
from_index = find_index_for(path, @current_page.class)
|
84
86
|
to_index = find_index_for(path, page_cls)-1
|
85
87
|
if from_index == to_index
|
86
|
-
navigate_through_pages([path[from_index]])
|
88
|
+
navigate_through_pages([path[from_index]], false)
|
87
89
|
else
|
88
|
-
navigate_through_pages(path[from_index..to_index])
|
90
|
+
navigate_through_pages(path[from_index..to_index], false)
|
89
91
|
end
|
90
92
|
on(page_cls, &block)
|
91
93
|
end
|
@@ -101,13 +103,14 @@ module PageNavigation
|
|
101
103
|
# page.navigate_all # will use the default path
|
102
104
|
# page.navigate_all(:using => :another_route)
|
103
105
|
#
|
104
|
-
# @param [Hash] a hash that contains
|
106
|
+
# @param [Hash] how a hash that contains two elements. One with the key
|
105
107
|
# :using. This will be used to lookup the route. It has a
|
106
|
-
# default value of :default.
|
108
|
+
# default value of :default. The other is with the key :visit. This specifies
|
109
|
+
# whether to explicitly visit the first page. It has a default value of false.
|
107
110
|
#
|
108
|
-
def navigate_all(how = {:using => :default})
|
111
|
+
def navigate_all(how = {:using => :default, :visit => false})
|
109
112
|
path = path_for how
|
110
|
-
navigate_through_pages(path[0..-1])
|
113
|
+
navigate_through_pages(path[0..-1], how[:visit])
|
111
114
|
end
|
112
115
|
|
113
116
|
private
|
@@ -122,10 +125,11 @@ module PageNavigation
|
|
122
125
|
path
|
123
126
|
end
|
124
127
|
|
125
|
-
def navigate_through_pages(pages)
|
128
|
+
def navigate_through_pages(pages, visit)
|
126
129
|
pages.each do |cls, method, *args|
|
127
|
-
page = on(cls)
|
128
|
-
|
130
|
+
page = visit ? visit(cls) : on(cls)
|
131
|
+
visit = false # visit once, for just the first page
|
132
|
+
fail("Navigation method '#{method}' not defined on #{cls}.") unless page.respond_to? method
|
129
133
|
page.send method unless args
|
130
134
|
page.send method, *args if args
|
131
135
|
end
|
data/page_navigation.gemspec
CHANGED
@@ -4,24 +4,23 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
4
|
require 'page_navigation/version'
|
5
5
|
|
6
6
|
Gem::Specification.new do |gem|
|
7
|
-
gem.name =
|
7
|
+
gem.name = 'page_navigation'
|
8
8
|
gem.version = PageNavigation::VERSION
|
9
9
|
gem.platform = Gem::Platform::RUBY
|
10
|
-
gem.authors = [
|
11
|
-
gem.email = [
|
12
|
-
gem.homepage =
|
10
|
+
gem.authors = ['Jeffrey S. Morgan','Dmitry Sharkov']
|
11
|
+
gem.email = ['jeff.morgan@leandog.com']
|
12
|
+
gem.homepage = 'http://github.com/cheezy/page_navigation'
|
13
13
|
gem.description = %q{Provides basic navigation through a collection of items that use the PageObject pattern.}
|
14
14
|
gem.summary = %q{Provides basic navigation through a collection of items that use the PageObject pattern.}
|
15
15
|
|
16
|
-
gem.rubyforge_project =
|
16
|
+
gem.rubyforge_project = 'page_navigation'
|
17
17
|
|
18
18
|
gem.files = `git ls-files`.split($/)
|
19
19
|
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
20
20
|
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
21
|
-
gem.require_paths = [
|
21
|
+
gem.require_paths = ['lib']
|
22
22
|
|
23
|
-
gem.add_dependency 'data_magic', '>= 0.
|
23
|
+
gem.add_dependency 'data_magic', '>= 0.22'
|
24
24
|
|
25
|
-
gem.add_development_dependency 'rspec', '>=
|
26
|
-
|
25
|
+
gem.add_development_dependency 'rspec', '>= 3.4.0'
|
27
26
|
end
|
@@ -1,22 +1,28 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
class
|
3
|
+
class FirstPage
|
4
4
|
end
|
5
5
|
|
6
|
-
class
|
6
|
+
class MiddlePage
|
7
7
|
end
|
8
8
|
|
9
|
-
class
|
9
|
+
class LastPage
|
10
10
|
end
|
11
11
|
|
12
12
|
class TestNavigator
|
13
13
|
include PageNavigation
|
14
14
|
attr_accessor :current_page
|
15
15
|
|
16
|
-
def on(cls)
|
16
|
+
def on(cls) #placeholder for PageFactory's on_page (alias 'on')
|
17
17
|
cls.new
|
18
18
|
end
|
19
19
|
|
20
|
+
def visit(cls) #placeholder for PageFactory's visit_page (alias 'visit')
|
21
|
+
page_instance = cls.new
|
22
|
+
page_instance.visit
|
23
|
+
page_instance
|
24
|
+
end
|
25
|
+
|
20
26
|
def class_from_string(str)
|
21
27
|
str.split('::').inject(Object) do |mod, class_name|
|
22
28
|
mod.const_get(class_name)
|
@@ -27,137 +33,178 @@ end
|
|
27
33
|
describe PageNavigation do
|
28
34
|
before(:each) do
|
29
35
|
@navigator = TestNavigator.new
|
30
|
-
DataMagic.
|
36
|
+
allow(DataMagic).to receive(:load)
|
31
37
|
end
|
32
38
|
|
33
|
-
it
|
34
|
-
expect { TestNavigator.routes = {:another => []} }.to raise_error
|
39
|
+
it 'should raise an error when you do not provide a default route' do
|
40
|
+
expect { TestNavigator.routes = {:another => []} }.to raise_error 'You must provide a :default route'
|
35
41
|
end
|
36
42
|
|
37
|
-
it
|
38
|
-
routes =
|
43
|
+
it 'should store the routes' do
|
44
|
+
routes = %w(a b c)
|
39
45
|
TestNavigator.routes = {:default => routes}
|
40
|
-
TestNavigator.routes[:default].
|
46
|
+
expect(TestNavigator.routes[:default]).to be routes
|
41
47
|
end
|
42
48
|
|
43
|
-
it
|
49
|
+
it 'should store route data' do
|
44
50
|
TestNavigator.route_data = {:default => :blah}
|
45
|
-
TestNavigator.route_data.
|
51
|
+
expect(TestNavigator.route_data).to eq ({:default => :blah})
|
46
52
|
end
|
47
53
|
|
48
|
-
it
|
49
|
-
pages = [[
|
54
|
+
it 'should navigate to a page calling the default methods' do
|
55
|
+
pages = [[FirstPage, :a_method], [MiddlePage, :b_method]]
|
50
56
|
TestNavigator.routes = {:default => pages}
|
51
|
-
fake_page = double('
|
52
|
-
|
53
|
-
fake_page.
|
54
|
-
@navigator.navigate_to(
|
57
|
+
fake_page = double('middle_page')
|
58
|
+
expect(FirstPage).to receive(:new).and_return(fake_page)
|
59
|
+
expect(fake_page).to receive(:a_method)
|
60
|
+
expect(@navigator.navigate_to(MiddlePage).class).to be MiddlePage
|
55
61
|
end
|
56
62
|
|
57
|
-
it
|
58
|
-
pages = [[
|
63
|
+
it 'should load the DataMagic file when specified' do
|
64
|
+
pages = [[FirstPage, :a_method], [MiddlePage, :b_method]]
|
59
65
|
TestNavigator.routes = {:default => pages}
|
60
66
|
TestNavigator.route_data = {:default => :dm_file}
|
61
|
-
fake_page = double('
|
62
|
-
|
63
|
-
fake_page.
|
64
|
-
DataMagic.
|
65
|
-
@navigator.navigate_to(
|
67
|
+
fake_page = double('middle_page')
|
68
|
+
expect(FirstPage).to receive(:new).and_return(fake_page)
|
69
|
+
expect(fake_page).to receive(:a_method)
|
70
|
+
expect(DataMagic).to receive(:load).with('dm_file.yml')
|
71
|
+
expect(@navigator.navigate_to(MiddlePage).class).to be MiddlePage
|
66
72
|
end
|
67
73
|
|
68
|
-
it
|
69
|
-
pages = [[
|
74
|
+
it 'should pass parameters to methods when navigating' do
|
75
|
+
pages = [[FirstPage, :a_method, 'blah'], [MiddlePage, :b_method]]
|
70
76
|
TestNavigator.routes = {:default => pages}
|
71
|
-
fake_page = double('
|
72
|
-
|
73
|
-
fake_page.
|
74
|
-
@navigator.navigate_to(
|
77
|
+
fake_page = double('middle_page')
|
78
|
+
expect(FirstPage).to receive(:new).and_return(fake_page)
|
79
|
+
expect(fake_page).to receive(:a_method).with('blah')
|
80
|
+
expect(@navigator.navigate_to(MiddlePage).class).to be MiddlePage
|
75
81
|
end
|
76
82
|
|
77
|
-
it
|
83
|
+
it 'should fail when it does not find a proper route' do
|
78
84
|
TestNavigator.routes = {:default => ['a'], :another => ['b']}
|
79
|
-
expect { @navigator.navigate_to(
|
85
|
+
expect { @navigator.navigate_to(MiddlePage, :using => :no_route) }.to raise_error
|
80
86
|
end
|
81
87
|
|
82
|
-
it
|
88
|
+
it 'should fail when no default method specified' do
|
83
89
|
TestNavigator.routes = {
|
84
|
-
:default => [[
|
90
|
+
:default => [[FirstPage, :a_method], [MiddlePage, :b_method]]
|
85
91
|
}
|
86
|
-
fake_page = double('
|
87
|
-
|
88
|
-
fake_page.
|
89
|
-
expect { @navigator.navigate_to(
|
92
|
+
fake_page = double('middle_page')
|
93
|
+
expect(FirstPage).to receive(:new).and_return(fake_page)
|
94
|
+
expect(fake_page).to receive(:respond_to?).with(:a_method).and_return(false)
|
95
|
+
expect { @navigator.navigate_to(MiddlePage) }.to raise_error
|
90
96
|
end
|
91
97
|
|
92
|
-
it
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
a_page = AnotherPage.new
|
122
|
-
AnotherPage.should_receive(:new).and_return(a_page)
|
123
|
-
a_page.should_receive(:respond_to?).with(:b_method).and_return(true)
|
124
|
-
a_page.should_receive(:b_method)
|
125
|
-
@navigator.continue_navigation_to(YetAnotherPage).class.should == YetAnotherPage
|
126
|
-
end
|
127
|
-
|
128
|
-
it "should know how to navigate an entire route including the last page" do
|
129
|
-
TestNavigator.routes = {
|
130
|
-
:default => [[FactoryTestPage, :a_method],
|
131
|
-
[AnotherPage, :b_method],
|
132
|
-
[YetAnotherPage, :c_method]]
|
133
|
-
}
|
134
|
-
f_page = FactoryTestPage.new
|
135
|
-
a_page = AnotherPage.new
|
136
|
-
y_page = YetAnotherPage.new
|
137
|
-
FactoryTestPage.should_receive(:new).and_return(f_page)
|
138
|
-
f_page.should_receive(:respond_to?).with(:a_method).and_return(true)
|
139
|
-
f_page.should_receive(:a_method)
|
140
|
-
AnotherPage.should_receive(:new).and_return(a_page)
|
141
|
-
a_page.should_receive(:respond_to?).with(:b_method).and_return(true)
|
142
|
-
a_page.should_receive(:b_method)
|
143
|
-
YetAnotherPage.should_receive(:new).and_return(y_page)
|
144
|
-
y_page.should_receive(:respond_to?).with(:c_method).and_return(true)
|
145
|
-
y_page.should_receive(:c_method)
|
98
|
+
it 'should know how to continue routing from a location' do
|
99
|
+
first_page, middle_page, last_page = mock_common_method_calls
|
100
|
+
|
101
|
+
@navigator.current_page = FirstPage.new
|
102
|
+
|
103
|
+
expect(first_page).to receive(:a_method)
|
104
|
+
expect(middle_page).to receive(:b_method)
|
105
|
+
|
106
|
+
expect(@navigator.continue_navigation_to(LastPage).class).to be LastPage
|
107
|
+
end
|
108
|
+
|
109
|
+
it 'should know how to continue routing from a location that is one page from the end' do
|
110
|
+
first_page, middle_page, last_page = mock_common_method_calls
|
111
|
+
|
112
|
+
@navigator.current_page = MiddlePage.new
|
113
|
+
|
114
|
+
expect(first_page).not_to receive(:a_method)
|
115
|
+
expect(middle_page).to receive(:b_method)
|
116
|
+
|
117
|
+
expect(@navigator.continue_navigation_to(LastPage).class).to be LastPage
|
118
|
+
end
|
119
|
+
|
120
|
+
it 'should know how to navigate an entire route including the last page' do
|
121
|
+
first_page, middle_page, last_page = mock_common_method_calls
|
122
|
+
|
123
|
+
expect(first_page).to receive(:a_method)
|
124
|
+
expect(middle_page).to receive(:b_method)
|
125
|
+
expect(last_page).to receive(:c_method)
|
126
|
+
|
146
127
|
@navigator.navigate_all
|
147
128
|
end
|
148
129
|
|
149
|
-
it
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
130
|
+
it 'should be able to start in the middle of a route and proceed' do
|
131
|
+
first_page, middle_page, last_page = mock_common_method_calls
|
132
|
+
|
133
|
+
expect(first_page).not_to receive(:a_method)
|
134
|
+
expect(middle_page).to receive(:b_method)
|
135
|
+
|
136
|
+
@navigator.navigate_to(LastPage, :from => MiddlePage)
|
137
|
+
end
|
138
|
+
|
139
|
+
it 'should visit page at start of route given visit param set to true' do
|
140
|
+
first_page, middle_page, last_page = mock_common_method_calls
|
141
|
+
|
142
|
+
expect(first_page).to receive(:visit)
|
143
|
+
expect(first_page).to receive(:a_method)
|
144
|
+
expect(middle_page).to receive(:b_method)
|
145
|
+
expect(middle_page).not_to receive(:visit)
|
146
|
+
|
147
|
+
@navigator.navigate_to(LastPage, visit: true)
|
148
|
+
end
|
149
|
+
|
150
|
+
it 'should not visit page at start of route given visit param set to false (explicit)' do
|
151
|
+
first_page, middle_page, last_page = mock_common_method_calls
|
152
|
+
|
153
|
+
expect(first_page).not_to receive(:visit)
|
154
|
+
expect(first_page).to receive(:a_method)
|
155
|
+
expect(middle_page).to receive(:b_method)
|
156
|
+
|
157
|
+
@navigator.navigate_to(LastPage, visit: false)
|
162
158
|
end
|
159
|
+
|
160
|
+
it 'should not visit page at start of route given visit param set to false (default)' do
|
161
|
+
first_page, middle_page, last_page = mock_common_method_calls
|
162
|
+
|
163
|
+
expect(first_page).not_to receive(:visit)
|
164
|
+
expect(first_page).to receive(:a_method)
|
165
|
+
expect(middle_page).to receive(:b_method)
|
166
|
+
|
167
|
+
@navigator.navigate_to(LastPage)
|
168
|
+
end
|
169
|
+
|
170
|
+
it 'should handle specification of both using and visit params' do
|
171
|
+
first_page, middle_page, last_page = mock_common_method_calls
|
172
|
+
|
173
|
+
expect(first_page).to receive(:respond_to?).with(:x_method).at_least(:once).and_return(true)
|
174
|
+
expect(first_page).to receive(:visit)
|
175
|
+
expect(first_page).to receive(:x_method)
|
176
|
+
expect(middle_page).to receive(:respond_to?).with(:y_method).at_least(:once).and_return(true)
|
177
|
+
expect(middle_page).to receive(:y_method)
|
178
|
+
expect(middle_page).not_to receive(:visit)
|
179
|
+
|
180
|
+
@navigator.navigate_to(LastPage, visit: true, using: :alt)
|
181
|
+
end
|
182
|
+
end
|
183
|
+
|
184
|
+
def mock_common_method_calls
|
185
|
+
TestNavigator.routes = {
|
186
|
+
:default => [[FirstPage, :a_method],
|
187
|
+
[MiddlePage, :b_method],
|
188
|
+
[LastPage, :c_method]],
|
189
|
+
:alt => [[FirstPage, :x_method],
|
190
|
+
[MiddlePage, :y_method],
|
191
|
+
[LastPage, :z_method]]
|
192
|
+
}
|
193
|
+
|
194
|
+
first_page = FirstPage.new
|
195
|
+
allow(FirstPage).to receive(:new).and_return(first_page)
|
196
|
+
allow(first_page).to receive(:respond_to?).with(:visit).and_return(true)
|
197
|
+
allow(first_page).to receive(:respond_to?).with(:a_method).and_return(true)
|
198
|
+
|
199
|
+
middle_page = MiddlePage.new
|
200
|
+
allow(MiddlePage).to receive(:new).and_return(middle_page)
|
201
|
+
allow(middle_page).to receive(:respond_to?).with(:visit).and_return(true)
|
202
|
+
allow(middle_page).to receive(:respond_to?).with(:b_method).and_return(true)
|
203
|
+
|
204
|
+
last_page = LastPage.new
|
205
|
+
allow(LastPage).to receive(:new).and_return(last_page)
|
206
|
+
allow(last_page).to receive(:respond_to?).with(:visit).and_return(true)
|
207
|
+
allow(last_page).to receive(:respond_to?).with(:c_method).and_return(true)
|
208
|
+
|
209
|
+
return first_page, middle_page, last_page
|
163
210
|
end
|
metadata
CHANGED
@@ -1,43 +1,44 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: page_navigation
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: '0.
|
4
|
+
version: '0.10'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jeffrey S. Morgan
|
8
|
+
- Dmitry Sharkov
|
8
9
|
autorequire:
|
9
10
|
bindir: bin
|
10
11
|
cert_chain: []
|
11
|
-
date:
|
12
|
+
date: 2016-10-18 00:00:00.000000000 Z
|
12
13
|
dependencies:
|
13
14
|
- !ruby/object:Gem::Dependency
|
14
15
|
name: data_magic
|
15
16
|
requirement: !ruby/object:Gem::Requirement
|
16
17
|
requirements:
|
17
|
-
- -
|
18
|
+
- - ">="
|
18
19
|
- !ruby/object:Gem::Version
|
19
|
-
version: '0.
|
20
|
+
version: '0.22'
|
20
21
|
type: :runtime
|
21
22
|
prerelease: false
|
22
23
|
version_requirements: !ruby/object:Gem::Requirement
|
23
24
|
requirements:
|
24
|
-
- -
|
25
|
+
- - ">="
|
25
26
|
- !ruby/object:Gem::Version
|
26
|
-
version: '0.
|
27
|
+
version: '0.22'
|
27
28
|
- !ruby/object:Gem::Dependency
|
28
29
|
name: rspec
|
29
30
|
requirement: !ruby/object:Gem::Requirement
|
30
31
|
requirements:
|
31
|
-
- -
|
32
|
+
- - ">="
|
32
33
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
34
|
+
version: 3.4.0
|
34
35
|
type: :development
|
35
36
|
prerelease: false
|
36
37
|
version_requirements: !ruby/object:Gem::Requirement
|
37
38
|
requirements:
|
38
|
-
- -
|
39
|
+
- - ">="
|
39
40
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
41
|
+
version: 3.4.0
|
41
42
|
description: Provides basic navigation through a collection of items that use the
|
42
43
|
PageObject pattern.
|
43
44
|
email:
|
@@ -46,10 +47,10 @@ executables: []
|
|
46
47
|
extensions: []
|
47
48
|
extra_rdoc_files: []
|
48
49
|
files:
|
49
|
-
- .gitignore
|
50
|
-
- .rspec
|
51
|
-
- .ruby-gemset
|
52
|
-
- .ruby-version
|
50
|
+
- ".gitignore"
|
51
|
+
- ".rspec"
|
52
|
+
- ".ruby-gemset"
|
53
|
+
- ".ruby-version"
|
53
54
|
- ChangeLog
|
54
55
|
- Gemfile
|
55
56
|
- Guardfile
|
@@ -71,17 +72,17 @@ require_paths:
|
|
71
72
|
- lib
|
72
73
|
required_ruby_version: !ruby/object:Gem::Requirement
|
73
74
|
requirements:
|
74
|
-
- -
|
75
|
+
- - ">="
|
75
76
|
- !ruby/object:Gem::Version
|
76
77
|
version: '0'
|
77
78
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
78
79
|
requirements:
|
79
|
-
- -
|
80
|
+
- - ">="
|
80
81
|
- !ruby/object:Gem::Version
|
81
82
|
version: '0'
|
82
83
|
requirements: []
|
83
|
-
rubyforge_project:
|
84
|
-
rubygems_version: 2.
|
84
|
+
rubyforge_project: page_navigation
|
85
|
+
rubygems_version: 2.5.1
|
85
86
|
signing_key:
|
86
87
|
specification_version: 4
|
87
88
|
summary: Provides basic navigation through a collection of items that use the PageObject
|