cancancan 1.8.2 → 1.8.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
  SHA1:
3
- metadata.gz: ee08238dc809747b4d8fd583546d8090ae41c388
4
- data.tar.gz: 07de2fb484baa605dab80da5444378178c7a02c9
3
+ metadata.gz: b834aa0ca99b2b6ab4c5b731ab3f80163b4cf502
4
+ data.tar.gz: 0e52c52dca9331cd0f99d26f16b804c3669dd796
5
5
  SHA512:
6
- metadata.gz: 306997662a1978541ecc1a851cc779f486e91493ba6270ce708baaae32abc94f5d71d2cb17a4c5396d62ea9a0a35e0043b5f8d572ec48c6b32c36bf9d1727275
7
- data.tar.gz: fbc981d0af75b1e9ee1888dae3f69542962ca07d566c731188171a5a2978e67a08b290415f18588c24b3950a834a0d5ad859a82142e2e6ded3c8e54ca87aa57f
6
+ metadata.gz: 46d18d924b8eae0a1ef18b9991adc41e1a781a4885554a2a3badb3f60dc9dca8ced9ccec84d2c92150558fddb189e1c56664167fcca71316ffed92c25e13c02c
7
+ data.tar.gz: 8b4382876b82ed5c5826da510b6baebca02ef9c60da24dcdd6682e888e02bd44eb8990f45ca22381d5ddef91749a4f82b8753147be30ef2819aeda96b8def805
@@ -1,6 +1,11 @@
1
1
  Develop
2
2
 
3
3
 
4
+ 1.8.3 (June 24th, 2014)
5
+
6
+ * Fix cancancan#85 - Remove deprecation notices for RSpec 3 and continue backwards compatibility. (andypike, bryanrite, porteta)
7
+
8
+
4
9
  1.8.2 (June 5th, 2014)
5
10
 
6
11
  * Fix cancancan#75 - More specific hash-like object check. (bryanrite)
@@ -24,7 +24,7 @@ Gem::Specification.new do |s|
24
24
 
25
25
  s.add_development_dependency 'bundler', '~> 1.3'
26
26
  s.add_development_dependency 'rake', '~> 10.1.1'
27
- s.add_development_dependency 'rspec', '~> 2.14'
27
+ s.add_development_dependency 'rspec', '~> 3.0.0'
28
28
  s.add_development_dependency 'appraisal', '>= 1.0.0'
29
29
 
30
30
  s.rubyforge_project = s.name
@@ -4,7 +4,7 @@ if rspec_module == 'RSpec'
4
4
  require 'rspec/core'
5
5
  require 'rspec/expectations'
6
6
  else
7
- ActiveSupport::Deprecation.warn("RSpec v1 will not be supported in the CanCanCan >= 2.0.0")
7
+ ActiveSupport::Deprecation.warn("RSpec < 3 will not be supported in the CanCanCan >= 2.0.0")
8
8
  end
9
9
 
10
10
  Kernel.const_get(rspec_module)::Matchers.define :be_able_to do |*args|
@@ -12,11 +12,17 @@ Kernel.const_get(rspec_module)::Matchers.define :be_able_to do |*args|
12
12
  ability.can?(*args)
13
13
  end
14
14
 
15
- failure_message_for_should do |ability|
15
+ unless defined?(failure_message) # RSpec < 3
16
+ alias :failure_message :failure_message_for_should
17
+ alias :failure_message_when_negated :failure_message_for_should_not
18
+ end
19
+
20
+ failure_message do |ability|
16
21
  "expected to be able to #{args.map(&:inspect).join(" ")}"
17
22
  end
18
23
 
19
- failure_message_for_should_not do |ability|
24
+ failure_message_when_negated do |ability|
20
25
  "expected not to be able to #{args.map(&:inspect).join(" ")}"
21
26
  end
27
+
22
28
  end
@@ -1,3 +1,3 @@
1
1
  module CanCan
2
- VERSION = "1.8.2"
2
+ VERSION = "1.8.3"
3
3
  end
@@ -27,6 +27,6 @@ class Ability
27
27
  # can :update, Article, :published => true
28
28
  #
29
29
  # See the wiki for details:
30
- # https://github.com/bryanrite/cancancan/wiki/Defining-Abilities
30
+ # https://github.com/CanCanCommunity/cancancan/wiki/Defining-Abilities
31
31
  end
32
32
  end
@@ -7,12 +7,12 @@ describe CanCan::Ability do
7
7
 
8
8
  it "is able to :read anything" do
9
9
  @ability.can :read, :all
10
- expect(@ability.can?(:read, String)).to be_true
11
- expect(@ability.can?(:read, 123)).to be_true
10
+ expect(@ability.can?(:read, String)).to be(true)
11
+ expect(@ability.can?(:read, 123)).to be(true)
12
12
  end
13
13
 
14
14
  it "does not have permission to do something it doesn't know about" do
15
- expect(@ability.can?(:foodfight, String)).to be_false
15
+ expect(@ability.can?(:foodfight, String)).to be(false)
16
16
  end
17
17
 
18
18
  it "passes true to `can?` when non false/nil is returned in block" do
@@ -20,7 +20,7 @@ describe CanCan::Ability do
20
20
  @ability.can :read, Symbol do |sym|
21
21
  "foo" # TODO test that sym is nil when no instance is passed
22
22
  end
23
- expect(@ability.can?(:read, :some_symbol)).to be_true
23
+ expect(@ability.can?(:read, :some_symbol)).to be(true)
24
24
  end
25
25
 
26
26
  it "passes nil to a block when no instance is passed" do
@@ -28,7 +28,7 @@ describe CanCan::Ability do
28
28
  expect(sym).to be_nil
29
29
  true
30
30
  end
31
- expect(@ability.can?(:read, Symbol)).to be_true
31
+ expect(@ability.can?(:read, Symbol)).to be(true)
32
32
  end
33
33
 
34
34
  it "passes to previous rule, if block returns false or nil" do
@@ -39,10 +39,10 @@ describe CanCan::Ability do
39
39
  @ability.can :read, Integer do |i|
40
40
  i > 10
41
41
  end
