site_prism 3.7.3 → 4.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SitePrism
4
- VERSION = '3.7.3'
4
+ VERSION = '4.0'
5
5
  end
@@ -3,17 +3,17 @@
3
3
  module SitePrism
4
4
  # [SitePrism::Waiter]
5
5
  class Waiter
6
- # @return Boolean
7
- #
8
6
  # A looper that will wait until the passed in block evaluates to true
9
7
  # Alternatively it will time out once the wait_time is exceeded
10
- def self.wait_until_true(wait_time = Capybara.default_max_wait_time)
8
+ #
9
+ # @return [Boolean]
10
+ def self.wait_until_true(wait_time = Capybara.default_max_wait_time, sleep_duration = 0.05)
11
11
  Timer.run(wait_time) do |timer|
12
12
  loop do
13
13
  return true if yield
14
14
  break if timer.done?
15
15
 
16
- sleep(0.05)
16
+ sleep(sleep_duration)
17
17
  end
18
18
  raise SitePrism::TimeoutError, "Timed out after #{wait_time}s."
19
19
  end
data/lib/site_prism.rb CHANGED
@@ -1,27 +1,27 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'site_prism/error'
4
+ require 'site_prism/all_there'
4
5
  require 'addressable/template'
6
+ require 'forwardable'
5
7
 
6
8
  # [SitePrism] namespace
7
9
  # We autoload our files underneath here to provide a slightly more optimal load solution
8
10
  module SitePrism
9
11
  autoload :AddressableUrlMatcher, 'site_prism/addressable_url_matcher'
10
12
  autoload :DSL, 'site_prism/dsl'
13
+ autoload :DSLValidator, 'site_prism/dsl_validator'
11
14
  autoload :Deprecator, 'site_prism/deprecator'
12
15
  autoload :ElementChecker, 'site_prism/element_checker'
13
16
  autoload :Loadable, 'site_prism/loadable'
14
17
  autoload :Logger, 'site_prism/logger'
15
18
  autoload :Page, 'site_prism/page'
16
- autoload :RecursionChecker, 'site_prism/recursion_checker'
17
- autoload :RspecMatchers, 'site_prism/rspec_matchers'
19
+ autoload :RSpecMatchers, 'site_prism/rspec_matchers'
18
20
  autoload :Section, 'site_prism/section'
19
21
  autoload :Timer, 'site_prism/timer'
20
22
  autoload :Waiter, 'site_prism/waiter'
21
23
 
22
24
  class << self
23
- attr_reader :use_all_there_gem
24
-
25
25
  def configure
26
26
  yield self
27
27
  end
@@ -72,13 +72,5 @@ module SitePrism
72
72
  def log_level
73
73
  %i[DEBUG INFO WARN ERROR FATAL UNKNOWN][logger.level]
74
74
  end
75
-
76
- # Whether you wish to use the new experimental all_there dependent gem
77
- # This will be enforced from site_prism v4 onwards as this is where
78
- # the development of this functionality will be focused
79
- def use_all_there_gem=(value)
80
- logger.debug("Setting use_all_there_gem to #{value}")
81
- @use_all_there_gem = value
82
- end
83
75
  end
84
76
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: site_prism
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.7.3
4
+ version: '4.0'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Luke Hill
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2021-09-20 00:00:00.000000000 Z
12
+ date: 2023-04-19 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: addressable
@@ -17,186 +17,166 @@ dependencies:
17
17
  requirements:
18
18
  - - "~>"
19
19
  - !ruby/object:Gem::Version
20
- version: '2.6'
20
+ version: '2.8'
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
25
  - - "~>"
26
26
  - !ruby/object:Gem::Version
27
- version: '2.6'
27
+ version: '2.8'
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: capybara
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
32
  - - "~>"
33
33
  - !ruby/object:Gem::Version
34
- version: '3.15'
34
+ version: '3.27'
35
35
  type: :runtime
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
39
  - - "~>"
40
40
  - !ruby/object:Gem::Version
41
- version: '3.15'
41
+ version: '3.27'
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: site_prism-all_there
44
44
  requirement: !ruby/object:Gem::Requirement
45
45
  requirements:
46
- - - ">="
47
- - !ruby/object:Gem::Version
48
- version: 0.3.1
49
- - - "<"
46
+ - - "~>"
50
47
  - !ruby/object:Gem::Version
51
- version: '1.0'
48
+ version: '2.0'
52
49
  type: :runtime
53
50
  prerelease: false
54
51
  version_requirements: !ruby/object:Gem::Requirement
55
52
  requirements:
56
- - - ">="
57
- - !ruby/object:Gem::Version
58
- version: 0.3.1
59
- - - "<"
53
+ - - "~>"
60
54
  - !ruby/object:Gem::Version
61
- version: '1.0'
55
+ version: '2.0'
62
56
  - !ruby/object:Gem::Dependency
