pundit-matchers 3.0.0.beta3 → 3.0.0.beta4

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: 5b6b05ecae5db2ebefd770483f81a957e6ea4ccfcf828c62602131d39e02a746
4
- data.tar.gz: 3319abe92cc5c8dd24609ad621778124c9508a51b272836dacf03457d3450f19
3
+ metadata.gz: 9174f14f9868c035a2bfe235f28cac3565c22b11a0c13f3a4a7d35716a23ca16
4
+ data.tar.gz: f2dcbb7dc17617644f238ac24b4a558b32f4655936db2ba23bde8bbbf5df2c15
5
5
  SHA512:
6
- metadata.gz: 0fcbb2669edc1a1a769635a6ccac24e769c3d85c715efd6625ef37636a282f1f5abfe518787528fcbafb1219aa3d22e4aad74805da735ca9975941959ea2d2fe
7
- data.tar.gz: f3be830472e5d7a9292fa681b768b99e95d6cb338a7f695ec8a32c6607a4ed6b2c62e30354562b47342e2ef24334df0803d94fc9598205ea5da849a15e0a7436
6
+ metadata.gz: 8873422c0d9c94cf0955d0e088736a90597298a3e38030bbaf15cd73420c77a6e27a44c16dd001e36d63c77354dc76c711c0486c8133b2deb02cbeb5c59ed305
7
+ data.tar.gz: 3d20ac4a45dbdb83c1c7dd58a54aa8c869c3780c000f11ac5c46c8d8e075b855ac8172d0b9964279035699a48d885a0f85b2378492d196c2edc6cb11af8a198e
@@ -10,6 +10,8 @@ module Pundit
10
10
  ACTIONS_NOT_IMPLEMENTED_ERROR = "'%<policy>s' does not implement %<actions>s"
11
11
  # Error message when at least one action must be specified.
12
12
  ARGUMENTS_REQUIRED_ERROR = 'At least one action must be specified'
13
+ # Error message when only one action may be specified.
14
+ ONE_ARGUMENT_REQUIRED_ERROR = 'Only one action may be specified'
13
15
 
14
16
  # Initializes a new instance of the ActionsMatcher class.
15
17
  #
@@ -23,6 +25,17 @@ module Pundit
23
25
  @expected_actions = expected_actions.flatten.map(&:to_sym).sort
24
26
  end
25
27
 
28
+ # Ensures that only one action is specified.
29
+ #
30
+ # @raise [ArgumentError] If more than one action is specified.
31
+ #
32
+ # @return [ActionsMatcher] The object itself.
33
+ def ensure_single_action!
34
+ raise ArgumentError, ONE_ARGUMENT_REQUIRED_ERROR if expected_actions.size > 1
35
+
36
+ self
37
+ end
38
+
26
39
  private
27
40
 
28
41
  attr_reader :expected_actions
@@ -66,10 +66,10 @@ module Pundit
66
66
 
67
67
  # Creates a matcher that tests if the policy permits a given action.
68
68
  #
69
- # @param [Symbol] action the action to be tested.
69
+ # @param [String|Symbol] action the action to be tested.
70
70
  # @return [PermitActionsMatcher] the matcher object.
71
71
  def permit_action(action)
72
- PermitActionsMatcher.new(action)
72
+ PermitActionsMatcher.new(action).ensure_single_action!
73
73
  end
74
74
 
75
75
  # @!macro [attach] RSpec::Matchers.define_negated_matcher
@@ -82,7 +82,7 @@ module Pundit
82
82
 
83
83
  # Creates a matcher that tests if the policy permits a set of actions.
84
84
  #
85
- # @param [Array<Symbol>] actions the actions to be tested.
85
+ # @param [Array<String, Symbol>] actions the actions to be tested.
86
86
  # @return [PermitActionsMatcher] the matcher object.
87
87
  def permit_actions(*actions)
88
88
  PermitActionsMatcher.new(*actions)
@@ -135,7 +135,7 @@ module Pundit
135
135
  # @note The negative form +not_to permit_only_actions+ is not supported
136
136
  # since it creates ambiguity. Instead use +to forbid_only_actions+.
137
137
  #
138
- # @param [Array<Symbol>] actions the actions to be tested.
138
+ # @param [Array<String, Symbol>] actions the actions to be tested.
139
139
  # @return [PermitOnlyActionsMatcher] the matcher object.
140
140
  def permit_only_actions(*actions)
141
141
  PermitOnlyActionsMatcher.new(*actions)
@@ -146,7 +146,7 @@ module Pundit
146
146
  # @note The negative form +not_to forbid_only_actions+ is not supported
147
147
  # since it creates ambiguity. Instead use +to permit_only_actions+.
148
148
  #
149
- # @param [Array<Symbol>] actions the actions to be tested.
149
+ # @param [Array<String, Symbol>] actions the actions to be tested.
150
150
  # @return [ForbidOnlyActionsMatcher] the matcher object.
151
151
  def forbid_only_actions(*actions)
152
152
  ForbidOnlyActionsMatcher.new(*actions)
@@ -154,7 +154,7 @@ module Pundit
154
154
 
155
155
  # Creates a matcher that tests if the policy permits mass assignment of a set of attributes.
156
156
  #
157
- # @param [Array<Symbol>] attributes the attributes to be tested.
157
+ # @param [Array<String, Symbol, Hash>] attributes the attributes to be tested.
158
158
  # @return [PermitAttributesMatcher] the matcher object.
159
159
  def permit_mass_assignment_of(*attributes)
160
160
  PermitAttributesMatcher.new(*attributes)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pundit-matchers
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.0.beta3
4
+ version: 3.0.0.beta4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Alley
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-05-26 00:00:00.000000000 Z
11
+ date: 2023-06-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec-core