site_prism 3.0.1 → 3.0.2
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 +1 -1
- data/lib/site_prism.rb +1 -1
- data/lib/site_prism/{element_container.rb → dsl.rb} +18 -1
- data/lib/site_prism/element_checker.rb +34 -8
- data/lib/site_prism/page.rb +1 -1
- data/lib/site_prism/section.rb +1 -1
- data/lib/site_prism/version.rb +1 -1
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 99cb79c78e6dba7cac9a03b9bdc0bd5c3b68a25995ec38160e9705274ab04cfd
|
4
|
+
data.tar.gz: 6d91b63cd449fe3f16a364008d5178d7175bd6c4bf65297e5dfe5ae1a0673848
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2de60bd237a1d29d1594ba3a8db75e01a09310fe78e48a81d7ea0b1dd7fa53a36d6bdb274c4b592daa0c39a2768c7a371a2939d35177598b146d018dd6ff35f9
|
7
|
+
data.tar.gz: bbc12f3639fc7bfe30ab28b3dd65b68f30f4c8c6943e306ae849a3b4e16dda104f96c746f21e3b5fe8162c7a4e05388ba9aebe5fd61c024fc27abc4df0b74a16
|
data/README.md
CHANGED
@@ -17,7 +17,7 @@ We have a brief set of setup docs [HERE](https://github.com/natritmeyer/site_pri
|
|
17
17
|
|
18
18
|
## Supported Rubies / Browsers
|
19
19
|
|
20
|
-
SitePrism is built and tested to work on Ruby 2.3 - 2.
|
20
|
+
SitePrism is built and tested to work on Ruby 2.3 - 2.6. There is also some limited support for the Ruby 2.2 series.
|
21
21
|
|
22
22
|
SitePrism should run on all major browsers. The gem's integration tests are ran on Chrome and Firefox.
|
23
23
|
|
data/lib/site_prism.rb
CHANGED
@@ -5,8 +5,8 @@ require 'addressable/template'
|
|
5
5
|
|
6
6
|
module SitePrism
|
7
7
|
autoload :AddressableUrlMatcher, 'site_prism/addressable_url_matcher'
|
8
|
+
autoload :DSL, 'site_prism/dsl'
|
8
9
|
autoload :ElementChecker, 'site_prism/element_checker'
|
9
|
-
autoload :ElementContainer, 'site_prism/element_container'
|
10
10
|
autoload :Logger, 'site_prism/logger'
|
11
11
|
autoload :Page, 'site_prism/page'
|
12
12
|
autoload :Section, 'site_prism/section'
|
@@ -1,17 +1,31 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module SitePrism
|
4
|
-
module
|
4
|
+
module DSL
|
5
5
|
def self.included(klass)
|
6
6
|
klass.extend ClassMethods
|
7
7
|
end
|
8
8
|
|
9
9
|
private
|
10
10
|
|
11
|
+
# The default waiting time set by Capybara's configuration settings.
|
11
12
|
def wait_time
|
12
13
|
Capybara.default_max_wait_time
|
13
14
|
end
|
14
15
|
|
16
|
+
# Prevent users from calling methods with blocks when they shouldn't be.
|
17
|
+
#
|
18
|
+
# Example (Triggering error):
|
19
|
+
#
|
20
|
+
# class MyPage
|
21
|
+
# element :sample, '.css-locator' do
|
22
|
+
# puts "This won't be output"
|
23
|
+
# end
|
24
|
+
# end
|
25
|
+
#
|
26
|
+
# At runtime this will generate a `SitePrism::UnsupportedBlockError`
|
27
|
+
#
|
28
|
+
# The only DSL keywords that can use blocks are :section and :iframe
|
15
29
|
def raise_if_block(obj, name, has_block, type)
|
16
30
|
return unless has_block
|
17
31
|
|
@@ -52,6 +66,9 @@ module SitePrism
|
|
52
66
|
options[:wait] = wait_time unless wait_key_present?(options)
|
53
67
|
end
|
54
68
|
|
69
|
+
# True if the +wait+ key is present in the options hash.
|
70
|
+
#
|
71
|
+
# Note that setting it to to false or 0, still will return true here.
|
55
72
|
def wait_key_present?(options)
|
56
73
|
options.key?(:wait)
|
57
74
|
end
|
@@ -2,26 +2,52 @@
|
|
2
2
|
|
3
3
|
module SitePrism
|
4
4
|
module ElementChecker
|
5
|
-
|
6
|
-
|
5
|
+
# Runnable in the scope of any SitePrism::Page or Section.
|
6
|
+
# Returns +true+ when "every item" that is being checked is
|
7
|
+
# present within the current scope. See #elements_to_check
|
8
|
+
# for how the definition of "every item" is derived.
|
9
|
+
#
|
10
|
+
# Example
|
11
|
+
# @my_page.mapped_items
|
12
|
+
# { element => :button_one, element => :button_two, section => :filters }
|
13
|
+
# @my_page.all_there?
|
14
|
+
# => true - If the three items above are all present
|
15
|
+
#
|
16
|
+
# Note that #elements_to_check will affect the hash of mapped_items
|
17
|
+
#
|
18
|
+
# When using the recursion parameter, one of three values is valid.
|
19
|
+
#
|
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: 'none')
|
24
|
+
SitePrism.logger.info('Setting for recursion is being ignored for now.')
|
25
|
+
|
26
|
+
if %w[none one].include?(recursion)
|
27
|
+
elements_to_check.all? { |item_name| there?(item_name) }
|
28
|
+
else
|
29
|
+
SitePrism.logger.error('Invalid recursion setting, Will not run.')
|
30
|
+
end
|
7
31
|
end
|
8
32
|
|
9
33
|
def elements_present
|
10
|
-
|
34
|
+
_mapped_items.select { |item_name| there?(item_name) }
|
11
35
|
end
|
12
36
|
|
13
37
|
private
|
14
38
|
|
39
|
+
# If the page or section has expected_items set, return expected_items
|
40
|
+
# that are mapped; otherwise just return the list of all mapped_items
|
15
41
|
def elements_to_check
|
16
|
-
if
|
42
|
+
if _expected_items
|
17
43
|
SitePrism.logger.debug('Expected Items has been set.')
|
18
|
-
|
44
|
+
_mapped_items.select { |item_name| _expected_items.include?(item_name) }
|
19
45
|
else
|
20
|
-
|
46
|
+
_mapped_items
|
21
47
|
end
|
22
48
|
end
|
23
49
|
|
24
|
-
def
|
50
|
+
def _mapped_items
|
25
51
|
mapped_items_list.map(&:values).flatten
|
26
52
|
end
|
27
53
|
|
@@ -29,7 +55,7 @@ module SitePrism
|
|
29
55
|
self.class.mapped_items.uniq
|
30
56
|
end
|
31
57
|
|
32
|
-
def
|
58
|
+
def _expected_items
|
33
59
|
self.class.expected_items
|
34
60
|
end
|
35
61
|
|
data/lib/site_prism/page.rb
CHANGED
data/lib/site_prism/section.rb
CHANGED
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.0.
|
4
|
+
version: 3.0.2
|
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-01-
|
12
|
+
date: 2019-01-21 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: addressable
|
@@ -107,14 +107,14 @@ dependencies:
|
|
107
107
|
requirements:
|
108
108
|
- - "~>"
|
109
109
|
- !ruby/object:Gem::Version
|
110
|
-
version: 0.
|
110
|
+
version: 0.62.0
|
111
111
|
type: :development
|
112
112
|
prerelease: false
|
113
113
|
version_requirements: !ruby/object:Gem::Requirement
|
114
114
|
requirements:
|
115
115
|
- - "~>"
|
116
116
|
- !ruby/object:Gem::Version
|
117
|
-
version: 0.
|
117
|
+
version: 0.62.0
|
118
118
|
- !ruby/object:Gem::Dependency
|
119
119
|
name: selenium-webdriver
|
120
120
|
requirement: !ruby/object:Gem::Requirement
|
@@ -157,8 +157,8 @@ files:
|
|
157
157
|
- README.md
|
158
158
|
- lib/site_prism.rb
|
159
159
|
- lib/site_prism/addressable_url_matcher.rb
|
160
|
+
- lib/site_prism/dsl.rb
|
160
161
|
- lib/site_prism/element_checker.rb
|
161
|
-
- lib/site_prism/element_container.rb
|
162
162
|
- lib/site_prism/error.rb
|
163
163
|
- lib/site_prism/loadable.rb
|
164
164
|
- lib/site_prism/logger.rb
|