42
- expect(@ability.can?(:read, Symbol)).to be_true
43
- expect(@ability.can?(:read, 11)).to be_true
44
- expect(@ability.can?(:read, 1)).to be_true
45
- expect(@ability.can?(:read, 6)).to be_false
42
+ expect(@ability.can?(:read, Symbol)).to be(true)
43
+ expect(@ability.can?(:read, 11)).to be(true)
44
+ expect(@ability.can?(:read, 1)).to be(true)
45
+ expect(@ability.can?(:read, 6)).to be(false)
46
46
  end
47
47
 
48
48
  it "does not pass class with object if :all objects are accepted" do
@@ -51,7 +51,7 @@ describe CanCan::Ability do
51
51
  @block_called = true
52
52
  end
53
53
  @ability.can?(:preview, 123)
54
- expect(@block_called).to be_true
54
+ expect(@block_called).to be(true)
55
55
  end
56
56
 
57
57
  it "does not call block when only class is passed, only return true" do
@@ -59,8 +59,8 @@ describe CanCan::Ability do
59
59
  @ability.can :preview, :all do |object|
60
60
  @block_called = true
61
61
  end
62
- expect(@ability.can?(:preview, Hash)).to be_true
63
- expect(@block_called).to be_false
62
+ expect(@ability.can?(:preview, Hash)).to be(true)
63
+ expect(@block_called).to be(false)
64
64
  end
65
65
 
66
66
  it "passes only object for global manage actions" do
@@ -68,22 +68,22 @@ describe CanCan::Ability do
68
68
  expect(object).to eq("foo")
69
69
  @block_called = true
70
70
  end
71
- expect(@ability.can?(:stuff, "foo")).to be_true
72
- expect(@block_called).to be_true
71
+ expect(@ability.can?(:stuff, "foo")).to be(true)
72
+ expect(@block_called).to be(true)
73
73
  end
74
74
 
75
75
  it "makes alias for update or destroy actions to modify action" do
76
76
  @ability.alias_action :update, :destroy, :to => :modify
77
77
  @ability.can :modify, :all
78
- expect(@ability.can?(:update, 123)).to be_true
79
- expect(@ability.can?(:destroy, 123)).to be_true
78
+ expect(@ability.can?(:update, 123)).to be(true)
79
+ expect(@ability.can?(:destroy, 123)).to be(true)
80
80
  end
81
81
 
82
82
  it "allows deeply nested aliased actions" do
83
83
  @ability.alias_action :increment, :to => :sort
84
84
  @ability.alias_action :sort, :to => :modify
85
85
  @ability.can :modify, :all
86
- expect(@ability.can?(:increment, 123)).to be_true
86
+ expect(@ability.can?(:increment, 123)).to be(true)
87
87
  end
88
88
 
89
89
  it "raises an Error if alias target is an exist action" do
@@ -98,7 +98,7 @@ describe CanCan::Ability do
98
98
  @block_called = true
99
99
  end
100
100
  @ability.can?(:foo, 123)
101
- expect(@block_called).to be_true
101
+ expect(@block_called).to be(true)
102
102
  end
103
103
 
104
104
  it "passes nil to object when comparing class with can check" do
@@ -109,20 +109,20 @@ describe CanCan::Ability do
109
109
  @block_called = true
110
110
  end
111
111
  @ability.can?(:foo, Hash)
112
- expect(@block_called).to be_true
112
+ expect(@block_called).to be(true)
113
113
  end
114
114
 
115
115
  it "automatically makes alias for index and show into read calls" do
116
116
  @ability.can :read, :all
117
- expect(@ability.can?(:index, 123)).to be_true
118
- expect(@ability.can?(:show, 123)).to be_true
117
+ expect(@ability.can?(:index, 123)).to be(true)
118
+ expect(@ability.can?(:show, 123)).to be(true)
119
119
  end
120
120
 
121
121
  it "automatically makes alias for new and edit into create and update respectively" do
122
122
  @ability.can :create, :all
123
123
  @ability.can :update, :all
124
- expect(@ability.can?(:new, 123)).to be_true
125
- expect(@ability.can?(:edit, 123)).to be_true
124
+ expect(@ability.can?(:new, 123)).to be(true)
125
+ expect(@ability.can?(:edit, 123)).to be(true)
126
126
  end
127
127
 
128
128
  it "does not respond to prepare (now using initialize)" do
@@ -130,56 +130,56 @@ describe CanCan::Ability do
130
130
  end
131
131
 
132
132
  it "offers cannot? method which is simply invert of can?" do
133
- expect(@ability.cannot?(:tie, String)).to be_true
133
+ expect(@ability.cannot?(:tie, String)).to be(true)
134
134
  end
135
135
 
136
136
  it "is able to specify multiple actions and match any" do
137
137
  @ability.can [:read, :update], :all
138
- expect(@ability.can?(:read, 123)).to be_true
139
- expect(@ability.can?(:update, 123)).to be_true
140
- expect(@ability.can?(:count, 123)).to be_false
138
+ expect(@ability.can?(:read, 123)).to be(true)
139
+ expect(@ability.can?(:update, 123)).to be(true)
140
+ expect(@ability.can?(:count, 123)).to be(false)
141
141
  end
142
142
 
143
143
  it "is able to specify multiple classes and match any" do
144
144
  @ability.can :update, [String, Range]
145
- expect(@ability.can?(:update, "foo")).to be_true
146
- expect(@ability.can?(:update, 1..3)).to be_true
147
- expect(@ability.can?(:update, 123)).to be_false
145
+ expect(@ability.can?(:update, "foo")).to be(true)
146
+ expect(@ability.can?(:update, 1..3)).to be(true)
147
+ expect(@ability.can?(:update, 123)).to be(false)
148
148
  end
149
149
 
150
150
  it "checks if there is a permission for any of given subjects" do
151
151
  @ability.can :update, [String, Range]
152
- expect(@ability.can?(:update, {:any => ["foo", 1..3]})).to be_true
153
- expect(@ability.can?(:update, {:any => [1..3, "foo"]})).to be_true
154
- expect(@ability.can?(:update, {:any => [123, "foo"]})).to be_true
155
- expect(@ability.can?(:update, {:any => [123, 1.0]})).to be_false
152
+ expect(@ability.can?(:update, {:any => ["foo", 1..3]})).to be(true)
153
+ expect(@ability.can?(:update, {:any => [1..3, "foo"]})).to be(true)
154
+ expect(@ability.can?(:update, {:any => [123, "foo"]})).to be(true)
155
+ expect(@ability.can?(:update, {:any => [123, 1.0]})).to be(false)
156
156
  end
