site_prism-all_there 0.2 → 1.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 33b0ff10287854efb639165548ea3718efc57094ab5e0e1f11daf8ec7a0f58c6
4
- data.tar.gz: 9257c12cd32806afeca3a0891754d942b3cfeac06dc62b082680bf2bac2ee9dd
3
+ metadata.gz: dfdb2e58753050c18dafb4f340680c2b0457eac8e14df383ea489f0d54d43732
4
+ data.tar.gz: 89adfcebffec1dcea1354ce4d34c2836d87346807569759ff5e5c7e9b151bdf8
5
5
  SHA512:
6
- metadata.gz: 5a2603278f614090cd7ecca80d1baf2ae6cf4085eec044fbb68df527d89e1dcec8729e634b89b5fcf70f5eef28bcf529e4f8be60bedd5ef2905c002390f02a14
7
- data.tar.gz: 4357d5ce9856f1e9b0193481d813e3f6aeb9189e1950ed5b212e219144b66b3307ab9a710fb5150e8d3711551b1c57faef52bed3a896395fd2ba46accd320951
6
+ metadata.gz: 2db1c79b4ed2c79920d4f230b494e6de494d6a476d8ba688e1bcac3993cb4cbf48a65e7b12eb65303e220016574bb497f2289b198d1b052635cce488799cb298
7
+ data.tar.gz: af7bc4602c1ac4e49da866a4f1ef75ac4a247c578f567d894936c100aa4b6be5ea23899a7e836df4fe7d28c1a548cdfe72199a24d225f4b5c7c8dc2250d9f2b6
data/README.md CHANGED
@@ -1,17 +1,18 @@
1
1
  # site_prism-all_there
2
+
2
3
  The breakout gem from SitePrism to perform recursion checks for `#all_there?`
3
4
 
4
- This gem is currently being developed by copying over the code-base from the existing
5
- SitePrism repo and slowly refactoring it and breaking it out
5
+ This gem is a breakout of the current `SitePrism::Page#all_there?` and `SitePrism::Section#all_there?`
6
+ methods which already exist.
6
7
 
7
- As such at the moment, the gem is very much considered a Work in Progress and works "as is".
8
+ At the moment, the gem is currently released as a `0.x` version meaning it is **not** fully API stable.
8
9
 
9
- It is fully expected to have a number of bug-fix / refactor PR's in between each minor release.
10
+ ## Usage
10
11
 
11
12
  Add the following code to either `spec_helper.rb` or `env.rb`
12
13
 
13
14
  ```rb
14
- require 'site_prism/all_there
15
+ require 'site_prism/all_there'
15
16
 
16
17
  SitePrism.use_all_there_gem = true
17
18
 
@@ -22,8 +23,7 @@ SitePrism.configure do |config|
22
23
  end
23
24
  ```
24
25
 
25
- This gem is currently in the `0.x` phase, meaning it is API unstable and likely to change
26
- structure going forwards, to conform to the pairing of both gems.
26
+ This gem is likely to change structure going forwards, to conform to the pairing of both gems, expected in 2020.
27
27
 
28
28
  Happy Testing / Developing!
29
29
 
@@ -1,13 +1,12 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'site_prism/all_there/expected_items'
3
4
  require 'site_prism/all_there/mapped_items'
4
5
  require 'site_prism/all_there/recursion_checker'
5
6
 
6
- # Configure the behaviour of the site_prism-all_there gem
7
+ # {SitePrism} namespace - In different folder to avoid namespace clashes with core gem
7
8
  module SitePrism
8
9
  class << self
9
- # Configuration setting to use on a global scale
10
- # Note this global setting can be overridden at runtime for each individual call
11
10
  attr_accessor :recursion_setting
12
11
 
13
12
  def configure
@@ -15,3 +14,8 @@ module SitePrism
15
14
  end
16
15
  end
17
16
  end
