site_prism 3.7.1 → 3.7.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c5deda0d9df9e83e2a66663a217cf5c434fd3ed25abae0d14778d99cd5db1c0f
4
- data.tar.gz: 6c86aff27c00c5e91b01667f7da1f9ee6e2d33d4f95d18fbb0cfdd9fd44779c5
3
+ metadata.gz: 177884e3ba39ca8a9e1fa0025274c31dd1d765adbba6983f86150feeef4fa301
4
+ data.tar.gz: 0ecc59ece70808dbb774128d1cf5e7f3fcdaa4d449b27be29f403633b3535c24
5
5
  SHA512:
6
- metadata.gz: 254398e151d390326bf085d0746391aedd247d1ed8bf47909d8fb87752b6cedd056ff32c14f324d5b33f4b922734ed01ec2467f64be59a8d97a07cf8aa002eea
7
- data.tar.gz: 652781ebe825ed5f943ca0f8480a9b5fbd511e81e6c12d9ce95de7c3239073d4499f4165044c8c58888aeabf0cf2d9bc76e4ca6f2ae6baa6996093117577005a
6
+ metadata.gz: 5f402e20e4888f02d4c7695289239c1b4dfca44b47e90029699efe4ec050b2d173f78c1e427f1dbd0647c9b8238397f1c34d22697601b5f36689266f942729b7
7
+ data.tar.gz: 549ac4b1187a96807c34475961999bcfaa6761fceba70cf13bdcedfdce13c86b23aad1fa700bcda122841a057bd258023f26ffc270194a8258d98756b3bf294c
@@ -5,6 +5,7 @@ module SitePrism
5
5
  class Deprecator
6
6
  class << self
7
7
  # @return SitePrism.logger.warn(msg)
8
+ #
8
9
  # Tells the user that they are using old functionality, which needs removing in the
9
10
  # next major version
10
11
  def deprecate(old, new = nil)
@@ -18,6 +19,7 @@ module SitePrism
18
19
  end
19
20
 
20
21
  # @return SitePrism.logger.debug(msg)
22
+ #
21
23
  # Tells the user that they are using functionality which is non-optimal
22
24
  # The functionality should usually provide a reason for it being poor, as well as an
23
25
  # optional way of upgrading to something different
@@ -197,6 +197,9 @@ module SitePrism
197
197
  end
198
198
  end
199
199
 
200
+ # Return a list of all mapped items on a SitePrism class instance (Page or Section)
201
+ # If legacy is set to true (Default) -> @return [Array]
202
+ # If legacy is set to false (New behaviour) -> @return [Hash]
200
203
  def mapped_items(legacy: true)
201
204
  return old_mapped_items if legacy
202
205
 
@@ -342,7 +345,7 @@ module SitePrism
342
345
 
343
346
  def deduce_section_class(base_class, &block)
344
347
  klass = base_class
345
- klass = Class.new(klass || SitePrism::Section, &block) if block_given?
348
+ klass = Class.new(klass || SitePrism::Section, &block) if block
346
349
  return klass if klass
347
350
 
348
351
  raise ArgumentError, 'You should provide descendant of SitePrism::Section class or/and a block as the second argument.'
@@ -35,10 +35,16 @@ module SitePrism
35
35
  end
36
36
  end
37
37
 
38
+ # Returns each element that is currently present inside the scope being tested
39
+ #
40
+ # @return [Array]
38
41
  def elements_present
39
42
  _mapped_items.select { |name| there?(name) }
40
43
  end
41
44
 
45
+ # Returns each element that is not currently present inside the scope being tested
46
+ #
47
+ # @return [Array]
42
48
  def elements_missing
43
49
  elements_to_check.reject { |name| there?(name) }
44
50
  end
@@ -10,19 +10,34 @@ module SitePrism
10
10
  class << self
11
11
  attr_reader :url
12
12
 
13
+ # Sets and returns the specific url that will be loaded for a page object
14
+ #
15
+ # @return [String]
13
16
  def set_url(page_url)
14
17
  @url = page_url.to_s
15
18
  end
16
19
 