157
157
 
158
158
  it "supports custom objects in the rule" do
159
159
  @ability.can :read, :stats
160
- expect(@ability.can?(:read, :stats)).to be_true
161
- expect(@ability.can?(:update, :stats)).to be_false
162
- expect(@ability.can?(:read, :nonstats)).to be_false
163
- expect(@ability.can?(:read, {:any => [:stats, :nonstats]})).to be_true
164
- expect(@ability.can?(:read, {:any => [:nonstats, :neitherstats]})).to be_false
160
+ expect(@ability.can?(:read, :stats)).to be(true)
161
+ expect(@ability.can?(:update, :stats)).to be(false)
162
+ expect(@ability.can?(:read, :nonstats)).to be(false)
163
+ expect(@ability.can?(:read, {:any => [:stats, :nonstats]})).to be(true)
164
+ expect(@ability.can?(:read, {:any => [:nonstats, :neitherstats]})).to be(false)
165
165
  end
166
166
 
167
167
  it "checks ancestors of class" do
168
168
  @ability.can :read, Numeric
169
- expect(@ability.can?(:read, Integer)).to be_true
170
- expect(@ability.can?(:read, 1.23)).to be_true
171
- expect(@ability.can?(:read, "foo")).to be_false
172
- expect(@ability.can?(:read, {:any => [Integer, String]})).to be_true
169
+ expect(@ability.can?(:read, Integer)).to be(true)
170
+ expect(@ability.can?(:read, 1.23)).to be(true)
171
+ expect(@ability.can?(:read, "foo")).to be(false)
172
+ expect(@ability.can?(:read, {:any => [Integer, String]})).to be(true)
173
173
  end
174
174
 
175
175
  it "supports 'cannot' method to define what user cannot do" do
176
176
  @ability.can :read, :all
177
177
  @ability.cannot :read, Integer
178
- expect(@ability.can?(:read, "foo")).to be_true
179
- expect(@ability.can?(:read, 123)).to be_false
180
- expect(@ability.can?(:read, {:any => ["foo", "bar"]})).to be_true
181
- expect(@ability.can?(:read, {:any => [123, "foo"]})).to be_false
182
- expect(@ability.can?(:read, {:any => [123, 456]})).to be_false
178
+ expect(@ability.can?(:read, "foo")).to be(true)
179
+ expect(@ability.can?(:read, 123)).to be(false)
180
+ expect(@ability.can?(:read, {:any => ["foo", "bar"]})).to be(true)
181
+ expect(@ability.can?(:read, {:any => [123, "foo"]})).to be(false)
182
+ expect(@ability.can?(:read, {:any => [123, 456]})).to be(false)
183
183
  end
184
184
 
185
185
  it "passes to previous rule, if block returns false or nil" do
@@ -187,22 +187,23 @@ describe CanCan::Ability do
187
187
  @ability.cannot :read, Integer do |int|
188
188
  int > 10 ? nil : ( int > 5 )
189
189
  end
190
- expect(@ability.can?(:read, "foo")).to be_true
191
- expect(@ability.can?(:read, 3)).to be_true
192
- expect(@ability.can?(:read, 8)).to be_false
193
- expect(@ability.can?(:read, 123)).to be_true
194
- expect(@ability.can?(:read, {:any => [123, 8]})).to be_true
195
- expect(@ability.can?(:read, {:any => [8, 9]})).to be_false
190
+
191
+ expect(@ability.can?(:read, "foo")).to be(true)
192
+ expect(@ability.can?(:read, 3)).to be(true)
193
+ expect(@ability.can?(:read, 8)).to be(false)
194
+ expect(@ability.can?(:read, 123)).to be(true)
195
+ expect(@ability.can?(:read, {:any => [123, 8]})).to be(true)
196
+ expect(@ability.can?(:read, {:any => [8, 9]})).to be(false)
196
197
  end
197
198
 
198
199
  it "always returns `false` for single cannot definition" do
199
200
  @ability.cannot :read, Integer do |int|
200
201
  int > 10 ? nil : ( int > 5 )
201
202
  end
202
- expect(@ability.can?(:read, "foo")).to be_false
203
- expect(@ability.can?(:read, 3)).to be_false
204
- expect(@ability.can?(:read, 8)).to be_false
205
- expect(@ability.can?(:read, 123)).to be_false
203
+ expect(@ability.can?(:read, "foo")).to be(false)
204
+ expect(@ability.can?(:read, 3)).to be(false)
205
+ expect(@ability.can?(:read, 8)).to be(false)
206
+ expect(@ability.can?(:read, 123)).to be(false)
206
207
  end
207
208
 
208
209
  it "passes to previous cannot definition, if block returns false or nil" do
@@ -210,10 +211,10 @@ describe CanCan::Ability do
210
211
  @ability.can :read, Integer do |int|
211
212
  int > 10 ? nil : ( int > 5 )
212
213
  end
213
- expect(@ability.can?(:read, "foo")).to be_false
214
- expect(@ability.can?(:read, 3)).to be_false
215
- expect(@ability.can?(:read, 10)).to be_true
216
- expect(@ability.can?(:read, 123)).to be_false
214
+ expect(@ability.can?(:read, "foo")).to be(false)
215
+ expect(@ability.can?(:read, 3)).to be(false)
216
+ expect(@ability.can?(:read, 10)).to be(true)
217
+ expect(@ability.can?(:read, 123)).to be(false)
217
218
  end
218
219
 
219
220
  it "appends aliased actions" do
@@ -232,91 +233,94 @@ describe CanCan::Ability do
232
233
  @ability.can :read, Integer do |int, x|
233
234
  int > x
234
235
  end
235
- expect(@ability.can?(:read, 2, 1)).to be_true
236
- expect(@ability.can?(:read, 2, 3)).to be_false
237
- expect(@ability.can?(:read, {:any => [4, 5]}, 3)).to be_true
238
- expect(@ability.can?(:read, {:any => [2, 3]}, 3)).to be_false
236
+
237
+ expect(@ability.can?(:read, 2, 1)).to be(true)
238
+ expect(@ability.can?(:read, 2, 3)).to be(false)
239
+ expect(@ability.can?(:read, {:any => [4, 5]}, 3)).to be(true)
240
+ expect(@ability.can?(:read, {:any => [2, 3]}, 3)).to be(false)
239
241
  end