63
57
  name: cucumber
64
58
  requirement: !ruby/object:Gem::Requirement
65
59
  requirements:
66
60
  - - ">"
67
61
  - !ruby/object:Gem::Version
68
- version: '4'
62
+ version: '6'
69
63
  - - "<"
70
64
  - !ruby/object:Gem::Version
71
- version: '8'
65
+ version: '9'
72
66
  type: :development
73
67
  prerelease: false
74
68
  version_requirements: !ruby/object:Gem::Requirement
75
69
  requirements:
76
70
  - - ">"
77
71
  - !ruby/object:Gem::Version
78
- version: '4'
72
+ version: '6'
79
73
  - - "<"
80
74
  - !ruby/object:Gem::Version
81
- version: '8'
82
- - !ruby/object:Gem::Dependency
83
- name: pry-byebug
84
- requirement: !ruby/object:Gem::Requirement
85
- requirements:
86
- - - ">="
87
- - !ruby/object:Gem::Version
88
- version: '0'
89
- type: :development
90
- prerelease: false
91
- version_requirements: !ruby/object:Gem::Requirement
92
- requirements:
93
- - - ">="
94
- - !ruby/object:Gem::Version
95
- version: '0'
75
+ version: '9'
96
76
  - !ruby/object:Gem::Dependency
97
77
  name: rspec
98
78
  requirement: !ruby/object:Gem::Requirement
99
79
  requirements:
100
80
  - - "~>"
101
81
  - !ruby/object:Gem::Version
102
- version: '3.10'
82
+ version: '3.12'
103
83
  type: :development
104
84
  prerelease: false
105
85
  version_requirements: !ruby/object:Gem::Requirement
106
86
  requirements:
107
87
  - - "~>"
108
88
  - !ruby/object:Gem::Version
109
- version: '3.10'
89
+ version: '3.12'
110
90
  - !ruby/object:Gem::Dependency
111
91
  name: rubocop
112
92
  requirement: !ruby/object:Gem::Requirement
113
93
  requirements:
114
94
  - - "~>"
115
95
  - !ruby/object:Gem::Version
116
- version: 1.11.0
96
+ version: 1.49.0
117
97
  type: :development
118
98
  prerelease: false
119
99
  version_requirements: !ruby/object:Gem::Requirement
120
100
  requirements:
121
101
  - - "~>"
122
102
  - !ruby/object:Gem::Version
123
- version: 1.11.0
103
+ version: 1.49.0
124
104
  - !ruby/object:Gem::Dependency
125
105
  name: rubocop-performance
126
106
  requirement: !ruby/object:Gem::Requirement
127
107
  requirements:
128
108
  - - "~>"
129
109
  - !ruby/object:Gem::Version
130
- version: 1.10.1
110
+ version: 1.16.0
131
111
  type: :development
132
112
  prerelease: false
133
113
  version_requirements: !ruby/object:Gem::Requirement
134
114
  requirements:
135
115
  - - "~>"
136
116
  - !ruby/object:Gem::Version
137
- version: 1.10.1
117
+ version: 1.16.0
138
118
  - !ruby/object:Gem::Dependency
139
119
  name: rubocop-rspec
140
120
  requirement: !ruby/object:Gem::Requirement
141
121
  requirements:
142
122
  - - "~>"
143
123
  - !ruby/object:Gem::Version
144
- version: 2.2.0
124
+ version: 2.19.0
145
125
  type: :development
146
126
  prerelease: false
147
127
  version_requirements: !ruby/object:Gem::Requirement
148
128
  requirements:
149
129
  - - "~>"
150
130
  - !ruby/object:Gem::Version
151
- version: 2.2.0
131
+ version: 2.19.0
152
132
  - !ruby/object:Gem::Dependency
153
133
  name: selenium-webdriver
154
134
  requirement: !ruby/object:Gem::Requirement
155
135
  requirements:
156
- - - ">="
157
- - !ruby/object:Gem::Version
158
- version: '3.13'
159
- - - "<"
136
+ - - "~>"
160
137
  - !ruby/object:Gem::Version
161
- version: '4.1'
138
+ version: '4.0'
162
139
  type: :development
163
140
  prerelease: false
164
141
  version_requirements: !ruby/object:Gem::Requirement
165
142
  requirements:
166
- - - ">="
167
- - !ruby/object:Gem::Version
168
- version: '3.13'
169
- - - "<"
143
+ - - "~>"
170
144
  - !ruby/object:Gem::Version
171
- version: '4.1'
145
+ version: '4.0'
172
146
  - !ruby/object:Gem::Dependency
173
147
  name: simplecov
174
148
  requirement: !ruby/object:Gem::Requirement
175
149
  requirements:
176
150
  - - "~>"
177
151
  - !ruby/object:Gem::Version
178
- version: '0.18'
152
+ version: '0.21'
179
153
  type: :development
180
154
  prerelease: false
181
155
  version_requirements: !ruby/object:Gem::Requirement
182
156
  requirements:
183
157
  - - "~>"
184
158
  - !ruby/object:Gem::Version
185
- version: '0.18'
159
+ version: '0.21'
186
160
  - !ruby/object:Gem::Dependency
187
161
  name: webdrivers
188
162
  requirement: !ruby/object:Gem::Requirement
189
163
  requirements:
190
- - - "~>"
164
+ - - ">"
191
165
  - !ruby/object:Gem::Version
192
166
  version: '4.6'
167
+ - - "<"
168
+ - !ruby/object:Gem::Version
169
+ version: '6'
193
170
  type: :development
194
171
  prerelease: false
195
172
  version_requirements: !ruby/object:Gem::Requirement
196
173
  requirements:
197
- - - "~>"
174
+ - - ">"
198
175
  - !ruby/object:Gem::Version
199
176
  version: '4.6'
177
+ - - "<"
178
+ - !ruby/object:Gem::Version
179
+ version: '6'
200
180
  description: SitePrism gives you a simple, clean and semantic DSL for describing your
201
181
  site. SitePrism implements the Page Object Model pattern on top of Capybara.
202
182
  email:
@@ -212,12 +192,12 @@ files:
212
192
  - lib/site_prism/addressable_url_matcher.rb
213
193
  - lib/site_prism/deprecator.rb
214
194
  - lib/site_prism/dsl.rb
195
+ - lib/site_prism/dsl_validator.rb
215
196
  - lib/site_prism/element_checker.rb
216
197
  - lib/site_prism/error.rb
217
198
  - lib/site_prism/loadable.rb
218
199
  - lib/site_prism/logger.rb
219
200
  - lib/site_prism/page.rb
220
- - lib/site_prism/recursion_checker.rb
221
201
  - lib/site_prism/rspec_matchers.rb
222
202
  - lib/site_prism/section.rb
223
203
  - lib/site_prism/timer.rb
@@ -238,14 +218,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
238
218
  requirements:
239
219
  - - ">="
240
220
  - !ruby/object:Gem::Version
241
- version: '2.4'
221
+ version: '2.6'
242
222
  required_rubygems_version: !ruby/object:Gem::Requirement
243
223
  requirements:
244
224
  - - ">="
245
225
  - !ruby/object:Gem::Version
246
226
  version: '0'
247
227
  requirements: []
248
- rubygems_version: 3.0.8
228
+ rubygems_version: 3.0.3.1
249
229
  signing_key:
250
230
  specification_version: 4
251
231
  summary: A Page Object Model DSL for Capybara
@@ -1,77 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module SitePrism
4
- class RecursionChecker
5
- attr_reader :instance
6
-
7
- private :instance
8
-
9
- def initialize(instance)
10
- @instance = instance
11
- end
12
-
13
- def all_there?
14
- regular_items_all_there = expected_item_map.flatten.all? { |name| there?(name) }
15
- return false unless regular_items_all_there
16
-
17
- section_all_there =
18
- section_classes_to_check.all?(&:all_there?)
19
- return false unless section_all_there
20
-
21
- # Returning this final check here is fine, as the previous two checks must
22
- # have returned +true+ in order to hit this part of the method-call
23
- sections_classes_to_check.all?(&:all_there?)
24
- end
25
-
26
- def expected_item_map
27
- [
28
- expected(mapped_items, :element),
29
- expected(mapped_items, :elements),
30
- expected(mapped_items, :section),
31
- expected(mapped_items, :sections),
32
- expected(mapped_items, :iframe)
33
- ]
34
- end
35
-
36
- def expected(_map, type)
37
- mapped_items[type].select { |name| elements_to_check.include?(name) }
38
- end
39
-
40
- def section_classes_to_check
41
- expected_item_map[2].map { |name| instance.send(name) }
42
- end
43
-
44
- def sections_classes_to_check
45
- expected_item_map[3].map { |name| instance.send(name) }.flatten
46
- end
47
-
48
- private
49
-
50
- # If the page or section has expected_items set, return expected_items that are mapped
51
- # otherwise just return the list of all mapped_items
52
- def elements_to_check
53
- if _expected_items
54
- SitePrism.logger.debug('Expected Items has been set.')
55
- _mapped_items.select { |name| _expected_items.include?(name) }
56
- else
57
- _mapped_items
58
- end
59
- end
60
-
61
- def _mapped_items
62
- mapped_items.values.flatten.uniq
63
- end
64
-
65
- def _expected_items
66
- instance.class.expected_items
67
- end
68
-
69
- def there?(name)
70
- instance.send("has_#{name}?")
71
- end
72
-
73
- def mapped_items
74
- @mapped_items ||= instance.class.mapped_items(legacy: false)
75
- end
76
- end
77
- end