site_prism-all_there 0.2 → 1.0

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: 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