20
+ # Sets and returns the specific url matcher that will be used to validate the page is loaded
21
+ #
22
+ # @return [Regexp]
17
23
  def set_url_matcher(page_url_matcher)
18
24
  @url_matcher = page_url_matcher
19
25
  end
20
26
 
27
+ # The specific url matcher that is used to validate the page is loaded.
28
+ # When one hasn't been previously set, use the url that was set as a direct Regexp exact matcher
29
+ #
30
+ # @return [Regexp]
21
31
  def url_matcher
22
32
  @url_matcher ||= url
23
33
  end
24
34
  end
25
35
 
36
+ # Where a Capybara HTML fragment has been directly injected into `#load` as a block return this loaded fragment
37
+ # Where a page has been directly navigated to through traditional means (i.e. Selenium), return an instance of the
38
+ # current Capybara session (With all applicable methods)
39
+ #
40
+ # @return [Capybara::Node::Simple || Capybara::Session]
26
41
  def page
27
42
  (defined?(@page) && @page) || Capybara.current_session
28
43
  end
@@ -134,7 +149,7 @@ module SitePrism
134
149
  visit expanded_url
135
150
  if with_validations
136
151
  when_loaded(&block)
137
- elsif block_given?
152
+ elsif block
138
153
  yield self
139
154
  end
140
155
  end
@@ -34,7 +34,7 @@ module SitePrism
34
34
  def initialize(parent, root_element, &block)
35
35
  @parent = parent
36
36
  @root_element = root_element
37
- within(&block) if block_given?
37
+ within(&block) if block
38
38
  end
39
39
 
40
40
  # Send all root_element methods through `#root_element`
@@ -1,9 +1,15 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SitePrism
4
+ # [SitePrism::Timer]
5
+ #
6
+ # Used to count asynchronously towards an overall desired duration or condition (Block)
4
7
  class Timer
5
8
  attr_reader :wait_time
6
9
 
10
+ # Return &block
11
+ #
12
+ # Count towards a specified time (Supplied)
7
13
  def self.run(wait_time, &block)
8
14
  new(wait_time).run(&block)
9
15
  end
@@ -13,10 +19,16 @@ module SitePrism
13
19
  @done = false
14
20
  end
15
21
 
22
+ # Return Boolean
23
+ #
24
+ # Whether the timer has completed
16
25
  def done?
17
26
  @done == true
18
27
  end
19
28
 
29
+ # Return &block
30
+ #
31
+ # Start the Timer and re-evaluate the block repeatedly
20
32
  def run
21
33
  start
22
34
  yield self
@@ -24,6 +36,9 @@ module SitePrism
24
36
  stop
25
37
  end
26
38
 
39
+ # Return [Boolean, Nil]
40
+ #
41
+ # Start the Timer in a separate process
27
42
  def start
28
43
  stop
29
44
  return if wait_time.zero?
@@ -35,6 +50,9 @@ module SitePrism
35
50
  end
36
51
  end
37
52
 
53
+ # Return True
54
+ #
55
+ # Forcibly stop the timer, and kill any threads created by it
38
56
  def stop
39
57
  if @thread
40
58
  @thread.kill
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SitePrism
4
- VERSION = '3.7.1'
4
+ VERSION = '3.7.2'
5
5
  end
@@ -1,18 +1,19 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SitePrism
4
+ # [SitePrism::Waiter]
4
5
  class Waiter
5
- def self.sleep_duration
6
- 0.05
7
- end
8
-
6
+ # @return Boolean
7
+ #
8
+ # A looper that will wait until the passed in block evaluates to true
9
+ # Alternatively it will time out once the wait_time is exceeded
9
10
  def self.wait_until_true(wait_time = Capybara.default_max_wait_time)
10
11
  Timer.run(wait_time) do |timer|
11
12
  loop do
12
13
  return true if yield
13
14
  break if timer.done?
14
15
 
15
- sleep(sleep_duration)
16
+ sleep(0.05)
16
17
  end
17
18
  raise SitePrism::TimeoutError, "Timed out after #{wait_time}s."
18
19
  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.1
