site_prism 3.2 → 3.3

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: 2bb0a772ccdabf209eba492206b0c664418fa46f1b2bdb2c8d08cbcf384b5522
4
- data.tar.gz: be9c7ca220f2a20122a3bfd955fa617acda1ecb3d6aedac9472300f4c17ff014
3
+ metadata.gz: 21261a1fb826c5500f7bc30e44729cb733b2f75b1ea7d3d5243400d9d29e8b2c
4
+ data.tar.gz: e50ab9e1b7d6c0e651d15aa6888828b789f38b7aed80511caa96d50dc767dcda
5
5
  SHA512:
6
- metadata.gz: d21079c647c16bcb896374557448fc9c514ce8d3d16379e77f64be741b2ef76f7c2438ff9fd3d0f5bdd96a3678d92b40e162d3847a04647de1ed553b7a786b2f
7
- data.tar.gz: bf7ea9e4ff98d6ae92427a98b21a35bd519638080c5b3c55f9565e163710b748c11152374293ee783d32a1f1ef599bbac5be99a56f696d144fb1f53d0d7836d4
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/natritmeyer/site_prism/blob/master/development_setup.md)
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/natritmeyer/site_prism/issues/new)
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
@@ -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
@@ -131,12 +131,34 @@ module SitePrism
131
131
  end
132
132
  end
133
133
 
134
- def mapped_items
135
- @mapped_items ||= []
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
- mapped_items << { type => name.to_sym }
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 affect the hash of mapped_items
16
+ # Note that #elements_to_check will check the hash of mapped_items
17
17
  #
18
- # When using the recursion parameter, one of three values is valid.
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: '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) }
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.error('Invalid recursion setting, Will not run.')
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 { |item_name| there?(item_name) }
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
- # that are mapped; otherwise just return the list of all mapped_items
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 { |item_name| _expected_items.include?(item_name) }
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
- mapped_items_list.map(&:values).flatten
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?(item_name)
63
- send("has_#{item_name}?")
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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SitePrism
4
- VERSION = '3.2'
4
+ VERSION = '3.3'
5
5
  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.2'
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-05-14 00:00:00.000000000 Z
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.2'
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.2'
41
+ version: '3.3'
42
42
  - !ruby/object:Gem::Dependency
43
- name: cucumber
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: '3.1'
49
- type: :development
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: '3.1'
55
+ version: 0.1.0
56
56
  - !ruby/object:Gem::Dependency
57
- name: dotenv
57
+ name: cucumber
58
58
  requirement: !ruby/object:Gem::Requirement
59
59
  requirements:
60
60
  - - "~>"
61
61
  - !ruby/object:Gem::Version
62
- version: '2.6'
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: '2.6'
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