17
+
18
+ module SitePrism
19
+ # {SitePrism::AllThere} namespace
20
+ module AllThere; end
21
+ end
@@ -0,0 +1,83 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SitePrism
4
+ module AllThere
5
+ #
6
+ # @api private
7
+ #
8
+ # The Expected Items to be present on a SitePrism Page or Section
9
+ class ExpectedItems
10
+ attr_reader :instance
11
+ private :instance
12
+
13
+ def initialize(instance)
14
+ @instance = instance
15
+ end
16
+
17
+ # @return [Array<Hash<Symbol>>]
18
+ # All expected mapped items
19
+ def array
20
+ [
21
+ element,
22
+ elements,
23
+ section,
24
+ sections,
25
+ iframe,
26
+ ]
27
+ end
28
+
29
+ # @return [Hash<Symbol>]
30
+ # All expected items that were mapped as +element+
31
+ def element
32
+ mapped_checklist_of(:element)
33
+ end
34
+
35
+ # @return [Hash<Symbol>]
36
+ # All expected items that were mapped as +elements+
37
+ def elements
38
+ mapped_checklist_of(:elements)
39
+ end
40
+
41
+ # @return [Hash<Symbol>]
42
+ # All expected items that were mapped as +section+
43
+ def section
44
+ mapped_checklist_of(:section)
45
+ end
46
+
47
+ # @return [Hash<Symbol>]
48
+ # All expected items that were mapped as +sections+
49
+ def sections
50
+ mapped_checklist_of(:sections)
51
+ end
52
+
53
+ # @return [Hash<Symbol>]
54
+ # All expected items that were mapped as +iframe+
55
+ def iframe
56
+ mapped_checklist_of(:iframe)
57
+ end
58
+
59
+ private
60
+
61
+ def mapped_checklist_of(type)
62
+ mapped_items.hash[type].select { |name| mapped_checklist.include?(name) }
63
+ end
64
+
65
+ def mapped_checklist
66
+ if checklist
67
+ SitePrism.logger.debug('Expected Items has been set.')
68
+ mapped_items.array.select { |name| checklist.include?(name) }
69
+ else
70
+ mapped_items.array
71
+ end
72
+ end
73
+
74
+ def checklist
75
+ instance.class.expected_items
76
+ end
77
+
78
+ def mapped_items
79
+ @mapped_items ||= MappedItems.new(instance)
80
+ end
81
+ end
82
+ end
83
+ end
@@ -2,10 +2,10 @@
2
2
 
3
3
  module SitePrism
4
4
  module AllThere
5
- # Returns the Mapped Items on a specific SitePrism object
6
5
  #
7
- # api private
6
+ # @api private
8
7
  #
8
+ # The Expected Items on a SitePrism Page or Section structured in an enumerable way
9
9
  class MappedItems
10
10
  attr_reader :instance
11
11
  private :instance
@@ -14,12 +14,14 @@ module SitePrism
14
14
  @instance = instance
15
15
  end
16
16
 
17
- # All Mapped items on the SitePrism instance as a Symbol Array
17
+ # @return [Array<Symbol>]
18
+ # All expected mapped items on the SitePrism instance as a Symbol Array
18
19
  def array
19
20
  hash.values.flatten.uniq
20
21
  end
21
22
 
22
- # All Mapped items on the SitePrism instance as a Symbol Hash
23
+ # @return [Hash<Symbol>]
24
+ # All expected mapped items on the SitePrism instance as a Symbol Hash
23
25
  def hash
24
26
  instance.class.mapped_items(legacy: false)
25
27
  end
@@ -12,7 +12,8 @@ module SitePrism
12
12
  @instance = instance
13
13
  end
14
14
 
15
- # This is currently hard-coded to perform a recursion of depth +:one+
15
+ # @return [Boolean]
16
+ # This currently defaults to perform a recursion of depth +:one+
16
17
  # It will be refactored to use either no input, +:none+, or +:one+ as the
17
18
  # regular repo uses currently
18
19
  def all_there?(recursion: :one)
@@ -27,61 +28,40 @@ module SitePrism
27
28
 
28
29
  private
29
30
 
30
- # This will check all elements that are in the current scope
31
- # This is equivalent to checking with a recursion value of +:none+
31
+ # @return [Boolean]
32
+ # Are all SitePrism objects that exist in +self+ present?
32
33
  def current_class_all_there?
33
- expected_item_map.flatten.all? { |name| there?(name) }
34
+ expected_items.array.flatten.all? { |name| there?(name) }.tap do |result|
35
+ SitePrism.logger.info("Result of current_class_all_there?: #{result}")
36
+ end
34
37
  end
35
38
 
36
- # This will check all elements that are in any of the individual
37
- # +section+ items defined in the current scope
39
+ # @return [Boolean]
40
+ # Are all SitePrism objects that exist in all +self.section+ items present?
38
41
  def section_classes_all_there?
39
- section_classes_to_check.all?(&:all_there?)
42
+ section_classes_to_check.all?(&:all_there?).tap do |result|
43
+ SitePrism.logger.debug("Result of section_classes_all_there?: #{result}")
44
+ end
40
45
  end
41
46
 
42
- # This will check all elements that are in any instance of any of the
43
- # +sections+ items defined in the current scope
47
+ # @return [Boolean]
48
+ # Are all SitePrism objects that exist in all +self.sections+ items present?
44
49
  def sections_classes_all_there?
45
- sections_classes_to_check.flatten.all?(&:all_there?)
50
+ sections_classes_to_check.flatten.all?(&:all_there?).tap do |result|
51
+ SitePrism.logger.debug("Result of section_classes_all_there?: #{result}")
52
+ end
46
53
  end
47
54
 
48
55
  def section_classes_to_check
49
- expected_item_map[2].map { |name| instance.send(name) }
56
+ expected_items.section.map { |name| instance.send(name) }
50
57
  end