240
242
 
241
243
  it "uses conditions as third parameter and determine abilities from it" do
242
244
  @ability.can :read, Range, :begin => 1, :end => 3
243
- expect(@ability.can?(:read, 1..3)).to be_true
244
- expect(@ability.can?(:read, 1..4)).to be_false
245
- expect(@ability.can?(:read, Range)).to be_true
246
- expect(@ability.can?(:read, {:any => [1..3, 1..4]})).to be_true
247
- expect(@ability.can?(:read, {:any => [1..4, 2..4]})).to be_false
245
+
246
+ expect(@ability.can?(:read, 1..3)).to be(true)
247
+ expect(@ability.can?(:read, 1..4)).to be(false)
248
+ expect(@ability.can?(:read, Range)).to be(true)
249
+ expect(@ability.can?(:read, {:any => [1..3, 1..4]})).to be(true)
250
+ expect(@ability.can?(:read, {:any => [1..4, 2..4]})).to be(false)
248
251
  end
249
252
 
250
253
  it "allows an array of options in conditions hash" do
251
254
  @ability.can :read, Range, :begin => [1, 3, 5]
252
- expect(@ability.can?(:read, 1..3)).to be_true
253
- expect(@ability.can?(:read, 2..4)).to be_false
254
- expect(@ability.can?(:read, 3..5)).to be_true
255
- expect(@ability.can?(:read, {:any => [2..4, 3..5]})).to be_true
256
- expect(@ability.can?(:read, {:any => [2..4, 2..5]})).to be_false
255
+
256
+ expect(@ability.can?(:read, 1..3)).to be(true)
257
+ expect(@ability.can?(:read, 2..4)).to be(false)
258
+ expect(@ability.can?(:read, 3..5)).to be(true)
259
+ expect(@ability.can?(:read, {:any => [2..4, 3..5]})).to be(true)
260
+ expect(@ability.can?(:read, {:any => [2..4, 2..5]})).to be(false)
257
261
  end
258
262
 
259
263
  it "allows a range of options in conditions hash" do
260
264
  @ability.can :read, Range, :begin => 1..3
261
- expect(@ability.can?(:read, 1..10)).to be_true
262
- expect(@ability.can?(:read, 3..30)).to be_true
263
- expect(@ability.can?(:read, 4..40)).to be_false
265
+ expect(@ability.can?(:read, 1..10)).to be(true)
266
+ expect(@ability.can?(:read, 3..30)).to be(true)
267
+ expect(@ability.can?(:read, 4..40)).to be(false)
264
268
  end
265
269
 
266
270
  it "allows nested hashes in conditions hash" do
267
271
  @ability.can :read, Range, :begin => { :to_i => 5 }
268
- expect(@ability.can?(:read, 5..7)).to be_true
269
- expect(@ability.can?(:read, 6..8)).to be_false
272
+ expect(@ability.can?(:read, 5..7)).to be(true)
273
+ expect(@ability.can?(:read, 6..8)).to be(false)
270
274
  end
271
275
 
272
276
  it "matches any element passed in to nesting if it's an array (for has_many associations)" do
273
277
  @ability.can :read, Range, :to_a => { :to_i => 3 }
274
- expect(@ability.can?(:read, 1..5)).to be_true
275
- expect(@ability.can?(:read, 4..6)).to be_false
278
+ expect(@ability.can?(:read, 1..5)).to be(true)
279
+ expect(@ability.can?(:read, 4..6)).to be(false)
276
280
  end
277
281
 
278
282
  it "accepts a set as a condition value" do
279
283
  expect(object_with_foo_2 = double(:foo => 2)).to receive(:foo)
280
- expect(object_with_foo_3 = double(:foo => 3)).to receive(:foo)
284
+ expect(object_with_foo_3 = double(:foo => 3)).to receive(:foo)
281
285
  @ability.can :read, Object, :foo => [1, 2, 5].to_set
282
- expect(@ability.can?(:read, object_with_foo_2)).to be_true
283
- expect(@ability.can?(:read, object_with_foo_3)).to be_false
286
+ expect(@ability.can?(:read, object_with_foo_2)).to be(true)
287
+ expect(@ability.can?(:read, object_with_foo_3)).to be(false)
284
288
  end
285
289
 
286
290
  it "does not match subjects return nil for methods that must match nested a nested conditions hash" do
287
291
  expect(object_with_foo = double(:foo => :bar)).to receive(:foo)
288
292
  @ability.can :read, Array, :first => { :foo => :bar }
289
- expect(@ability.can?(:read, [object_with_foo])).to be_true
290
- expect(@ability.can?(:read, [])).to be_false
293
+ expect(@ability.can?(:read, [object_with_foo])).to be(true)
294
+ expect(@ability.can?(:read, [])).to be(false)
291
295
  end
292
296
 
293
297
  it "matches strings but not substrings specified in a conditions hash" do
294
298
  @ability.can :read, String, :presence => "declassified"
295
- expect(@ability.can?(:read, "declassified")).to be_true
296
- expect(@ability.can?(:read, "classified")).to be_false
299
+ expect(@ability.can?(:read, "declassified")).to be(true)
300
+ expect(@ability.can?(:read, "classified")).to be(false)
297
301
  end
298
302
 
299
303
  it "does not stop at cannot definition when comparing class" do
300
304
  @ability.can :read, Range
301
305
  @ability.cannot :read, Range, :begin => 1
302
- expect(@ability.can?(:read, 2..5)).to be_true
303
- expect(@ability.can?(:read, 1..5)).to be_false
304
- expect(@ability.can?(:read, Range)).to be_true
306
+ expect(@ability.can?(:read, 2..5)).to be(true)
307
+ expect(@ability.can?(:read, 1..5)).to be(false)
308
+ expect(@ability.can?(:read, Range)).to be(true)
305
309
  end
306
310
 
307
311
  it "stops at cannot definition when no hash is present" do
308
312
  @ability.can :read, :all
309
313
  @ability.cannot :read, Range
310
- expect(@ability.can?(:read, 1..5)).to be_false
311
- expect(@ability.can?(:read, Range)).to be_false
314
+ expect(@ability.can?(:read, 1..5)).to be(false)
315
+ expect(@ability.can?(:read, Range)).to be(false)
312
316
  end
313
317
 
314
318
  it "allows to check ability for Module" do
315
319
  module B; end
316
320
  class A; include B; end
