site_prism 4.0.1 → 4.0.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: de1db2cfa8b40510768bbea0bee96e548ae949149428d669e1a038c83e2b7f8d
4
- data.tar.gz: 3862848b777a9fbafb8c1640df914313b6deac6da942a3859ff2dfe6dbafb214
3
+ metadata.gz: 31d906cda08dd376f6e81fe3ed760b954cf172d2037dcee25d91c01b3b8ace24
4
+ data.tar.gz: aefc0ed612cf57548101505e46c92845ef9fa2f7482b23e5d6b38cc7c37cf9f7
5
5
  SHA512:
6
- metadata.gz: 8deff2edc00b2b4c0fab86c96e10bc184ed2afc8276b7daf9f69b97a9f7ab4b105ece138f6901456d76e57d508f546971f0262e6cec90787e64ea89bac904047
7
- data.tar.gz: 505eb15872469490ab314497737e04eda896f14e7b98c631efae658d42eedb09d8a8aefa53fd5d845fa0a11936951aaf5cd9e6bc99563b4f454251eb212126d9
6
+ metadata.gz: 9eda5c088201fe6055d67d92cdd3a5f08a90ffe9ccbd2788ac1b4da6e6a0dff32e000c59819e113b4091fc33d2c38d875c9b3d36bd4d2dc549d42d4e1f071ac3
7
+ data.tar.gz: 5f926bac135af87939fc52ce5d110dd806ed7e3708bad8b885670a71e75065057d58de506547389ac11f2216ffcc043031262c4eeb5d11697ff38f114d1685f9
data/LICENSE.md CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2011-2022, The SitePrism team
1
+ Copyright (c) 2011-2023, The SitePrism team
2
2
 
3
3
  All rights reserved.
4
4
 
@@ -39,7 +39,7 @@ module SitePrism
39
39
  #
40
40
  # @return [Array]
41
41
  def elements_present
42
- _mapped_items.select { |name| there?(name) }
42
+ elements_to_check.select { |name| there?(name) }
43
43
  end
44
44
 
45
45
  # Returns each element that is not currently present inside the scope being tested
@@ -52,20 +52,7 @@ module SitePrism
52
52
  private
53
53
 
54
54
  def elements_to_check
55
- if _expected_items
56
- SitePrism.logger.debug('Expected Items has been set.')
57
- _mapped_items.select { |name| _expected_items.include?(name) }
58
- else
59
- _mapped_items
60
- end
61
- end
62
-
63
- def _mapped_items
64
- self.class.mapped_items.values.flatten.uniq
65
- end
66
-
67
- def _expected_items
68
- self.class.expected_items
55
+ SitePrism::AllThere::ExpectedItems.new(self).send(:mapped_checklist)
69
56
  end
70
57
 
71
58
  def there?(name)
@@ -22,17 +22,30 @@ module SitePrism
22
22
  private
23
23
 
24
24
  def create_rspec_existence_matchers(matcher, object_method, negated_object_method, warning)
25
- RSpec::Matchers.define(matcher) do |*args|
26
- match { |actual| actual.public_send(object_method, *args) }
25
+ forward = forwarder(object_method)
26
+
27
+ RSpec::Matchers.define(matcher) do |*args, **options|
28
+ match { |actual| forward.call(actual, args, options) }
27
29
  match_when_negated do |actual|
28
- return actual.public_send(negated_object_method, *args) if actual.respond_to?(negated_object_method)
30
+ return forward.call(actual, args, options, negated_object_method) if actual.respond_to?(negated_object_method)
29
31
 
30
32
  SitePrism.logger.debug(warning)
31
- !actual.public_send(object_method, *args)
33
+ !forward.call(actual, args, options)
32
34
  end
33
35
  end
34
36
  end
35
37
 
38
+ def forwarder(object_method)
39
+ lambda do |actual, args, options, method_name = object_method|
40
+ # To support Ruby 2.6. Otherwise methods that expect no arguments would fail with
41
+ # "wrong number of arguments (given 1, expected 0)" because Ruby 2.6 considers `method(**{})` the
42
+ # same as `method({})` (passing the empty Hash as an argument)
43
+ next actual.public_send(method_name, *args) if options.empty?
44
+
45
+ actual.public_send(method_name, *args, **options)
46
+ end
47
+ end
48
+
36
49
  def matcher
37
50
  "have_#{element_name}"
38
51
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SitePrism
4
- VERSION = '4.0.1'
4
+ VERSION = '4.0.3'
5
5
  end
data/lib/site_prism.rb CHANGED
@@ -4,6 +4,7 @@ require 'site_prism/error'
4
4
  require 'site_prism/all_there'
5
5
 
6
6
  require 'addressable/template'
7
+ require 'capybara/dsl'
7
8
  require 'forwardable'
8
9
 
9
10
  require 'site_prism/addressable_url_matcher'
@@ -42,14 +43,10 @@ module SitePrism
42
43
  @logger ||= SitePrism::Logger.new.create
43
44
  end
44
45
 
45
- # `Logger#reopen` was added in Ruby 2.3 - Which is now the minimum version
46
- # for the site_prism gem
46
+ # Configure where you want the output of the site_prism logs to go (Default is $stdout)
47
47
  #
48
- # This writer method allows you to configure where you want the output of
49
- # the site_prism logs to go (Default is $stdout)
50
- #
51
- # example: SitePrism.log_path = 'site_prism.log' would save all
52
- # log messages to `./site_prism.log`
48
+ # To save all logs to a specific output file
49
+ # SitePrism.log_path = 'site_prism.log'
53
50
  def log_path=(logdev)
54
51
  logger.reopen(logdev)
55
52
  end
@@ -67,8 +64,7 @@ module SitePrism
67
64
  end
68
65
 
69
66
  # To query what level is being logged
70
- # SitePrism.log_level
71
- # => :UNKNOWN # By default
67
+ # SitePrism.log_level # => :UNKNOWN # By default
72
68
  def log_level
73
69
  %i[DEBUG INFO WARN ERROR FATAL UNKNOWN][logger.level]
74
70
  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: 4.0.1
4
+ version: 4.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Luke Hill
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2023-05-11 00:00:00.000000000 Z
12
+ date: 2023-07-07 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: addressable
@@ -219,7 +219,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
219
219
  - !ruby/object:Gem::Version
220
220
  version: '0'
221
221
  requirements: []
222
- rubygems_version: 3.0.3.1
222
+ rubygems_version: 3.4.13
223
223
  signing_key:
224
224
  specification_version: 4
225
225
  summary: A Page Object Model DSL for Capybara