51
58
 
52
59
  def sections_classes_to_check
53
- expected_item_map[3].map { |name| instance.send(name) }
54
- end
55
-
56
- def expected_item_map
57
- [
58
- expected(:element),
59
- expected(:elements),
60
- expected(:section),
61
- expected(:sections),
62
- expected(:iframe),
63
- ]
64
- end
65
-
66
- def expected(type)
67
- MappedItems.new(instance).hash[type].select { |name| elements_to_check.include?(name) }
68
- end
69
-
70
- # If the page or section has expected_items set, return expected_items that are mapped
71
- # otherwise just return the list of all mapped_items
72
- def elements_to_check
73
- if _expected_items
74
- SitePrism.logger.debug('Expected Items has been set.')
75
- MappedItems.new(instance).array.select do |name|
76
- _expected_items.include?(name)
77
- end
78
- else
79
- MappedItems.new(instance).array
80
- end
60
+ expected_items.sections.map { |name| instance.send(name) }
81
61
  end
82
62
 
83
- def _expected_items
84
- instance.class.expected_items
63
+ def expected_items
64
+ @expected_items ||= ExpectedItems.new(instance)
85
65
  end
86
66
 
87
67
  def there?(name)
@@ -2,6 +2,8 @@
2
2
 
3
3
  module SitePrism
4
4
  module AllThere
5
- VERSION = '0.2'
5
+ # @return [String]
6
+ # Version of the gem
7
+ VERSION = '1.0'
6
8
  end
7
9
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: site_prism-all_there
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.2'
4
+ version: '1.0'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Luke Hill
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-07-11 00:00:00.000000000 Z
11
+ date: 2021-03-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -16,70 +16,98 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '12.3'
19
+ version: '13.0'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '12.3'
26
+ version: '13.0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rspec
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '3.8'
33
+ version: '3.10'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '3.8'
40
+ version: '3.10'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rubocop
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 0.71.0
47
+ version: 1.6.0
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: 0.71.0
54
+ version: 1.6.0
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rubocop-performance
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: 1.0.0
61
+ version: 1.10.2
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: 1.0.0
68
+ version: 1.10.2
69
+ - !ruby/object:Gem::Dependency
70
+ name: rubocop-rspec
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: 2.1.0
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: 2.1.0
69
83
  - !ruby/object:Gem::Dependency
70
84
  name: site_prism
71
85
  requirement: !ruby/object:Gem::Requirement
72
86
  requirements:
73
87
  - - "~>"
74
88
  - !ruby/object:Gem::Version
75
- version: '3.2'
89
+ version: '3.7'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '3.7'
97
+ - !ruby/object:Gem::Dependency
98
+ name: yard
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '0.9'
76
104
  type: :development
77
105
  prerelease: false
78
106
  version_requirements: !ruby/object:Gem::Requirement
79
107
  requirements:
80
108
  - - "~>"
81
109
  - !ruby/object:Gem::Version
82
- version: '3.2'
110
+ version: '0.9'
83
111
  description: |-
84
112
  SitePrism AllThere gives you a simple DSL in order to recursively query,
85
113
  page/section/element structures on your page - exclusively for use with the SitePrism gem.
@@ -92,6 +120,7 @@ files:
92
120
  - LICENSE.md
93
121
  - README.md
94
122
  - lib/site_prism/all_there.rb
123
+ - lib/site_prism/all_there/expected_items.rb
95
124
  - lib/site_prism/all_there/mapped_items.rb
96
125
  - lib/site_prism/all_there/recursion_checker.rb
97
126
  - lib/site_prism/all_there/version.rb
@@ -100,7 +129,7 @@ licenses:
100
129
  - BSD-3-Clause
101
130
  metadata:
102
131
  bug_tracker_uri: https://github.com/site-prism/site_prism-all_there/issues
103
- changelog_uri: https://github.com/site-prism/site_prism-all_there/blob/master/CHANGELOG.md
132
+ changelog_uri: https://github.com/site-prism/site_prism-all_there/blob/main/CHANGELOG.md
104
133
  source_code_uri: https://github.com/site-prism/site_prism-all_there
105
134
  post_install_message:
106
135
  rdoc_options: []
@@ -110,15 +139,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
110
139
  requirements:
111
140
  - - ">="
112
141
  - !ruby/object:Gem::Version
113
- version: '2.3'
142
+ version: '2.5'
114
143
  required_rubygems_version: !ruby/object:Gem::Requirement
115
144
  requirements:
116
145
  - - ">="
117
146
  - !ruby/object:Gem::Version
118
147
  version: '0'
119
148
  requirements: []
120
- rubyforge_project:
121
- rubygems_version: 2.7.8
149
+ rubygems_version: 3.0.8
122
150
  signing_key:
123
151
  specification_version: 4
124
152
  summary: An extension to allow you to recurse through your SitePrism Pages/Sections