317
321
  @ability.can :read, B
318
- expect(@ability.can?(:read, A)).to be_true
319
- expect(@ability.can?(:read, A.new)).to be_true
322
+ expect(@ability.can?(:read, A)).to be(true)
323
+ expect(@ability.can?(:read, A.new)).to be(true)
320
324
  end
321
325
 
322
326
  it "passes nil to a block for ability on Module when no instance is passed" do
@@ -326,33 +330,35 @@ describe CanCan::Ability do
326
330
  expect(sym).to be_nil
327
331
  true
328
332
  end
329
- expect(@ability.can?(:read, B)).to be_true
330
- expect(@ability.can?(:read, A)).to be_true
333
+ expect(@ability.can?(:read, B)).to be(true)
334
+ expect(@ability.can?(:read, A)).to be(true)
331
335
  end
332
336
 
333
337
  it "checks permissions through association when passing a hash of subjects" do
334
338
  @ability.can :read, Range, :string => {:length => 3}
335
- expect(@ability.can?(:read, "foo" => Range)).to be_true
336
- expect(@ability.can?(:read, "foobar" => Range)).to be_false
337
- expect(@ability.can?(:read, 123 => Range)).to be_true
338
- expect(@ability.can?(:read, {:any => [{"foo" => Range}, {"foobar" => Range}]})).to be_true
339
- expect(@ability.can?(:read, {:any => [{"food" => Range}, {"foobar" => Range}]})).to be_false
339
+
340
+ expect(@ability.can?(:read, "foo" => Range)).to be(true)
341
+ expect(@ability.can?(:read, "foobar" => Range)).to be(false)
342
+ expect(@ability.can?(:read, 123 => Range)).to be(true)
343
+ expect(@ability.can?(:read, {:any => [{"foo" => Range}, {"foobar" => Range}]})).to be(true)
344
+ expect(@ability.can?(:read, {:any => [{"food" => Range}, {"foobar" => Range}]})).to be(false)
340
345
  end
341
346
 
342
347
  it "checks permissions correctly when passing a hash of subjects with multiple definitions" do
343
348
  @ability.can :read, Range, :string => {:length => 4}
344
349
  @ability.can [:create, :read], Range, :string => {:upcase => 'FOO'}
345
- expect(@ability.can?(:read, "foo" => Range)).to be_true
346
- expect(@ability.can?(:read, "foobar" => Range)).to be_false
347
- expect(@ability.can?(:read, 1234 => Range)).to be_true
348
- expect(@ability.can?(:read, {:any => [{"foo" => Range}, {"foobar" => Range}]})).to be_true
349
- expect(@ability.can?(:read, {:any => [{"foo.bar" => Range}, {"foobar" => Range}]})).to be_false
350
+
351
+ expect(@ability.can?(:read, "foo" => Range)).to be(true)
352
+ expect(@ability.can?(:read, "foobar" => Range)).to be(false)
353
+ expect(@ability.can?(:read, 1234 => Range)).to be(true)
354
+ expect(@ability.can?(:read, {:any => [{"foo" => Range}, {"foobar" => Range}]})).to be(true)
355
+ expect(@ability.can?(:read, {:any => [{"foo.bar" => Range}, {"foobar" => Range}]})).to be(false)
350
356
  end
351
357
 
352
358
  it "allows to check ability on Hash-like object" do
353
359
  class Container < Hash; end
354
360
  @ability.can :read, Container
355
- expect(@ability.can?(:read, Container.new)).to be_true
361
+ expect(@ability.can?(:read, Container.new)).to be(true)
356
362
  end
357
363
 
358
364
  it "has initial attributes based on hash conditions of 'new' action" do
@@ -474,7 +480,7 @@ describe CanCan::Ability do
474
480
  another_ability.can :use, :search
475
481
 
476
482
  @ability.merge(another_ability)
477
- expect(@ability.can?(:use, :search)).to be_true
483
+ expect(@ability.can?(:use, :search)).to be(true)
478
484
  expect(@ability.send(:rules).size).to eq(2)
479
485
  end
480
486
  end
@@ -17,7 +17,7 @@ describe CanCan::ControllerAdditions do
17
17
  it "authorize! assigns @_authorized instance variable and pass args to current ability" do
18
18
  allow(@controller.current_ability).to receive(:authorize!).with(:foo, :bar)
19
19
  @controller.authorize!(:foo, :bar)
20
- expect(@controller.instance_variable_get(:@_authorized)).to be_true
20
+ expect(@controller.instance_variable_get(:@_authorized)).to be(true)
21
21
  end
22
22
 
23
23
  it "has a current_ability method which generates an ability for the current user" do
@@ -26,8 +26,8 @@ describe CanCan::ControllerAdditions do
26
26
 
27
27
  it "provides a can? and cannot? methods which go through the current ability" do
28
28
  expect(@controller.current_ability).to be_kind_of(Ability)
29
- expect(@controller.can?(:foo, :bar)).to be_false
30
- expect(@controller.cannot?(:foo, :bar)).to be_true
29
+ expect(@controller.can?(:foo, :bar)).to be(false)
30
+ expect(@controller.cannot?(:foo, :bar)).to be(true)
31
31
  end
32
32
 
33
33
  it "load_and_authorize_resource setups a before filter which passes call to ControllerResource" do
@@ -38,7 +38,7 @@ describe CanCan::ControllerAdditions do
38
38
  end
39
39
 
40
40
  it "load_and_authorize_resource properly passes first argument as the resource name" do
41
- expect(cancan_resource_class = double).to receive(:load_and_authorize_resource)
41
+ expect(cancan_resource_class = double).to receive(:load_and_authorize_resource)
42
42
  allow(CanCan::ControllerResource).to receive(:new).with(@controller, :project, :foo => :bar) {cancan_resource_class}
43
43
  expect(@controller_class).to receive(:before_filter).with({}) { |options, &block| block.call(@controller) }
44
44
  @controller_class.load_and_authorize_resource :project, :foo => :bar
@@ -50,14 +50,14 @@ describe CanCan::ControllerAdditions do
50
50
  end
51
51
 
52
52
  it "authorize_resource setups a before filter which passes call to ControllerResource" do
53
- expect(cancan_resource_class = double).to receive(:authorize_resource)
53
+ expect(cancan_resource_class = double).to receive(:authorize_resource)
54
54
  allow(CanCan::ControllerResource).to receive(:new).with(@controller, nil, :foo => :bar) {cancan_resource_class}
