site_prism 3.2 → 3.3
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.
- checksums.yaml +4 -4
- data/README.md +2 -3
- data/lib/site_prism.rb +2 -0
- data/lib/site_prism/deprecator.rb +34 -0
- data/lib/site_prism/dsl.rb +26 -3
- data/lib/site_prism/element_checker.rb +18 -21
- data/lib/site_prism/recursion_checker.rb +76 -0
- data/lib/site_prism/version.rb +1 -1
- metadata +17 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 21261a1fb826c5500f7bc30e44729cb733b2f75b1ea7d3d5243400d9d29e8b2c
|
4
|
+
data.tar.gz: e50ab9e1b7d6c0e651d15aa6888828b789f38b7aed80511caa96d50dc767dcda
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 423f9ffb5d2b26f9619f81414074ab1006b72d7ac8516a355f6d4ffc3959aadb56bacda3a25f06c4bff8e4898609d6c5540e9e9856b3f53d613c5ec9e819125e
|
7
|
+
data.tar.gz: 1541d15de381f59d4b75c46ae322e26e3e89ccc80549f7b11d55fa05cd32ccd314ca41f67724d310d56ce48d87c6aec3cfe4a1275a1295279ec6de6ef1cb48b2
|
data/README.md
CHANGED
@@ -15,7 +15,7 @@ Make sure to add your project/company to https://github.com/natritmeyer/site_pri
|
|
15
15
|
|
16
16
|
We love it when people want to get involved with our Open Source Project.
|
17
17
|
|
18
|
-
We have a brief set of setup docs [HERE](https://github.com/
|
18
|
+
We have a brief set of setup docs [HERE](https://github.com/site-prism/site_prism/blob/master/development_setup.md)
|
19
19
|
|
20
20
|
## Supported Rubies / Browsers
|
21
21
|
|
@@ -26,7 +26,7 @@ such as 2.5 or 2.6, if for any other reason, to get a noticeable speed boost!
|
|
26
26
|
SitePrism should run on all major browsers. The gem's integration tests are ran on Chrome and Firefox.
|
27
27
|
|
28
28
|
If you find you cannot integrate nicely with SitePrism, please open an
|
29
|
-
[issue request](https://github.com/
|
29
|
+
[issue request](https://github.com/site-prism/site_prism/issues/new)
|
30
30
|
|
31
31
|
## Synopsis
|
32
32
|
|
@@ -594,7 +594,6 @@ Or even run some tests ...
|
|
594
594
|
```ruby
|
595
595
|
expect(@friends_page.names.map { |name| name.text }).to eq(['Alice', 'Bob', 'Fred'])
|
596
596
|
expect(@friends_page.names.size).to eq(3)
|
597
|
-
expect(@friends_page).to have(3).names
|
598
597
|
```
|
599
598
|
|
600
599
|
#### Testing for the existence of the element collection
|
data/lib/site_prism.rb
CHANGED
@@ -5,8 +5,10 @@ require 'addressable/template'
|
|
5
5
|
|
6
6
|
module SitePrism
|
7
7
|
autoload :AddressableUrlMatcher, 'site_prism/addressable_url_matcher'
|
8
|
+
autoload :Deprecator, 'site_prism/deprecator'
|
8
9
|
autoload :DSL, 'site_prism/dsl'
|
9
10
|
autoload :ElementChecker, 'site_prism/element_checker'
|
11
|
+
autoload :RecursionChecker, 'site_prism/recursion_checker'
|
10
12
|
autoload :Logger, 'site_prism/logger'
|
11
13
|
autoload :Page, 'site_prism/page'
|
12
14
|
autoload :Section, 'site_prism/section'
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module SitePrism
|
4
|
+
class Deprecator
|
5
|
+
class << self
|
6
|
+
def deprecate(old, new = nil)
|
7
|
+
if new
|
8
|
+
warn("#{old} is being deprecated and should no longer be used. Use #{new} instead.")
|
9
|
+
else
|
10
|
+
warn("#{old} is being deprecated and should no longer be used.")
|
11
|
+
end
|
12
|
+
|
13
|
+
warn("#{old} will be removed in SitePrism v4. You have been warned!")
|
14
|
+
end
|
15
|
+
|
16
|
+
def soft_deprecate(old, reason, new = nil)
|
17
|
+
debug("The #{old} method is changing, as is SitePrism, and is now configurable.")
|
18
|
+
debug("REASON: #{reason}.")
|
19
|
+
debug('Moving forwards into SitePrism v4, the default behaviour will change.')
|
20
|
+
debug("We advise you change to using #{new}") if new
|
21
|
+
end
|
22
|
+
|
23
|
+
private
|
24
|
+
|
25
|
+
def warn(msg)
|
26
|
+
SitePrism.logger.warn(msg)
|
27
|
+
end
|
28
|
+
|
29
|
+
def debug(msg)
|
30
|
+
SitePrism.logger.debug(msg)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
data/lib/site_prism/dsl.rb
CHANGED
@@ -131,12 +131,34 @@ module SitePrism
|
|
131
131
|
end
|
132
132
|
end
|
133
133
|
|
134
|
-
def mapped_items
|
135
|
-
|
134
|
+
def mapped_items(legacy: true)
|
135
|
+
if legacy
|
136
|
+
old_mapped_items
|
137
|
+
else
|
138
|
+
new_mapped_items
|
139
|
+
end
|
136
140
|
end
|
137
141
|
|
138
142
|
private
|
139
143
|
|
144
|
+
def old_mapped_items
|
145
|
+
SitePrism.logger.debug("Calling .mapped_items on a class is changing!
|
146
|
+
The structure will soon be changing format. This will allow #all_there? to
|
147
|
+
recurse through section / sections going forwards. The old format will remain
|
148
|
+
until a v5 has been released (And will be deprecated in v4 of site_prism")
|
149
|
+
@old_mapped_items ||= []
|
150
|
+
end
|
151
|
+
|
152
|
+
def new_mapped_items
|
153
|
+
@new_mapped_items ||= {
|
154
|
+
element: [],
|
155
|
+
elements: [],
|
156
|
+
section: [],
|
157
|
+
sections: [],
|
158
|
+
iframe: [],
|
159
|
+
}
|
160
|
+
end
|
161
|
+
|
140
162
|
def build(type, name, *find_args)
|
141
163
|
if find_args.empty?
|
142
164
|
create_error_method(name)
|
@@ -148,7 +170,8 @@ module SitePrism
|
|
148
170
|
end
|
149
171
|
|
150
172
|
def map_item(type, name)
|
151
|
-
|
173
|
+
old_mapped_items << { type => name }
|
174
|
+
new_mapped_items[type] << name.to_sym
|
152
175
|
end
|
153
176
|
|
154
177
|
def add_helper_methods(name, *find_args)
|
@@ -13,54 +13,51 @@ module SitePrism
|
|
13
13
|
# @my_page.all_there?
|
14
14
|
# => true - If the three items above are all present
|
15
15
|
#
|
16
|
-
# Note that #elements_to_check will
|
16
|
+
# Note that #elements_to_check will check the hash of mapped_items
|
17
17
|
#
|
18
|
-
# When using the recursion parameter, one of
|
18
|
+
# When using the recursion parameter, one of two values is valid.
|
19
19
|
#
|
20
20
|
# Default: 'none' => Perform no recursion when calling #all_there?
|
21
|
-
# Override: 'one' => Perform one recursive dive into all section
|
22
|
-
# items and call #all_there? on those items too.
|
23
|
-
def all_there?(recursion:
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
21
|
+
# Override: 'one' => Perform one recursive dive into all section/sections
|
22
|
+
# items and call #all_there? on all of those items too.
|
23
|
+
def all_there?(recursion: :none)
|
24
|
+
if recursion == :none
|
25
|
+
elements_to_check.all? { |name| there?(name) }
|
26
|
+
elsif recursion == :one
|
27
|
+
RecursionChecker.new(self).all_there?
|
28
28
|
else
|
29
|
-
SitePrism.logger.
|
29
|
+
SitePrism.logger.debug("Input value '#{recursion}'. Valid values are :none or :one.")
|
30
|
+
SitePrism.logger.error('Invalid recursion setting, Will not run #all_there?.')
|
30
31
|
end
|
31
32
|
end
|
32
33
|
|
33
34
|
def elements_present
|
34
|
-
_mapped_items.select { |
|
35
|
+
_mapped_items.select { |name| there?(name) }
|
35
36
|
end
|
36
37
|
|
37
38
|
private
|
38
39
|
|
39
|
-
# If the page or section has expected_items set, return expected_items
|
40
|
-
#
|
40
|
+
# If the page or section has expected_items set, return expected_items that are mapped
|
41
|
+
# otherwise just return the list of all mapped_items
|
41
42
|
def elements_to_check
|
42
43
|
if _expected_items
|
43
44
|
SitePrism.logger.debug('Expected Items has been set.')
|
44
|
-
_mapped_items.select { |
|
45
|
+
_mapped_items.select { |name| _expected_items.include?(name) }
|
45
46
|
else
|
46
47
|
_mapped_items
|
47
48
|
end
|
48
49
|
end
|
49
50
|
|
50
51
|
def _mapped_items
|
51
|
-
|
52
|
-
end
|
53
|
-
|
54
|
-
def mapped_items_list
|
55
|
-
self.class.mapped_items.uniq
|
52
|
+
self.class.mapped_items(legacy: false).values.flatten.uniq
|
56
53
|
end
|
57
54
|
|
58
55
|
def _expected_items
|
59
56
|
self.class.expected_items
|
60
57
|
end
|
61
58
|
|
62
|
-
def there?(
|
63
|
-
send("has_#{
|
59
|
+
def there?(name)
|
60
|
+
send("has_#{name}?")
|
64
61
|
end
|
65
62
|
end
|
66
63
|
end
|
@@ -0,0 +1,76 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module SitePrism
|
4
|
+
class RecursionChecker
|
5
|
+
attr_reader :instance
|
6
|
+
private :instance
|
7
|
+
|
8
|
+
def initialize(instance)
|
9
|
+
@instance = instance
|
10
|
+
end
|
11
|
+
|
12
|
+
def all_there?
|
13
|
+
regular_items_all_there = expected_item_map.flatten.all? { |name| there?(name) }
|
14
|
+
return false unless regular_items_all_there
|
15
|
+
|
16
|
+
section_all_there =
|
17
|
+
section_classes_to_check.all?(&:all_there?)
|
18
|
+
return false unless section_all_there
|
19
|
+
|
20
|
+
# Returning this final check here is fine, as the previous two checks must
|
21
|
+
# have returned +true+ in order to hit this part of the method-call
|
22
|
+
sections_classes_to_check.all?(&:all_there?)
|
23
|
+
end
|
24
|
+
|
25
|
+
def expected_item_map
|
26
|
+
[
|
27
|
+
expected(mapped_items, :element),
|
28
|
+
expected(mapped_items, :elements),
|
29
|
+
expected(mapped_items, :section),
|
30
|
+
expected(mapped_items, :sections),
|
31
|
+
expected(mapped_items, :iframe),
|
32
|
+
]
|
33
|
+
end
|
34
|
+
|
35
|
+
def expected(_map, type)
|
36
|
+
mapped_items[type].select { |name| elements_to_check.include?(name) }
|
37
|
+
end
|
38
|
+
|
39
|
+
def section_classes_to_check
|
40
|
+
expected_item_map[2].map { |name| instance.send(name) }
|
41
|
+
end
|
42
|
+
|
43
|
+
def sections_classes_to_check
|
44
|
+
expected_item_map[3].map { |name| instance.send(name) }.flatten
|
45
|
+
end
|
46
|
+
|
47
|
+
private
|
48
|
+
|
49
|
+
# If the page or section has expected_items set, return expected_items that are mapped
|
50
|
+
# otherwise just return the list of all mapped_items
|
51
|
+
def elements_to_check
|
52
|
+
if _expected_items
|
53
|
+
SitePrism.logger.debug('Expected Items has been set.')
|
54
|
+
_mapped_items.select { |name| _expected_items.include?(name) }
|
55
|
+
else
|
56
|
+
_mapped_items
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
def _mapped_items
|
61
|
+
mapped_items.values.flatten.uniq
|
62
|
+
end
|
63
|
+
|
64
|
+
def _expected_items
|
65
|
+
instance.class.expected_items
|
66
|
+
end
|
67
|
+
|
68
|
+
def there?(name)
|
69
|
+
instance.send("has_#{name}?")
|
70
|
+
end
|
71
|
+
|
72
|
+
def mapped_items
|
73
|
+
@mapped_items ||= instance.class.mapped_items(legacy: false)
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
data/lib/site_prism/version.rb
CHANGED
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.
|
4
|
+
version: '3.3'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nat Ritmeyer
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2019-
|
12
|
+
date: 2019-07-01 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: addressable
|
@@ -31,42 +31,42 @@ dependencies:
|
|
31
31
|
requirements:
|
32
32
|
- - "~>"
|
33
33
|
- !ruby/object:Gem::Version
|
34
|
-
version: '3.
|
34
|
+
version: '3.3'
|
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.
|
41
|
+
version: '3.3'
|
42
42
|
- !ruby/object:Gem::Dependency
|
43
|
-
name:
|
43
|
+
name: site_prism-all_there
|
44
44
|
requirement: !ruby/object:Gem::Requirement
|
45
45
|
requirements:
|
46
46
|
- - "~>"
|
47
47
|
- !ruby/object:Gem::Version
|
48
|
-
version:
|
49
|
-
type: :
|
48
|
+
version: 0.1.0
|
49
|
+
type: :runtime
|
50
50
|
prerelease: false
|
51
51
|
version_requirements: !ruby/object:Gem::Requirement
|
52
52
|
requirements:
|
53
53
|
- - "~>"
|
54
54
|
- !ruby/object:Gem::Version
|
55
|
-
version:
|
55
|
+
version: 0.1.0
|
56
56
|
- !ruby/object:Gem::Dependency
|
57
|
-
name:
|
57
|
+
name: cucumber
|
58
58
|
requirement: !ruby/object:Gem::Requirement
|
59
59
|
requirements:
|
60
60
|
- - "~>"
|
61
61
|
- !ruby/object:Gem::Version
|
62
|
-
version: '
|
62
|
+
version: '3.1'
|
63
63
|
type: :development
|
64
64
|
prerelease: false
|
65
65
|
version_requirements: !ruby/object:Gem::Requirement
|
66
66
|
requirements:
|
67
67
|
- - "~>"
|
68
68
|
- !ruby/object:Gem::Version
|
69
|
-
version: '
|
69
|
+
version: '3.1'
|
70
70
|
- !ruby/object:Gem::Dependency
|
71
71
|
name: rake
|
72
72
|
requirement: !ruby/object:Gem::Requirement
|
@@ -180,12 +180,14 @@ files:
|
|
180
180
|
- README.md
|
181
181
|
- lib/site_prism.rb
|
182
182
|
- lib/site_prism/addressable_url_matcher.rb
|
183
|
+
- lib/site_prism/deprecator.rb
|
183
184
|
- lib/site_prism/dsl.rb
|
184
185
|
- lib/site_prism/element_checker.rb
|
185
186
|
- lib/site_prism/error.rb
|
186
187
|
- lib/site_prism/loadable.rb
|
187
188
|
- lib/site_prism/logger.rb
|
188
189
|
- lib/site_prism/page.rb
|
190
|
+
- lib/site_prism/recursion_checker.rb
|
189
191
|
- lib/site_prism/section.rb
|
190
192
|
- lib/site_prism/version.rb
|
191
193
|
- lib/site_prism/waiter.rb
|
@@ -196,7 +198,10 @@ metadata:
|
|
196
198
|
bug_tracker_uri: https://github.com/natritmeyer/site_prism/issues
|
197
199
|
changelog_uri: https://github.com/natritmeyer/site_prism/blob/master/CHANGELOG.md
|
198
200
|
source_code_uri: https://github.com/natritmeyer/site_prism
|
199
|
-
post_install_message:
|
201
|
+
post_install_message: |-
|
202
|
+
site_prism has now moved to a new organisation to facilitate better
|
203
|
+
management of the codebase. The new organisation link is available at www.github.com/site-prism
|
204
|
+
and will house the site_prism gem plus new associated co-dependent gems.
|
200
205
|
rdoc_options: []
|
201
206
|
require_paths:
|
202
207
|
- lib
|