site_prism 3.7.3 → 4.0

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,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