55
55
  expect(@controller_class).to receive(:before_filter).with(:except => :show, :if => true) { |options, &block| block.call(@controller) }
56
56
  @controller_class.authorize_resource :foo => :bar, :except => :show, :if => true
57
57
  end
58
58
 
59
59
  it "load_resource setups a before filter which passes call to ControllerResource" do
60
- expect(cancan_resource_class = double).to receive(:load_resource)
60
+ expect(cancan_resource_class = double).to receive(:load_resource)
61
61
  allow(CanCan::ControllerResource).to receive(:new).with(@controller, nil, :foo => :bar) {cancan_resource_class}
62
62
  expect(@controller_class).to receive(:before_filter).with(:only => [:show, :index], :unless => false) { |options, &block| block.call(@controller) }
63
63
  @controller_class.load_resource :foo => :bar, :only => [:show, :index], :unless => false
@@ -66,7 +66,7 @@ describe CanCan::ControllerAdditions do
66
66
  it "skip_authorization_check setups a before filter which sets @_authorized to true" do
67
67
  expect(@controller_class).to receive(:before_filter).with(:filter_options) { |options, &block| block.call(@controller) }
68
68
  @controller_class.skip_authorization_check(:filter_options)
69
- expect(@controller.instance_variable_get(:@_authorized)).to be_true
69
+ expect(@controller.instance_variable_get(:@_authorized)).to be(true)
70
70
  end
71
71
 
72
72
  it "check_authorization triggers AuthorizationNotPerformed in after filter" do
@@ -112,7 +112,7 @@ describe CanCan::ControllerAdditions do
112
112
  it "cancan_skipper is an empty hash with :authorize and :load options and remember changes" do
113
113
  expect(@controller_class.cancan_skipper).to eq({:authorize => {}, :load => {}})
114
114
  @controller_class.cancan_skipper[:load] = true
115
- expect(@controller_class.cancan_skipper[:load]).to be_true
115
+ expect(@controller_class.cancan_skipper[:load]).to be(true)
116
116
  end
117
117
 
118
118
  it "skip_authorize_resource adds itself to the cancan skipper with given model name and options" do
@@ -194,7 +194,7 @@ describe CanCan::ControllerResource do
194
194
  resource = CanCan::ControllerResource.new(controller)
195
195
  resource.load_resource
196
196
  expect(controller.instance_variable_get(:@model)).to be_nil
197
- expect(controller.instance_variable_defined?(:@models)).to be_false
197
+ expect(controller.instance_variable_defined?(:@models)).to be(false)
198
198
  end
199
199
 
200
200
  it "does not use accessible_by when defining abilities through a block" do
@@ -204,7 +204,7 @@ describe CanCan::ControllerResource do
204
204
  resource = CanCan::ControllerResource.new(controller)
205
205
  resource.load_resource
206
206
  expect(controller.instance_variable_get(:@model)).to be_nil
207
- expect(controller.instance_variable_defined?(:@models)).to be_false
207
+ expect(controller.instance_variable_defined?(:@models)).to be(false)
208
208
  end
209
209
 
210
210
  it "does not authorize single resource in collection action" do
@@ -517,7 +517,7 @@ describe CanCan::ControllerResource do
517
517
  it "only calls the santitize method with actions matching param_actions" do
518
518
  allow(controller).to receive(:resource_params).and_return(:resource => 'params')
519
519
  resource = CanCan::ControllerResource.new(controller)
520
- resource.stub(:param_actions => [:create])
520
+ allow(resource).to receive(:param_actions) { [:create] }
521
521
 
522
522
  expect(controller).not_to receive(:send).with(:resource_params)
523
523
  resource.send("resource_params")
@@ -579,41 +579,41 @@ describe CanCan::ControllerResource do
579
579
  it "skips resource behavior for :only actions in array" do
580
580
  allow(controller_class).to receive(:cancan_skipper) { {:load => {nil => {:only => [:index, :show]}}} }
581
581
  params.merge!(:action => "index")
582
- expect(CanCan::ControllerResource.new(controller).skip?(:load)).to be_true
583
- expect(CanCan::ControllerResource.new(controller, :some_resource).skip?(:load)).to be_false
582
+ expect(CanCan::ControllerResource.new(controller).skip?(:load)).to be(true)
583
+ expect(CanCan::ControllerResource.new(controller, :some_resource).skip?(:load)).to be(false)
584
584
  params.merge!(:action => "show")
585
- expect(CanCan::ControllerResource.new(controller).skip?(:load)).to be_true
585
+ expect(CanCan::ControllerResource.new(controller).skip?(:load)).to be(true)
586
586
  params.merge!(:action => "other_action")
587
- expect(CanCan::ControllerResource.new(controller).skip?(:load)).to be_false
587
+ expect(CanCan::ControllerResource.new(controller).skip?(:load)).to be_falsey
588
588
  end
589
589
 
590
590
  it "skips resource behavior for :only one action on resource" do
591
591
  allow(controller_class).to receive(:cancan_skipper) { {:authorize => {:model => {:only => :index}}} }
592
592
  params.merge!(:action => "index")
593
- expect(CanCan::ControllerResource.new(controller).skip?(:authorize)).to be_false
594
- expect(CanCan::ControllerResource.new(controller, :model).skip?(:authorize)).to be_true
593
+ expect(CanCan::ControllerResource.new(controller).skip?(:authorize)).to be(false)
594
+ expect(CanCan::ControllerResource.new(controller, :model).skip?(:authorize)).to be(true)
595
595
  params.merge!(:action => "other_action")
596
- expect(CanCan::ControllerResource.new(controller, :model).skip?(:authorize)).to be_false
596
+ expect(CanCan::ControllerResource.new(controller, :model).skip?(:authorize)).to be_falsey
597
597
  end
598
598
 
599
599
  it "skips resource behavior :except actions in array" do
600
600
  allow(controller_class).to receive(:cancan_skipper) { {:load => {nil => {:except => [:index, :show]}}} }
601
601
  params.merge!(:action => "index")
602
- expect(CanCan::ControllerResource.new(controller).skip?(:load)).to be_false
602
+ expect(CanCan::ControllerResource.new(controller).skip?(:load)).to be_falsey
603
603
  params.merge!(:action => "show")
604
- expect(CanCan::ControllerResource.new(controller).skip?(:load)).to be_false
604
+ expect(CanCan::ControllerResource.new(controller).skip?(:load)).to be_falsey
605
605
  params.merge!(:action => "other_action")
606
- expect(CanCan::ControllerResource.new(controller).skip?(:load)).to be_true
607
- expect(CanCan::ControllerResource.new(controller, :some_resource).skip?(:load)).to be_false
606
+ expect(CanCan::ControllerResource.new(controller).skip?(:load)).to be(true)
607
+ expect(CanCan::ControllerResource.new(controller, :some_resource).skip?(:load)).to be(false)
608
608
  end
609
609
 
610
610
  it "skips resource behavior :except one action on resource" do
611
611
  allow(controller_class).to receive(:cancan_skipper) { {:authorize => {:model => {:except => :index}}} }
612
612
  params.merge!(:action => "index")
613
- expect(CanCan::ControllerResource.new(controller, :model).skip?(:authorize)).to be_false
613
+ expect(CanCan::ControllerResource.new(controller, :model).skip?(:authorize)).to be_falsey
614
614
  params.merge!(:action => "other_action")
615
- expect(CanCan::ControllerResource.new(controller).skip?(:authorize)).to be_false
616
- expect(CanCan::ControllerResource.new(controller, :model).skip?(:authorize)).to be_true
615
+ expect(CanCan::ControllerResource.new(controller).skip?(:authorize)).to be(false)
616
+ expect(CanCan::ControllerResource.new(controller, :model).skip?(:authorize)).to be(true)
617
617
  end
618
618
 
619
619
  it "skips loading and authorization" do
@@ -311,7 +311,6 @@ if defined? CanCan::ModelAdapters::ActiveRecordAdapter
311
311
  end
312
312
 
313
313
  context "when MetaWhere is defined" do
314
-
315
314
  before :each do
316
315
  pending "[Deprecated] MetaWhere support is being removed" unless defined? MetaWhere
317
316
  end
@@ -338,39 +337,38 @@ if defined? CanCan::ModelAdapters::ActiveRecordAdapter
338
337
  end
339
338
 
340
339
  it "matches any MetaWhere condition" do
341
-
342
340
  adapter = CanCan::ModelAdapters::ActiveRecordAdapter
343
341
  article1 = Article.new(:priority => 1, :name => "Hello World")
344
- expect(adapter.matches_condition?(article1, :priority.eq, 1)).to be_true
345
- expect(adapter.matches_condition?(article1, :priority.eq, 2)).to be_false
346
- expect(adapter.matches_condition?(article1, :priority.eq_any, [1, 2])).to be_true
347
- expect(adapter.matches_condition?(article1, :priority.eq_any, [2, 3])).to be_false
348
- expect(adapter.matches_condition?(article1, :priority.eq_all, [1, 1])).to be_true
349
- expect(adapter.matches_condition?(article1, :priority.eq_all, [1, 2])).to be_false
350
- expect(adapter.matches_condition?(article1, :priority.ne, 2)).to be_true
351
- expect(adapter.matches_condition?(article1, :priority.ne, 1)).to be_false
352
- expect(adapter.matches_condition?(article1, :priority.in, [1, 2])).to be_true
353
- expect(adapter.matches_condition?(article1, :priority.in, [2, 3])).to be_false
354
- expect(adapter.matches_condition?(article1, :priority.nin, [2, 3])).to be_true
355
- expect(adapter.matches_condition?(article1, :priority.nin, [1, 2])).to be_false
356
- expect(adapter.matches_condition?(article1, :priority.lt, 2)).to be_true
357
- expect(adapter.matches_condition?(article1, :priority.lt, 1)).to be_false
358
- expect(adapter.matches_condition?(article1, :priority.lteq, 1)).to be_true
359
- expect(adapter.matches_condition?(article1, :priority.lteq, 0)).to be_false
360
- expect(adapter.matches_condition?(article1, :priority.gt, 0)).to be_true
361
- expect(adapter.matches_condition?(article1, :priority.gt, 1)).to be_false
362
- expect(adapter.matches_condition?(article1, :priority.gteq, 1)).to be_true
363
- expect(adapter.matches_condition?(article1, :priority.gteq, 2)).to be_false
364
- expect(adapter.matches_condition?(article1, :name.like, "%ello worl%")).to be_true
365
- expect(adapter.matches_condition?(article1, :name.like, "hello world")).to be_true
366
- expect(adapter.matches_condition?(article1, :name.like, "hello%")).to be_true
367
- expect(adapter.matches_condition?(article1, :name.like, "h%d")).to be_true
368
- expect(adapter.matches_condition?(article1, :name.like, "%helo%")).to be_false
369
- expect(adapter.matches_condition?(article1, :name.like, "hello")).to be_false
370
- expect(adapter.matches_condition?(article1, :name.like, "hello.world")).to be_false
342
+ expect(adapter.matches_condition?(article1, :priority.eq, 1)).to be(true)
343
+ expect(adapter.matches_condition?(article1, :priority.eq, 2)).to be(false)
344
+ expect(adapter.matches_condition?(article1, :priority.eq_any, [1, 2])).to be(true)
345
+ expect(adapter.matches_condition?(article1, :priority.eq_any, [2, 3])).to be(false)
346
+ expect(adapter.matches_condition?(article1, :priority.eq_all, [1, 1])).to be(true)
347
+ expect(adapter.matches_condition?(article1, :priority.eq_all, [1, 2])).to be(false)
348
+ expect(adapter.matches_condition?(article1, :priority.ne, 2)).to be(true)
349
+ expect(adapter.matches_condition?(article1, :priority.ne, 1)).to be(false)
350
+ expect(adapter.matches_condition?(article1, :priority.in, [1, 2])).to be(true)
351
+ expect(adapter.matches_condition?(article1, :priority.in, [2, 3])).to be(false)
352
+ expect(adapter.matches_condition?(article1, :priority.nin, [2, 3])).to be(true)
353
+ expect(adapter.matches_condition?(article1, :priority.nin, [1, 2])).to be(false)
354
+ expect(adapter.matches_condition?(article1, :priority.lt, 2)).to be(true)
355
+ expect(adapter.matches_condition?(article1, :priority.lt, 1)).to be(false)
356
+ expect(adapter.matches_condition?(article1, :priority.lteq, 1)).to be(true)
357
+ expect(adapter.matches_condition?(article1, :priority.lteq, 0)).to be(false)
358
+ expect(adapter.matches_condition?(article1, :priority.gt, 0)).to be(true)
359
+ expect(adapter.matches_condition?(article1, :priority.gt, 1)).to be(false)
360
+ expect(adapter.matches_condition?(article1, :priority.gteq, 1)).to be(true)
361
+ expect(adapter.matches_condition?(article1, :priority.gteq, 2)).to be(false)
362
+ expect(adapter.matches_condition?(article1, :name.like, "%ello worl%")).to be_truthy
363
+ expect(adapter.matches_condition?(article1, :name.like, "hello world")).to be_truthy
364
+ expect(adapter.matches_condition?(article1, :name.like, "hello%")).to be_truthy
365
+ expect(adapter.matches_condition?(article1, :name.like, "h%d")).to be_truthy
366
+ expect(adapter.matches_condition?(article1, :name.like, "%helo%")).to be_falsey
367
+ expect(adapter.matches_condition?(article1, :name.like, "hello")).to be_falsey
368
+ expect(adapter.matches_condition?(article1, :name.like, "hello.world")).to be_falsey
371
369
  # For some reason this is reporting "The not_matches MetaWhere condition is not supported."
372
- # expect(adapter.matches_condition?(article1, :name.nlike, "%helo%")).to be_true
373
- # expect(adapter.matches_condition?(article1, :name.nlike, "%ello worl%")).to be_false
370
+ # expect(adapter.matches_condition?(article1, :name.nlike, "%helo%")).to be(true)
371
+ # expect(adapter.matches_condition?(article1, :name.nlike, "%ello worl%")).to be(false)
374
372
  end
375
373
  end
376
374
  end
@@ -119,7 +119,7 @@ if defined? CanCan::ModelAdapters::MongoidAdapter
119
119
  expect(MongoidProject.accessible_by(@ability, :read)).to eq([obj])
120
120
 
121
121
  obj2 = MongoidProject.create(:title => 'Lord')
122
- expect(@ability.can?(:read, obj2)).to be_false
122
+ expect(@ability.can?(:read, obj2)).to be(false)
123
123
  end
124
124
 
125
125
  describe "activates only when there are Criteria in the hash" do
@@ -145,7 +145,7 @@ if defined? CanCan::ModelAdapters::MongoidAdapter
145
145
  expect(MongoidProject.accessible_by(@ability, :read)).to eq([obj])
146
146
 
147
147
  obj2 = MongoidProject.create(:title => 'Lord')
148
- expect(@ability.can?(:read, obj2)).to be_false
148
+ expect(@ability.can?(:read, obj2)).to be(false)
149
149
  end
150
150
 
151
151
  it "handles :field.size" do
@@ -155,7 +155,7 @@ if defined? CanCan::ModelAdapters::MongoidAdapter
155
155
  expect(MongoidProject.accessible_by(@ability, :read)).to eq([obj])
156
156
 
157
157
  obj2 = MongoidProject.create(:titles => ['Palatin', 'Margrave', 'Marquis'])
158
- expect(@ability.can?(:read, obj2)).to be_false
158
+ expect(@ability.can?(:read, obj2)).to be(false)
159
159
  end
160
160
 
161
161
  it "handles :field.exists" do
@@ -165,7 +165,7 @@ if defined? CanCan::ModelAdapters::MongoidAdapter
165
165
  expect(MongoidProject.accessible_by(@ability, :read)).to eq([obj])
166
166
 
167
167
  obj2 = MongoidProject.create
168
- expect(@ability.can?(:read, obj2)).to be_false
168
+ expect(@ability.can?(:read, obj2)).to be(false)
169
169
  end
170
170
 
171
171
  it "handles :field.gt" do
@@ -175,7 +175,7 @@ if defined? CanCan::ModelAdapters::MongoidAdapter
175
175
  expect(MongoidProject.accessible_by(@ability, :read)).to eq([obj])
176
176
 
177
177
  obj2 = MongoidProject.create(:age => 40)
178
- expect(@ability.can?(:read, obj2)).to be_false
178
+ expect(@ability.can?(:read, obj2)).to be(false)
179
179
  end
180
180
 
181
181
  it "handles instance not saved to database" do
@@ -187,7 +187,7 @@ if defined? CanCan::ModelAdapters::MongoidAdapter
187
187
  expect(MongoidProject.accessible_by(@ability, :read).entries).to eq([])
188
188
 
189
189
  obj2 = MongoidProject.new(:title => 'Lord')
190
- expect(@ability.can?(:read, obj2)).to be_false
190
+ expect(@ability.can?(:read, obj2)).to be(false)
191
191
  end
192
192
  end
193
193
 
@@ -3,11 +3,11 @@ RSpec::Matchers.define :orderlessly_match do |original_string|
3
3
  original_string.split('').sort == given_string.split('').sort
4
4
  end
5
5
 
6
- failure_message_for_should do |given_string|
6
+ failure_message do |given_string|
7
7
  "expected \"#{given_string}\" to have the same characters as \"#{original_string}\""
8
8
  end
9
9
 
10
- failure_message_for_should_not do |given_string|
10
+ failure_message_when_negated do |given_string|
11
11
  "expected \"#{given_string}\" not to have the same characters as \"#{original_string}\""
12
12
  end
13
13
  end
@@ -14,7 +14,6 @@ $:.unshift File.expand_path('../support', __FILE__)
14
14
  Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
15
15
 
16
16
  RSpec.configure do |config|
17
- config.treat_symbols_as_metadata_keys_with_true_values = true
18
17
  config.filter_run :focus => true
19
18
  config.run_all_when_everything_filtered = true
20
19
  config.mock_with :rspec
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cancancan
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.8.2
4
+ version: 1.8.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bryan Rite
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-06-05 00:00:00.000000000 Z
12
+ date: 2014-06-24 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -45,14 +45,14 @@ dependencies:
45
45
  requirements:
46
46
  - - "~>"
47
47
  - !ruby/object:Gem::Version
48
- version: '2.14'
48
+ version: 3.0.0
49
49
  type: :development
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: '2.14'
55
+ version: 3.0.0
56
56
  - !ruby/object:Gem::Dependency
57
57
  name: appraisal
58
58
  requirement: !ruby/object:Gem::Requirement