4
+ version: 3.7.2
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-02-19 00:00:00.000000000 Z
12
+ date: 2021-08-23 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: addressable
@@ -63,16 +63,22 @@ dependencies:
63
63
  name: cucumber
64
64
  requirement: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - "~>"
66
+ - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '4.0'
69
+ - - "<"
70
+ - !ruby/object:Gem::Version
71
+ version: '5.2'
69
72
  type: :development
70
73
  prerelease: false
71
74
  version_requirements: !ruby/object:Gem::Requirement
72
75
  requirements:
73
- - - "~>"
76
+ - - ">="
74
77
  - !ruby/object:Gem::Version
75
78
  version: '4.0'
79
+ - - "<"
80
+ - !ruby/object:Gem::Version
81
+ version: '5.2'
76
82
  - !ruby/object:Gem::Dependency
77
83
  name: pry-byebug
78
84
  requirement: !ruby/object:Gem::Requirement
@@ -121,42 +127,42 @@ dependencies:
121
127
  requirements:
122
128
  - - "~>"
123
129
  - !ruby/object:Gem::Version
124
- version: 0.90.0
130
+ version: 0.93.0
125
131
  type: :development
126
132
  prerelease: false
127
133
  version_requirements: !ruby/object:Gem::Requirement
128
134
  requirements:
129
135
  - - "~>"
130
136
  - !ruby/object:Gem::Version
131
- version: 0.90.0
137
+ version: 0.93.0
132
138
  - !ruby/object:Gem::Dependency
133
139
  name: rubocop-performance
134
140
  requirement: !ruby/object:Gem::Requirement
135
141
  requirements:
136
142
  - - "~>"
137
143
  - !ruby/object:Gem::Version
138
- version: 1.8.1
144
+ version: 1.10.1
139
145
  type: :development
140
146
  prerelease: false
141
147
  version_requirements: !ruby/object:Gem::Requirement
142
148
  requirements:
143
149
  - - "~>"
144
150
  - !ruby/object:Gem::Version
145
- version: 1.8.1
151
+ version: 1.10.1
146
152
  - !ruby/object:Gem::Dependency
147
153
  name: rubocop-rspec
148
154
  requirement: !ruby/object:Gem::Requirement
149
155
  requirements:
150
156
  - - "~>"
151
157
  - !ruby/object:Gem::Version
152
- version: 1.38.0
158
+ version: 1.44.0
153
159
  type: :development
154
160
  prerelease: false
155
161
  version_requirements: !ruby/object:Gem::Requirement
156
162
  requirements:
157
163
  - - "~>"
158
164
  - !ruby/object:Gem::Version
159
- version: 1.38.0
165
+ version: 1.44.0
160
166
  - !ruby/object:Gem::Dependency
161
167
  name: selenium-webdriver
162
168
  requirement: !ruby/object:Gem::Requirement
@@ -183,28 +189,28 @@ dependencies:
183
189
  requirements:
184
190
  - - "~>"
185
191
  - !ruby/object:Gem::Version
186
- version: '0.17'
192
+ version: '0.18'
187
193
  type: :development
188
194
  prerelease: false
189
195
  version_requirements: !ruby/object:Gem::Requirement
190
196
  requirements:
191
197
  - - "~>"
192
198
  - !ruby/object:Gem::Version
193
- version: '0.17'
199
+ version: '0.18'
194
200
  - !ruby/object:Gem::Dependency
195
201
  name: webdrivers
196
202
  requirement: !ruby/object:Gem::Requirement
197
203
  requirements:
198
204
  - - "~>"
199
205
  - !ruby/object:Gem::Version
200
- version: '4.3'
206
+ version: '4.5'
201
207
  type: :development
202
208
  prerelease: false
203
209
  version_requirements: !ruby/object:Gem::Requirement
204
210
  requirements:
205
211
  - - "~>"
206
212
  - !ruby/object:Gem::Version
207
- version: '4.3'
213
+ version: '4.5'
208
214
  description: SitePrism gives you a simple, clean and semantic DSL for describing your
209
215
  site. SitePrism implements the Page Object Model pattern on top of Capybara.
210
216
  email: