enumerize 2.4.0 → 2.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/ruby.yml +73 -0
- data/CHANGELOG.md +7 -0
- data/Gemfile.global +1 -8
- data/Gemfile.rails70 +9 -0
- data/Gemfile.railsmaster +5 -0
- data/README.md +182 -101
- data/lib/enumerize/activerecord.rb +6 -2
- data/lib/enumerize/scope/activerecord.rb +4 -0
- data/lib/enumerize/scope/mongoid.rb +4 -0
- data/lib/enumerize/scope/sequel.rb +4 -0
- data/lib/enumerize/version.rb +1 -1
- data/test/activemodel_test.rb +22 -22
- data/test/activerecord_test.rb +129 -106
- data/test/attribute_map_test.rb +7 -7
- data/test/attribute_test.rb +31 -31
- data/test/base_test.rb +35 -35
- data/test/module_attributes_test.rb +8 -8
- data/test/mongo_mapper_test.rb +8 -8
- data/test/mongoid_test.rb +30 -27
- data/test/multiple_test.rb +8 -8
- data/test/predicates_test.rb +18 -18
- data/test/rails_admin_test.rb +2 -2
- data/test/sequel_test.rb +56 -53
- data/test/set_test.rb +23 -23
- data/test/value_test.rb +28 -35
- metadata +10 -30
- data/.travis.yml +0 -35
data/test/activerecord_test.rb
CHANGED
@@ -14,26 +14,46 @@ silence_warnings do
|
|
14
14
|
'adapter' => 'sqlite3',
|
15
15
|
'database' => ':memory:'
|
16
16
|
},
|
17
|
+
'mysql2' => {
|
18
|
+
'adapter' => 'mysql2',
|
19
|
+
'host' => '127.0.0.1',
|
20
|
+
'username' => 'root',
|
21
|
+
'password' => ENV['MYSQL_ROOT_PASSWORD'],
|
22
|
+
'database' => 'enumerize_test',
|
23
|
+
'encoding' => 'utf8mb4',
|
24
|
+
'charset' => 'utf8mb4'
|
25
|
+
},
|
17
26
|
'postgresql' => {
|
18
27
|
'adapter' => 'postgresql',
|
19
|
-
'
|
20
|
-
'
|
21
|
-
'
|
28
|
+
'host' => 'localhost',
|
29
|
+
'username' => ENV['POSTGRES_USER'],
|
30
|
+
'password' => ENV['POSTGRES_PASSWORD']
|
22
31
|
},
|
23
32
|
'postgresql_master' => {
|
24
33
|
'adapter' => 'postgresql',
|
25
|
-
'
|
26
|
-
'
|
34
|
+
'host' => 'localhost',
|
35
|
+
'username' => ENV['POSTGRES_USER'],
|
36
|
+
'password' => ENV['POSTGRES_PASSWORD'],
|
27
37
|
'database' => 'template1',
|
28
38
|
'schema_search_path' => 'public'
|
29
39
|
}
|
30
40
|
}
|
31
|
-
|
41
|
+
|
42
|
+
case db
|
43
|
+
when :postgresql
|
32
44
|
ActiveRecord::Base.establish_connection(:postgresql_master)
|
33
45
|
ActiveRecord::Base.connection.recreate_database('enumerize_test')
|
34
|
-
|
46
|
+
when :mysql2
|
47
|
+
if ActiveRecord::Base.configurations.respond_to?(:[])
|
48
|
+
ActiveRecord::Tasks::DatabaseTasks.create ActiveRecord::Base.configurations[db.to_s]
|
49
|
+
else
|
50
|
+
ActiveRecord::Tasks::DatabaseTasks.create ActiveRecord::Base.configurations.find_db_config(db.to_s)
|
51
|
+
end
|
35
52
|
|
36
|
-
|
53
|
+
ActiveRecord::Base.establish_connection(db)
|
54
|
+
else
|
55
|
+
ActiveRecord::Base.establish_connection(db)
|
56
|
+
end
|
37
57
|
end
|
38
58
|
|
39
59
|
ActiveRecord::Base.connection.instance_eval do
|
@@ -135,7 +155,7 @@ describe Enumerize::ActiveRecordSupport do
|
|
135
155
|
it 'sets nil if invalid value is passed' do
|
136
156
|
user = User.new
|
137
157
|
user.sex = :invalid
|
138
|
-
user.sex.must_be_nil
|
158
|
+
expect(user.sex).must_be_nil
|
139
159
|
end
|
140
160
|
|
141
161
|
it 'saves value' do
|
@@ -143,7 +163,7 @@ describe Enumerize::ActiveRecordSupport do
|
|
143
163
|
user = User.new
|
144
164
|
user.sex = :female
|
145
165
|
user.save!
|
146
|
-
user.sex.must_equal 'female'
|
166
|
+
expect(user.sex).must_equal 'female'
|
147
167
|
end
|
148
168
|
|
149
169
|
it 'loads value' do
|
@@ -151,15 +171,15 @@ describe Enumerize::ActiveRecordSupport do
|
|
151
171
|
User.create!(:sex => :male)
|
152
172
|
store_translations(:en, :enumerize => {:sex => {:male => 'Male'}}) do
|
153
173
|
user = User.first
|
154
|
-
user.sex.must_equal 'male'
|
155
|
-
user.sex_text.must_equal 'Male'
|
174
|
+
expect(user.sex).must_equal 'male'
|
175
|
+
expect(user.sex_text).must_equal 'Male'
|
156
176
|
end
|
157
177
|
end
|
158
178
|
|
159
179
|
it 'sets nil if invalid stored attribute value is passed' do
|
160
180
|
user = User.new
|
161
181
|
user.language = :invalid
|
162
|
-
user.language.must_be_nil
|
182
|
+
expect(user.language).must_be_nil
|
163
183
|
end
|
164
184
|
|
165
185
|
it 'saves stored attribute value' do
|
@@ -168,12 +188,12 @@ describe Enumerize::ActiveRecordSupport do
|
|
168
188
|
user.language = :en
|
169
189
|
user.save!
|
170
190
|
user.reload
|
171
|
-
user.language.must_equal 'en'
|
191
|
+
expect(user.language).must_equal 'en'
|
172
192
|
end
|
173
193
|
|
174
194
|
it 'has default value' do
|
175
|
-
User.new.role.must_equal 'user'
|
176
|
-
User.new.attributes['role'].must_equal 'user'
|
195
|
+
expect(User.new.role).must_equal 'user'
|
196
|
+
expect(User.new.attributes['role']).must_equal 'user'
|
177
197
|
end
|
178
198
|
|
179
199
|
it 'does not set default value for not selected attributes' do
|
@@ -181,13 +201,13 @@ describe Enumerize::ActiveRecordSupport do
|
|
181
201
|
User.create!(:sex => :male)
|
182
202
|
|
183
203
|
user = User.select(:id).first
|
184
|
-
user.attributes['role'].
|
185
|
-
user.attributes['lambda_role'].
|
204
|
+
expect(user.attributes['role']).must_be_nil
|
205
|
+
expect(user.attributes['lambda_role']).must_be_nil
|
186
206
|
end
|
187
207
|
|
188
208
|
it 'has default value with lambda' do
|
189
|
-
User.new.lambda_role.must_equal 'admin'
|
190
|
-
User.new.attributes['lambda_role'].must_equal 'admin'
|
209
|
+
expect(User.new.lambda_role).must_equal 'admin'
|
210
|
+
expect(User.new.attributes['lambda_role']).must_equal 'admin'
|
191
211
|
end
|
192
212
|
|
193
213
|
it 'uses after_initialize callback to set default value' do
|
@@ -195,11 +215,11 @@ describe Enumerize::ActiveRecordSupport do
|
|
195
215
|
User.create!(sex: 'male', lambda_role: nil)
|
196
216
|
|
197
217
|
user = User.where(:sex => 'male').first
|
198
|
-
user.lambda_role.must_equal 'admin'
|
218
|
+
expect(user.lambda_role).must_equal 'admin'
|
199
219
|
end
|
200
220
|
|
201
221
|
it 'uses default value from db column' do
|
202
|
-
User.new.account_type.must_equal 'basic'
|
222
|
+
expect(User.new.account_type).must_equal 'basic'
|
203
223
|
end
|
204
224
|
|
205
225
|
it 'has default value with default scope' do
|
@@ -207,39 +227,39 @@ describe Enumerize::ActiveRecordSupport do
|
|
207
227
|
default_scope -> { having_role(:user) }
|
208
228
|
end
|
209
229
|
|
210
|
-
UserWithDefaultScope.new.role.must_equal 'user'
|
211
|
-
UserWithDefaultScope.new.attributes['role'].must_equal 'user'
|
230
|
+
expect(UserWithDefaultScope.new.role).must_equal 'user'
|
231
|
+
expect(UserWithDefaultScope.new.attributes['role']).must_equal 'user'
|
212
232
|
end
|
213
233
|
|
214
234
|
it 'validates inclusion' do
|
215
235
|
user = User.new
|
216
236
|
user.role = 'wrong'
|
217
|
-
user.wont_be :valid?
|
218
|
-
user.errors[:role].must_include 'is not included in the list'
|
237
|
+
expect(user).wont_be :valid?
|
238
|
+
expect(user.errors[:role]).must_include 'is not included in the list'
|
219
239
|
end
|
220
240
|
|
221
241
|
it 'sets value to enumerized field from db when record is reloaded' do
|
222
242
|
user = User.create!(interests: [:music])
|
223
243
|
User.find(user.id).update(interests: %i[music dancing])
|
224
|
-
user.interests.must_equal %w[music]
|
244
|
+
expect(user.interests).must_equal %w[music]
|
225
245
|
user.reload
|
226
|
-
user.interests.must_equal %w[music dancing]
|
246
|
+
expect(user.interests).must_equal %w[music dancing]
|
227
247
|
end
|
228
248
|
|
229
249
|
it 'validates inclusion when using write_attribute with string attribute' do
|
230
250
|
user = User.new
|
231
251
|
user.send(:write_attribute, 'role', 'wrong')
|
232
|
-
user.read_attribute_for_validation(:role).must_equal 'wrong'
|
233
|
-
user.wont_be :valid?
|
234
|
-
user.errors[:role].must_include 'is not included in the list'
|
252
|
+
expect(user.read_attribute_for_validation(:role)).must_equal 'wrong'
|
253
|
+
expect(user).wont_be :valid?
|
254
|
+
expect(user.errors[:role]).must_include 'is not included in the list'
|
235
255
|
end
|
236
256
|
|
237
257
|
it 'validates inclusion when using write_attribute with symbol attribute' do
|
238
258
|
user = User.new
|
239
259
|
user.send(:write_attribute, :role, 'wrong')
|
240
|
-
user.read_attribute_for_validation(:role).must_equal 'wrong'
|
241
|
-
user.wont_be :valid?
|
242
|
-
user.errors[:role].must_include 'is not included in the list'
|
260
|
+
expect(user.read_attribute_for_validation(:role)).must_equal 'wrong'
|
261
|
+
expect(user).wont_be :valid?
|
262
|
+
expect(user.errors[:role]).must_include 'is not included in the list'
|
243
263
|
end
|
244
264
|
|
245
265
|
it 'validates inclusion on mass assignment' do
|
@@ -250,72 +270,72 @@ describe Enumerize::ActiveRecordSupport do
|
|
250
270
|
|
251
271
|
it "uses persisted value for validation if it hasn't been set" do
|
252
272
|
user = User.create! :sex => :male
|
253
|
-
User.find(user.id).read_attribute_for_validation(:sex).must_equal 'male'
|
273
|
+
expect(User.find(user.id).read_attribute_for_validation(:sex)).must_equal 'male'
|
254
274
|
end
|
255
275
|
|
256
276
|
it 'is valid with empty string assigned' do
|
257
277
|
user = User.new
|
258
278
|
user.role = ''
|
259
|
-
user.must_be :valid?
|
279
|
+
expect(user).must_be :valid?
|
260
280
|
end
|
261
281
|
|
262
282
|
it 'stores nil when empty string assigned' do
|
263
283
|
user = User.new
|
264
284
|
user.role = ''
|
265
|
-
user.read_attribute(:role).must_be_nil
|
285
|
+
expect(user.read_attribute(:role)).must_be_nil
|
266
286
|
end
|
267
287
|
|
268
288
|
it 'validates inclusion when :skip_validations = false' do
|
269
289
|
user = DoNotSkipValidationsUser.new
|
270
290
|
user.foo = 'wrong'
|
271
|
-
user.wont_be :valid?
|
272
|
-
user.errors[:foo].must_include 'is not included in the list'
|
291
|
+
expect(user).wont_be :valid?
|
292
|
+
expect(user.errors[:foo]).must_include 'is not included in the list'
|
273
293
|
end
|
274
294
|
|
275
295
|
it 'does not validate inclusion when :skip_validations = true' do
|
276
296
|
user = SkipValidationsUser.new
|
277
297
|
user.foo = 'wrong'
|
278
|
-
user.must_be :valid?
|
298
|
+
expect(user).must_be :valid?
|
279
299
|
end
|
280
300
|
|
281
301
|
it 'supports :skip_validations option as lambda' do
|
282
302
|
user = SkipValidationsLambdaUser.new
|
283
303
|
user.foo = 'wrong'
|
284
|
-
user.must_be :valid?
|
304
|
+
expect(user).must_be :valid?
|
285
305
|
end
|
286
306
|
|
287
307
|
it 'supports :skip_validations option as lambda with a parameter' do
|
288
308
|
user = SkipValidationsLambdaWithParamUser.new
|
289
309
|
user.foo = 'wrong'
|
290
|
-
user.must_be :valid?
|
310
|
+
expect(user).must_be :valid?
|
291
311
|
end
|
292
312
|
|
293
313
|
it 'supports multiple attributes' do
|
294
314
|
user = User.new
|
295
|
-
user.interests.must_be_empty
|
315
|
+
expect(user.interests).must_be_empty
|
296
316
|
user.interests << :music
|
297
|
-
user.interests.must_equal %w(music)
|
317
|
+
expect(user.interests).must_equal %w(music)
|
298
318
|
user.save!
|
299
319
|
|
300
320
|
user = User.find(user.id)
|
301
|
-
user.interests.must_be_instance_of Enumerize::Set
|
302
|
-
user.interests.must_equal %w(music)
|
321
|
+
expect(user.interests).must_be_instance_of Enumerize::Set
|
322
|
+
expect(user.interests).must_equal %w(music)
|
303
323
|
user.interests << :sports
|
304
|
-
user.interests.must_equal %w(music sports)
|
324
|
+
expect(user.interests).must_equal %w(music sports)
|
305
325
|
|
306
326
|
user.interests = []
|
307
327
|
interests = user.interests
|
308
328
|
interests << :music
|
309
|
-
interests.must_equal %w(music)
|
329
|
+
expect(interests).must_equal %w(music)
|
310
330
|
interests << :dancing
|
311
|
-
interests.must_equal %w(music dancing)
|
331
|
+
expect(interests).must_equal %w(music dancing)
|
312
332
|
end
|
313
333
|
|
314
334
|
it 'stores multiple value passed passed to new' do
|
315
335
|
user = User.new(interests: [:music, :dancing])
|
316
336
|
user.save!
|
317
|
-
user.interests.must_equal %w(music dancing)
|
318
|
-
User.find(user.id).interests.must_equal %w(music dancing)
|
337
|
+
expect(user.interests).must_equal %w(music dancing)
|
338
|
+
expect(User.find(user.id).interests).must_equal %w(music dancing)
|
319
339
|
end
|
320
340
|
|
321
341
|
it 'returns invalid multiple value for validation' do
|
@@ -323,19 +343,19 @@ describe Enumerize::ActiveRecordSupport do
|
|
323
343
|
user.interests << :music
|
324
344
|
user.interests << :invalid
|
325
345
|
values = user.read_attribute_for_validation(:interests)
|
326
|
-
values.must_equal %w(music invalid)
|
346
|
+
expect(values).must_equal %w(music invalid)
|
327
347
|
end
|
328
348
|
|
329
349
|
it 'validates multiple attributes' do
|
330
350
|
user = User.new
|
331
351
|
user.interests << :invalid
|
332
|
-
user.wont_be :valid?
|
352
|
+
expect(user).wont_be :valid?
|
333
353
|
|
334
354
|
user.interests = Object.new
|
335
|
-
user.wont_be :valid?
|
355
|
+
expect(user).wont_be :valid?
|
336
356
|
|
337
357
|
user.interests = ['music', '']
|
338
|
-
user.must_be :valid?
|
358
|
+
expect(user).must_be :valid?
|
339
359
|
end
|
340
360
|
|
341
361
|
it 'stores custom values for multiple attributes' do
|
@@ -350,36 +370,39 @@ describe Enumerize::ActiveRecordSupport do
|
|
350
370
|
|
351
371
|
user = klass.new
|
352
372
|
user.interests << :music
|
353
|
-
user.read_attribute(:interests).must_equal [0]
|
354
|
-
user.interests.must_equal %w(music)
|
373
|
+
expect(user.read_attribute(:interests)).must_equal [0]
|
374
|
+
expect(user.interests).must_equal %w(music)
|
355
375
|
user.save
|
356
376
|
|
357
377
|
user = klass.find(user.id)
|
358
|
-
user.interests.must_equal %w(music)
|
378
|
+
expect(user.interests).must_equal %w(music)
|
359
379
|
end
|
360
380
|
|
361
381
|
it 'adds scope' do
|
362
382
|
User.delete_all
|
363
383
|
|
364
|
-
user_1 = User.create!(status: :active, role: :admin)
|
365
|
-
user_2 = User.create!(status: :blocked)
|
384
|
+
user_1 = User.create!(sex: :female, skill: :noob, status: :active, role: :admin)
|
385
|
+
user_2 = User.create!(sex: :female, skill: :casual, status: :blocked)
|
366
386
|
user_3 = User.create!(sex: :male, skill: :pro)
|
367
387
|
|
368
|
-
User.with_status(:active).must_equal [user_1]
|
369
|
-
User.with_status(:blocked).must_equal [user_2]
|
370
|
-
User.with_status(:active, :blocked).to_set.must_equal [user_1, user_2].to_set
|
388
|
+
expect(User.with_status(:active)).must_equal [user_1]
|
389
|
+
expect(User.with_status(:blocked)).must_equal [user_2]
|
390
|
+
expect(User.with_status(:active, :blocked).to_set).must_equal [user_1, user_2].to_set
|
391
|
+
|
392
|
+
expect(User.without_status(:active)).must_equal [user_2]
|
393
|
+
expect(User.without_status(:active, :blocked)).must_equal []
|
371
394
|
|
372
|
-
User.
|
373
|
-
User.
|
395
|
+
expect(User.male).must_equal [user_3]
|
396
|
+
expect(User.pro).must_equal [user_3]
|
374
397
|
|
375
|
-
User.
|
376
|
-
User.
|
398
|
+
expect(User.not_male.to_set).must_equal [user_1, user_2].to_set
|
399
|
+
expect(User.not_pro.to_set).must_equal [user_1, user_2].to_set
|
377
400
|
end
|
378
401
|
|
379
402
|
it 'ignores not enumerized values that passed to the scope method' do
|
380
403
|
User.delete_all
|
381
404
|
|
382
|
-
User.with_status(:foo).must_equal []
|
405
|
+
expect(User.with_status(:foo)).must_equal []
|
383
406
|
end
|
384
407
|
|
385
408
|
it 'allows either key or value as valid' do
|
@@ -387,13 +410,13 @@ describe Enumerize::ActiveRecordSupport do
|
|
387
410
|
user_2 = User.new(status: 1)
|
388
411
|
user_3 = User.new(status: '1')
|
389
412
|
|
390
|
-
user_1.status.must_equal 'active'
|
391
|
-
user_2.status.must_equal 'active'
|
392
|
-
user_3.status.must_equal 'active'
|
413
|
+
expect(user_1.status).must_equal 'active'
|
414
|
+
expect(user_2.status).must_equal 'active'
|
415
|
+
expect(user_3.status).must_equal 'active'
|
393
416
|
|
394
|
-
user_1.must_be :valid?
|
395
|
-
user_2.must_be :valid?
|
396
|
-
user_3.must_be :valid?
|
417
|
+
expect(user_1).must_be :valid?
|
418
|
+
expect(user_2).must_be :valid?
|
419
|
+
expect(user_3).must_be :valid?
|
397
420
|
end
|
398
421
|
|
399
422
|
it 'supports defining enumerized attributes on abstract class' do
|
@@ -401,7 +424,7 @@ describe Enumerize::ActiveRecordSupport do
|
|
401
424
|
|
402
425
|
document = Document.new
|
403
426
|
document.visibility = :protected
|
404
|
-
document.visibility.must_equal 'protected'
|
427
|
+
expect(document.visibility).must_equal 'protected'
|
405
428
|
end
|
406
429
|
|
407
430
|
it 'supports defining enumerized scopes on abstract class' do
|
@@ -410,7 +433,7 @@ describe Enumerize::ActiveRecordSupport do
|
|
410
433
|
document_1 = Document.create!(visibility: :public)
|
411
434
|
document_2 = Document.create!(visibility: :private)
|
412
435
|
|
413
|
-
Document.with_visibility(:public).must_equal [document_1]
|
436
|
+
expect(Document.with_visibility(:public)).must_equal [document_1]
|
414
437
|
end
|
415
438
|
|
416
439
|
it 'validates uniqueness' do
|
@@ -422,7 +445,7 @@ describe Enumerize::ActiveRecordSupport do
|
|
422
445
|
user.status = :active
|
423
446
|
user.valid?
|
424
447
|
|
425
|
-
user.errors[:status].wont_be :empty?
|
448
|
+
expect(user.errors[:status]).wont_be :empty?
|
426
449
|
end
|
427
450
|
|
428
451
|
it 'validates presence with multiple attributes' do
|
@@ -430,17 +453,17 @@ describe Enumerize::ActiveRecordSupport do
|
|
430
453
|
user.interests = []
|
431
454
|
user.valid?
|
432
455
|
|
433
|
-
user.errors[:interests].wont_be :empty?
|
456
|
+
expect(user.errors[:interests]).wont_be :empty?
|
434
457
|
|
435
458
|
user.interests = ['']
|
436
459
|
user.valid?
|
437
460
|
|
438
|
-
user.errors[:interests].wont_be :empty?
|
461
|
+
expect(user.errors[:interests]).wont_be :empty?
|
439
462
|
|
440
463
|
user.interests = [:dancing, :programming]
|
441
464
|
user.valid?
|
442
465
|
|
443
|
-
user.errors[:interests].must_be_empty
|
466
|
+
expect(user.errors[:interests]).must_be_empty
|
444
467
|
end
|
445
468
|
|
446
469
|
it 'is valid after #becomes' do
|
@@ -452,7 +475,7 @@ describe Enumerize::ActiveRecordSupport do
|
|
452
475
|
uniq_user = User.find(user.id).becomes(UniqStatusUser)
|
453
476
|
uniq_user.valid?
|
454
477
|
|
455
|
-
uniq_user.errors.must_be_empty
|
478
|
+
expect(uniq_user.errors).must_be_empty
|
456
479
|
end
|
457
480
|
|
458
481
|
it 'supports multiple attributes in #becomes' do
|
@@ -465,8 +488,8 @@ describe Enumerize::ActiveRecordSupport do
|
|
465
488
|
|
466
489
|
user = uniq_user.becomes(User)
|
467
490
|
|
468
|
-
user.sex.must_equal uniq_user.sex
|
469
|
-
user.interests.must_equal uniq_user.interests
|
491
|
+
expect(user.sex).must_equal uniq_user.sex
|
492
|
+
expect(user.interests).must_equal uniq_user.interests
|
470
493
|
end
|
471
494
|
|
472
495
|
it "doesn't update record" do
|
@@ -496,7 +519,7 @@ describe Enumerize::ActiveRecordSupport do
|
|
496
519
|
user.reload
|
497
520
|
user.status = 'active'
|
498
521
|
|
499
|
-
user.changes.must_be_empty
|
522
|
+
expect(user.changes).must_be_empty
|
500
523
|
end
|
501
524
|
|
502
525
|
it 'allows using update_all' do
|
@@ -506,12 +529,12 @@ describe Enumerize::ActiveRecordSupport do
|
|
506
529
|
|
507
530
|
User.update_all(status: :blocked)
|
508
531
|
user.reload
|
509
|
-
user.status.must_equal 'blocked'
|
532
|
+
expect(user.status).must_equal 'blocked'
|
510
533
|
|
511
534
|
User.update_all(status: :active, account_type: :basic)
|
512
535
|
user.reload
|
513
|
-
user.status.must_equal 'active'
|
514
|
-
user.account_type.must_equal 'basic'
|
536
|
+
expect(user.status).must_equal 'active'
|
537
|
+
expect(user.account_type).must_equal 'basic'
|
515
538
|
end
|
516
539
|
|
517
540
|
it 'allows using update_all for multiple enumerize' do
|
@@ -528,8 +551,8 @@ describe Enumerize::ActiveRecordSupport do
|
|
528
551
|
klass.update_all(status: :blocked, interests: [:music, :dancing])
|
529
552
|
|
530
553
|
user = klass.find(user.id)
|
531
|
-
user.status.must_equal 'blocked'
|
532
|
-
user.interests.must_equal %w(music dancing)
|
554
|
+
expect(user.status).must_equal 'blocked'
|
555
|
+
expect(user.interests).must_equal %w(music dancing)
|
533
556
|
end
|
534
557
|
|
535
558
|
it 'allows using update_all with values' do
|
@@ -539,7 +562,7 @@ describe Enumerize::ActiveRecordSupport do
|
|
539
562
|
|
540
563
|
User.update_all(status: 2)
|
541
564
|
user.reload
|
542
|
-
user.status.must_equal 'blocked'
|
565
|
+
expect(user.status).must_equal 'blocked'
|
543
566
|
end
|
544
567
|
|
545
568
|
it 'allows using update_all on relation objects' do
|
@@ -549,7 +572,7 @@ describe Enumerize::ActiveRecordSupport do
|
|
549
572
|
|
550
573
|
User.all.update_all(status: :blocked)
|
551
574
|
user.reload
|
552
|
-
user.status.must_equal 'blocked'
|
575
|
+
expect(user.status).must_equal 'blocked'
|
553
576
|
end
|
554
577
|
|
555
578
|
it 'allows using update_all on association relation objects' do
|
@@ -561,7 +584,7 @@ describe Enumerize::ActiveRecordSupport do
|
|
561
584
|
|
562
585
|
user.documents.update_all(status: :release)
|
563
586
|
document.reload
|
564
|
-
document.status.must_equal 'release'
|
587
|
+
expect(document.status).must_equal 'release'
|
565
588
|
end
|
566
589
|
|
567
590
|
it 'preserves string usage of update_all' do
|
@@ -571,7 +594,7 @@ describe Enumerize::ActiveRecordSupport do
|
|
571
594
|
|
572
595
|
User.update_all("name = 'Frederick'")
|
573
596
|
user.reload
|
574
|
-
user.name.must_equal 'Frederick'
|
597
|
+
expect(user.name).must_equal 'Frederick'
|
575
598
|
end
|
576
599
|
|
577
600
|
it 'preserves interpolated array usage of update_all' do
|
@@ -581,7 +604,7 @@ describe Enumerize::ActiveRecordSupport do
|
|
581
604
|
|
582
605
|
User.update_all(["name = :name", {name: 'Frederick'}])
|
583
606
|
user.reload
|
584
|
-
user.name.must_equal 'Frederick'
|
607
|
+
expect(user.name).must_equal 'Frederick'
|
585
608
|
end
|
586
609
|
|
587
610
|
it 'sets attribute to nil if given one is not valid' do
|
@@ -591,24 +614,24 @@ describe Enumerize::ActiveRecordSupport do
|
|
591
614
|
|
592
615
|
User.update_all(status: :foo)
|
593
616
|
user.reload
|
594
|
-
user.status.must_be_nil
|
617
|
+
expect(user.status).must_be_nil
|
595
618
|
end
|
596
619
|
|
597
620
|
it 'supports AR types serialization' do
|
598
621
|
type = User.type_for_attribute('status')
|
599
|
-
type.must_be_instance_of Enumerize::ActiveRecordSupport::Type
|
622
|
+
expect(type).must_be_instance_of Enumerize::ActiveRecordSupport::Type
|
600
623
|
serialized = type.serialize('blocked')
|
601
|
-
serialized.must_equal 2
|
624
|
+
expect(serialized).must_equal 2
|
602
625
|
end
|
603
626
|
|
604
627
|
it 'has AR type itself JSON serializable' do
|
605
628
|
type = User.type_for_attribute('status')
|
606
|
-
type.as_json['attr'].must_equal 'status'
|
629
|
+
expect(type.as_json['attr']).must_equal 'status'
|
607
630
|
end
|
608
631
|
|
609
632
|
it "doesn't break YAML serialization" do
|
610
633
|
user = YAML.load(User.create(status: :blocked).to_yaml)
|
611
|
-
user.status.must_equal 'blocked'
|
634
|
+
expect(user.status).must_equal 'blocked'
|
612
635
|
end
|
613
636
|
|
614
637
|
# https://github.com/brainspec/enumerize/issues/304
|
@@ -616,7 +639,7 @@ describe Enumerize::ActiveRecordSupport do
|
|
616
639
|
table = User.arel_table
|
617
640
|
sql = User.where(table[:account_type].matches '%foo%').to_sql
|
618
641
|
|
619
|
-
sql.must_include 'LIKE \'%foo%\''
|
642
|
+
expect(sql).must_include 'LIKE \'%foo%\''
|
620
643
|
end
|
621
644
|
|
622
645
|
if Rails::VERSION::MAJOR >= 6
|
@@ -627,9 +650,9 @@ describe Enumerize::ActiveRecordSupport do
|
|
627
650
|
User.insert_all([{ status: :active }])
|
628
651
|
User.insert_all([{ interests: [:music, :sports] }])
|
629
652
|
|
630
|
-
User.exists?(sex: :male).must_equal true
|
631
|
-
User.exists?(status: :active).must_equal true
|
632
|
-
User.exists?(interests: [:music, :sports]).must_equal true
|
653
|
+
expect(User.exists?(sex: :male)).must_equal true
|
654
|
+
expect(User.exists?(status: :active)).must_equal true
|
655
|
+
expect(User.exists?(interests: [:music, :sports])).must_equal true
|
633
656
|
end
|
634
657
|
|
635
658
|
it 'supports AR#upsert_all' do
|
@@ -639,9 +662,9 @@ describe Enumerize::ActiveRecordSupport do
|
|
639
662
|
User.upsert_all([{ status: :active }])
|
640
663
|
User.upsert_all([{ interests: [:music, :sports] }])
|
641
664
|
|
642
|
-
User.exists?(sex: :male).must_equal true
|
643
|
-
User.exists?(status: :active).must_equal true
|
644
|
-
User.exists?(interests: [:music, :sports]).must_equal true
|
665
|
+
expect(User.exists?(sex: :male)).must_equal true
|
666
|
+
expect(User.exists?(status: :active)).must_equal true
|
667
|
+
expect(User.exists?(interests: [:music, :sports])).must_equal true
|
645
668
|
end
|
646
669
|
end
|
647
670
|
end
|
data/test/attribute_map_test.rb
CHANGED
@@ -11,12 +11,12 @@ module Enumerize
|
|
11
11
|
end
|
12
12
|
|
13
13
|
it 'empty when no attrs' do
|
14
|
-
subject.must_be_empty
|
14
|
+
expect(subject).must_be_empty
|
15
15
|
end
|
16
16
|
|
17
17
|
it 'not empty when attr added' do
|
18
18
|
subject << make_attr(:a)
|
19
|
-
subject.wont_be_empty
|
19
|
+
expect(subject).wont_be_empty
|
20
20
|
end
|
21
21
|
|
22
22
|
it 'iterates over added attrs' do
|
@@ -34,20 +34,20 @@ module Enumerize
|
|
34
34
|
actual << element
|
35
35
|
end
|
36
36
|
|
37
|
-
count.must_equal 2
|
38
|
-
actual.must_equal [attr_1, attr_2]
|
37
|
+
expect(count).must_equal 2
|
38
|
+
expect(actual).must_equal [attr_1, attr_2]
|
39
39
|
end
|
40
40
|
|
41
41
|
it 'reads attribute by name' do
|
42
42
|
attr = make_attr(:a)
|
43
43
|
subject << attr
|
44
|
-
subject[:a].must_equal attr
|
44
|
+
expect(subject[:a]).must_equal attr
|
45
45
|
end
|
46
46
|
|
47
47
|
it 'reads attribute by name using string' do
|
48
48
|
attr = make_attr(:a)
|
49
49
|
subject << attr
|
50
|
-
subject['a'].must_equal attr
|
50
|
+
expect(subject['a']).must_equal attr
|
51
51
|
end
|
52
52
|
|
53
53
|
it 'updates dependants' do
|
@@ -64,7 +64,7 @@ module Enumerize
|
|
64
64
|
subject << attr
|
65
65
|
dependant = AttributeMap.new
|
66
66
|
subject.add_dependant dependant
|
67
|
-
dependant[:a].must_equal attr
|
67
|
+
expect(dependant[:a]).must_equal attr
|
68
68
|
end
|
69
69
|
end
|
70
70
|
end
|