enumerize 2.0.0 → 2.7.0

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.
Files changed (65) hide show
  1. checksums.yaml +5 -5
  2. data/.github/workflows/ruby.yml +75 -0
  3. data/CHANGELOG.md +117 -3
  4. data/Gemfile +3 -3
  5. data/Gemfile.global +5 -9
  6. data/Gemfile.mongo_mapper +2 -2
  7. data/Gemfile.rails60 +6 -0
  8. data/Gemfile.rails61 +6 -0
  9. data/Gemfile.rails70 +9 -0
  10. data/Gemfile.railsmaster +5 -0
  11. data/README.md +210 -92
  12. data/Rakefile +9 -3
  13. data/enumerize.gemspec +1 -1
  14. data/lib/enumerize/activemodel.rb +47 -0
  15. data/lib/enumerize/activerecord.rb +92 -6
  16. data/lib/enumerize/attribute.rb +19 -11
  17. data/lib/enumerize/attribute_map.rb +2 -0
  18. data/lib/enumerize/base.rb +22 -18
  19. data/lib/enumerize/hooks/formtastic.rb +4 -1
  20. data/lib/enumerize/hooks/sequel_dataset.rb +2 -0
  21. data/lib/enumerize/hooks/simple_form.rb +4 -1
  22. data/lib/enumerize/hooks/uniqueness.rb +5 -1
  23. data/lib/enumerize/integrations/rails_admin.rb +3 -1
  24. data/lib/enumerize/integrations/rspec/matcher.rb +7 -2
  25. data/lib/enumerize/integrations/rspec.rb +3 -0
  26. data/lib/enumerize/module.rb +2 -0
  27. data/lib/enumerize/module_attributes.rb +2 -0
  28. data/lib/enumerize/mongoid.rb +23 -0
  29. data/lib/enumerize/predicatable.rb +3 -1
  30. data/lib/enumerize/predicates.rb +16 -0
  31. data/lib/enumerize/scope/activerecord.rb +16 -0
  32. data/lib/enumerize/scope/mongoid.rb +15 -0
  33. data/lib/enumerize/scope/sequel.rb +16 -0
  34. data/lib/enumerize/sequel.rb +9 -4
  35. data/lib/enumerize/set.rb +2 -0
  36. data/lib/enumerize/utils.rb +12 -0
  37. data/lib/enumerize/value.rb +14 -15
  38. data/lib/enumerize/version.rb +3 -1
  39. data/lib/enumerize.rb +9 -0
  40. data/lib/sequel/plugins/enumerize.rb +18 -0
  41. data/spec/enumerize/integrations/rspec/matcher_spec.rb +13 -10
  42. data/spec/spec_helper.rb +2 -0
  43. data/test/activemodel_test.rb +114 -0
  44. data/test/activerecord_test.rb +327 -78
  45. data/test/attribute_map_test.rb +9 -7
  46. data/test/attribute_test.rb +37 -34
  47. data/test/base_test.rb +117 -65
  48. data/test/formtastic_test.rb +25 -0
  49. data/test/module_attributes_test.rb +10 -8
  50. data/test/mongo_mapper_test.rb +20 -11
  51. data/test/mongoid_test.rb +52 -23
  52. data/test/multiple_test.rb +27 -19
  53. data/test/predicates_test.rb +51 -29
  54. data/test/rails_admin_test.rb +8 -6
  55. data/test/sequel_test.rb +228 -177
  56. data/test/set_test.rb +29 -27
  57. data/test/simple_form_test.rb +25 -0
  58. data/test/support/mock_controller.rb +6 -0
  59. data/test/support/shared_enums.rb +43 -0
  60. data/test/support/view_test_helper.rb +14 -1
  61. data/test/test_helper.rb +10 -0
  62. data/test/value_test.rb +59 -31
  63. metadata +16 -7
  64. data/.travis.yml +0 -18
  65. data/Gemfile.rails42 +0 -6
data/test/sequel_test.rb CHANGED
@@ -1,9 +1,11 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
  require 'sequel'
3
5
  require 'logger'
4
6
  require 'jdbc/sqlite3' if RUBY_PLATFORM == 'java'
5
7
 
6
- module SequelTest
8
+ class SequelTest < MiniTest::Spec
7
9
  silence_warnings do
8
10
  DB = if RUBY_PLATFORM == 'java'
9
11
  Sequel.connect('jdbc:sqlite::memory:')
@@ -21,7 +23,9 @@ module SequelTest
21
23
  String :name
22
24
  String :interests
23
25
  String :status
26
+ Integer :skill
24
27
  String :account_type, default: "basic"
28
+ String :foo
25
29
  end
26
30
 
27
31
  DB.create_table :documents do
@@ -32,7 +36,7 @@ module SequelTest
32
36
  end
33
37
 
34
38
  class Document < Sequel::Model
35
- extend Enumerize
39
+ plugin :enumerize
36
40
  enumerize :visibility, :in => [:public, :private, :protected], :scope => true, :default => :public
37
41
  end
38
42
 
@@ -47,15 +51,17 @@ module SequelTest
47
51
  plugin :dirty
48
52
  plugin :defaults_setter
49
53
  plugin :validation_helpers
50
- extend Enumerize
54
+ plugin :enumerize
51
55
  include RoleEnum
52
56
 
53
- enumerize :sex, :in => [:male, :female]
57
+ enumerize :sex, :in => [:male, :female], scope: :shallow
54
58
 
55
59
  enumerize :interests, :in => [:music, :sports, :dancing, :programming], :multiple => true
56
60
 
57
61
  enumerize :status, :in => { active: 1, blocked: 2 }, scope: true
58
62
 
63
+ enumerize :skill, :in => { noob: 0, casual: 1, pro: 2 }, scope: :shallow
64
+
59
65
  enumerize :account_type, :in => [:basic, :premium]
60
66
  end
61
67
 
@@ -67,225 +73,270 @@ module SequelTest
67
73
  end
68
74
  end
69
75
 
70
- describe Enumerize::SequelSupport do
71
- it 'sets nil if invalid value is passed' do
72
- user = User.new
73
- user.sex = :invalid
74
- user.sex.must_equal nil
75
- end
76
+ class SkipValidationsUser < Sequel::Model(:users)
77
+ include SkipValidationsEnum
78
+ end
76
79
 
77
- it 'saves value' do
78
- User.filter.delete
79
- user = User.new
80
- user.sex = :female
81
- user.save
82
- user.sex.must_equal 'female'
83
- end
80
+ class DoNotSkipValidationsUser < Sequel::Model(:users)
81
+ include DoNotSkipValidationsEnum
82
+ end
84
83
 
85
- it 'loads value' do
86
- User.filter.delete
87
- User.create(:sex => :male)
88
- store_translations(:en, :enumerize => {:sex => {:male => 'Male'}}) do
89
- user = User.first
90
- user.sex.must_equal 'male'
91
- user.sex_text.must_equal 'Male'
92
- end
93
- end
84
+ class SkipValidationsLambdaUser < Sequel::Model(:users)
85
+ include SkipValidationsLambdaEnum
86
+ end
94
87
 
95
- it 'has default value' do
96
- User.new.role.must_equal 'user'
97
- User.new.values[:role].must_equal 'user'
98
- end
88
+ class SkipValidationsLambdaWithParamUser < Sequel::Model(:users)
89
+ include SkipValidationsLambdaWithParamEnum
90
+ end
99
91
 
100
- it 'does not set default value for not selected attributes' do
101
- User.filter.delete
102
- User.create(:sex => :male)
92
+ it 'sets nil if invalid value is passed' do
93
+ user = User.new
94
+ user.sex = :invalid
95
+ expect(user.sex).must_be_nil
96
+ end
103
97
 
104
- assert_equal [:id], User.select(:id).first.values.keys
105
- end
98
+ it 'saves value' do
99
+ User.filter{ true }.delete
100
+ user = User.new
101
+ user.sex = :female
102
+ user.save
103
+ expect(user.sex).must_equal 'female'
104
+ end
106
105
 
107
- it 'has default value with lambda' do
108
- User.new.lambda_role.must_equal 'admin'
109
- User.new.values[:lambda_role].must_equal 'admin'
106
+ it 'loads value' do
107
+ User.filter{ true }.delete
108
+ User.create(:sex => :male)
109
+ store_translations(:en, :enumerize => {:sex => {:male => 'Male'}}) do
110
+ user = User.first
111
+ expect(user.sex).must_equal 'male'
112
+ expect(user.sex_text).must_equal 'Male'
110
113
  end
111
- it 'uses after_initialize callback to set default value' do
112
- User.filter.delete
113
- User.create(sex: 'male', lambda_role: nil)
114
+ end
114
115
 
115
- user = User.where(:sex => 'male').first
116
- user.lambda_role.must_equal 'admin'
117
- end
116
+ it 'has default value' do
117
+ expect(User.new.role).must_equal 'user'
118
+ expect(User.new.values[:role]).must_equal 'user'
119
+ end
118
120
 
119
- it 'uses default value from db column' do
120
- User.new.account_type.must_equal 'basic'
121
- end
121
+ it 'does not set default value for not selected attributes' do
122
+ User.filter{ true }.delete
123
+ User.create(:sex => :male)
122
124
 
123
- it 'validates inclusion' do
124
- user = User.new
125
- user.role = 'wrong'
126
- user.wont_be :valid?
127
- user.errors[:role].must_include 'is not included in the list'
128
- end
125
+ assert_equal [:id], User.select(:id).first.values.keys
126
+ end
129
127
 
130
- it 'validates inclusion on mass assignment' do
131
- assert_raises Sequel::ValidationFailed do
132
- User.create(role: 'wrong')
133
- end
134
- end
128
+ it 'has default value with lambda' do
129
+ expect(User.new.lambda_role).must_equal 'admin'
130
+ expect(User.new.values[:lambda_role]).must_equal 'admin'
131
+ end
132
+ it 'uses after_initialize callback to set default value' do
133
+ User.filter{ true }.delete
134
+ User.create(sex: 'male', lambda_role: nil)
135
135
 
136
- it "uses persisted value for validation if it hasn't been set" do
137
- user = User.create :sex => :male
138
- User[user.id].read_attribute_for_validation(:sex).must_equal 'male'
139
- end
136
+ user = User.where(:sex => 'male').first
137
+ expect(user.lambda_role).must_equal 'admin'
138
+ end
140
139
 
141
- it 'is valid with empty string assigned' do
142
- user = User.new
143
- user.role = ''
144
- user.must_be :valid?
145
- end
140
+ it 'uses default value from db column' do
141
+ expect(User.new.account_type).must_equal 'basic'
142
+ end
146
143
 
147
- it 'stores nil when empty string assigned' do
148
- user = User.new
149
- user.role = ''
150
- user.values[:role].must_equal nil
151
- end
144
+ it 'validates inclusion' do
145
+ user = User.new
146
+ user.role = 'wrong'
147
+ expect(user).wont_be :valid?
148
+ expect(user.errors[:role]).must_include 'is not included in the list'
149
+ end
152
150
 
153
- it 'supports multiple attributes' do
154
- user = User.new
155
- user.interests ||= []
156
- user.interests.must_be_empty
157
- user.interests << "music"
158
- user.interests.must_equal %w(music)
159
- user.save
160
-
161
- user = User[user.id]
162
- user.interests.must_be_instance_of Enumerize::Set
163
- user.interests.must_equal %w(music)
164
- user.interests << "sports"
165
- user.interests.must_equal %w(music sports)
166
-
167
- user.interests = []
168
- interests = user.interests
169
- interests << "music"
170
- interests.must_equal %w(music)
171
- interests << "dancing"
172
- interests.must_equal %w(music dancing)
151
+ it 'validates inclusion on mass assignment' do
152
+ assert_raises Sequel::ValidationFailed do
153
+ User.create(role: 'wrong')
173
154
  end
155
+ end
174
156
 
175
- it 'returns invalid multiple value for validation' do
176
- user = User.new
177
- user.interests << :music
178
- user.interests << :invalid
179
- values = user.read_attribute_for_validation(:interests)
180
- values.must_equal %w(music invalid)
181
- end
157
+ it "uses persisted value for validation if it hasn't been set" do
158
+ user = User.create :sex => :male
159
+ expect(User[user.id].read_attribute_for_validation(:sex)).must_equal 'male'
160
+ end
161
+
162
+ it 'is valid with empty string assigned' do
163
+ user = User.new
164
+ user.role = ''
165
+ expect(user).must_be :valid?
166
+ end
182
167
 
183
- it 'validates multiple attributes' do
184
- user = User.new
185
- user.interests << :invalid
186
- user.wont_be :valid?
168
+ it 'stores nil when empty string assigned' do
169
+ user = User.new
170
+ user.role = ''
171
+ expect(user.values[:role]).must_be_nil
172
+ end
187
173
 
188
- user.interests = Object.new
189
- user.wont_be :valid?
174
+ it 'validates inclusion when :skip_validations = false' do
175
+ user = DoNotSkipValidationsUser.new
176
+ user.foo = 'wrong'
177
+ expect(user).wont_be :valid?
178
+ expect(user.errors[:foo]).must_include 'is not included in the list'
179
+ end
190
180
 
191
- user.interests = ['music', '']
192
- user.must_be :valid?
193
- end
181
+ it 'does not validate inclusion when :skip_validations = true' do
182
+ user = SkipValidationsUser.new
183
+ user.foo = 'wrong'
184
+ expect(user).must_be :valid?
185
+ end
194
186
 
195
- it 'stores custom values for multiple attributes' do
196
- User.filter.delete
187
+ it 'supports :skip_validations option as lambda' do
188
+ user = SkipValidationsLambdaUser.new
189
+ user.foo = 'wrong'
190
+ expect(user).must_be :valid?
191
+ end
197
192
 
198
- klass = Class.new(User)
199
- klass.enumerize :interests, in: { music: 0, sports: 1, dancing: 2, programming: 3}, multiple: true
193
+ it 'supports :skip_validations option as lambda with a parameter' do
194
+ user = SkipValidationsLambdaWithParamUser.new
195
+ user.foo = 'wrong'
196
+ expect(user).must_be :valid?
197
+ end
200
198
 
201
- user = klass.new
202
- user.interests << :music
203
- user.interests.must_equal %w(music)
204
- user.save
199
+ it 'supports multiple attributes' do
200
+ user = User.new
201
+ user.interests ||= []
202
+ expect(user.interests).must_be_empty
203
+ user.interests << "music"
204
+ expect(user.interests).must_equal %w(music)
205
+ user.save
206
+
207
+ user = User[user.id]
208
+ expect(user.interests).must_be_instance_of Enumerize::Set
209
+ expect(user.interests).must_equal %w(music)
210
+ user.interests << "sports"
211
+ expect(user.interests).must_equal %w(music sports)
212
+
213
+ user.interests = []
214
+ interests = user.interests
215
+ interests << "music"
216
+ expect(interests).must_equal %w(music)
217
+ interests << "dancing"
218
+ expect(interests).must_equal %w(music dancing)
219
+ end
205
220
 
206
- user = klass[user.id]
207
- user.interests.must_equal %w(music)
208
- end
221
+ it 'returns invalid multiple value for validation' do
222
+ user = User.new
223
+ user.interests << :music
224
+ user.interests << :invalid
225
+ values = user.read_attribute_for_validation(:interests)
226
+ expect(values).must_equal %w(music invalid)
227
+ end
209
228
 
210
- it 'adds scope' do
211
- User.filter.delete
229
+ it 'validates multiple attributes' do
230
+ user = User.new
231
+ user.interests << :invalid
232
+ expect(user).wont_be :valid?
212
233
 
213
- user_1 = User.create(status: :active, role: :admin)
214
- user_2 = User.create(status: :blocked)
234
+ user.interests = Object.new
235
+ expect(user).wont_be :valid?
215
236
 
216
- User.with_status(:active).to_a.must_equal [user_1]
217
- User.with_status(:blocked).to_a.must_equal [user_2]
218
- User.with_status(:active, :blocked).to_set.must_equal [user_1, user_2].to_set
237
+ user.interests = ['music', '']
238
+ expect(user).must_be :valid?
239
+ end
219
240
 
220
- User.without_status(:active).to_a.must_equal [user_2]
221
- User.without_status(:active, :blocked).to_a.must_equal []
241
+ it 'stores custom values for multiple attributes' do
242
+ User.filter{ true }.delete
222
243
 
223
- User.having_role(:admin).to_a.must_equal [user_1]
224
- end
244
+ klass = Class.new(User)
245
+ klass.enumerize :interests, in: { music: 0, sports: 1, dancing: 2, programming: 3}, multiple: true
225
246
 
226
- it 'allows either key or value as valid' do
227
- user_1 = User.new(status: :active)
228
- user_2 = User.new(status: 1)
229
- user_3 = User.new(status: '1')
247
+ user = klass.new
248
+ user.interests << :music
249
+ expect(user.interests).must_equal %w(music)
250
+ user.save
230
251
 
231
- user_1.status.must_equal 'active'
232
- user_2.status.must_equal 'active'
233
- user_3.status.must_equal 'active'
252
+ user = klass[user.id]
253
+ expect(user.interests).must_equal %w(music)
254
+ end
234
255
 
235
- user_1.must_be :valid?
236
- user_2.must_be :valid?
237
- user_3.must_be :valid?
238
- end
256
+ it 'adds scope' do
257
+ User.filter{ true }.delete
239
258
 
240
- it 'supports defining enumerized attributes on abstract class' do
241
- Document.filter.delete
259
+ user_1 = User.create(sex: :female, skill: :noob, status: :active, role: :admin)
260
+ user_2 = User.create(sex: :female, skill: :casual, status: :blocked)
261
+ user_3 = User.create(sex: :male, skill: :pro)
242
262
 
243
- document = Document.new
244
- document.visibility = :protected
245
- document.visibility.must_equal 'protected'
246
- end
263
+ expect(User.with_status(:active).to_a).must_equal [user_1]
264
+ expect(User.with_status(:blocked).to_a).must_equal [user_2]
265
+ expect(User.with_status(:active, :blocked).to_set).must_equal [user_1, user_2].to_set
247
266
 
248
- it 'supports defining enumerized scopes on abstract class' do
249
- Document.filter.delete
267
+ expect(User.without_status(:active).to_a).must_equal [user_2]
268
+ expect(User.without_status(:active, :blocked).to_a).must_equal []
250
269
 
251
- document_1 = Document.create(visibility: :public)
252
- document_2 = Document.create(visibility: :private)
270
+ expect(User.having_role(:admin).to_a).must_equal [user_1]
271
+ expect(User.male.to_a).must_equal [user_3]
272
+ expect(User.pro.to_a).must_equal [user_3]
253
273
 
254
- Document.with_visibility(:public).to_a.must_equal [document_1]
255
- end
274
+ expect(User.not_male.to_set).must_equal [user_1, user_2].to_set
275
+ expect(User.not_pro.to_set).must_equal [user_1, user_2].to_set
276
+ end
256
277
 
257
- it 'validates uniqueness' do
258
- user = User.create(status: :active, sex: "male")
278
+ it 'allows either key or value as valid' do
279
+ user_1 = User.new(status: :active)
280
+ user_2 = User.new(status: 1)
281
+ user_3 = User.new(status: '1')
259
282
 
260
- user = UniqStatusUser.new
261
- user.sex = "male"
262
- user.status = :active
263
- user.valid?.must_equal false
283
+ expect(user_1.status).must_equal 'active'
284
+ expect(user_2.status).must_equal 'active'
285
+ expect(user_3.status).must_equal 'active'
264
286
 
265
- user.errors[:status].wont_be :empty?
266
- end
287
+ expect(user_1).must_be :valid?
288
+ expect(user_2).must_be :valid?
289
+ expect(user_3).must_be :valid?
290
+ end
267
291
 
268
- it "doesn't update record" do
269
- Document.filter.delete
292
+ it 'supports defining enumerized attributes on abstract class' do
293
+ Document.filter{ true }.delete
270
294
 
271
- expected = Time.new(2010, 10, 10)
295
+ document = Document.new
296
+ document.visibility = :protected
297
+ expect(document.visibility).must_equal 'protected'
298
+ end
272
299
 
273
- document = Document.new
274
- document.updated_at = expected
275
- document.save
300
+ it 'supports defining enumerized scopes on abstract class' do
301
+ Document.filter{ true }.delete
276
302
 
277
- document = Document.last
278
- document.save
303
+ document_1 = Document.create(visibility: :public)
304
+ document_2 = Document.create(visibility: :private)
279
305
 
280
- assert_equal expected, document.updated_at
281
- end
306
+ expect(Document.with_visibility(:public).to_a).must_equal [document_1]
307
+ end
282
308
 
283
- it 'changes from dirty should be serialized as scalar values' do
284
- user = User.create(:status => :active)
285
- user.status = :blocked
309
+ it 'validates uniqueness' do
310
+ user = User.create(status: :active, sex: "male")
286
311
 
287
- expected = { status: [1, 2] }.to_yaml
288
- assert_equal expected, user.column_changes.to_yaml
289
- end
312
+ user = UniqStatusUser.new
313
+ user.sex = "male"
314
+ user.status = :active
315
+ expect(user.valid?).must_equal false
316
+
317
+ expect(user.errors[:status]).wont_be :empty?
318
+ end
319
+
320
+ it "doesn't update record" do
321
+ Document.filter{ true }.delete
322
+
323
+ expected = Time.new(2010, 10, 10)
324
+
325
+ document = Document.new
326
+ document.updated_at = expected
327
+ document.save
328
+
329
+ document = Document.last
330
+ document.save
331
+
332
+ assert_equal expected, document.updated_at
333
+ end
334
+
335
+ it 'changes from dirty should be serialized as scalar values' do
336
+ user = User.create(:status => :active)
337
+ user.status = :blocked
338
+
339
+ expected = { status: [1, 2] }.to_yaml
340
+ assert_equal expected, user.column_changes.to_yaml
290
341
  end
291
342
  end
data/test/set_test.rb CHANGED
@@ -1,18 +1,20 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
  require 'yaml'
3
5
 
4
- describe Enumerize::Set do
5
- let(:klass) do
6
+ class SetTest < MiniTest::Spec
7
+ let(:kklass) do
6
8
  Class.new do
7
9
  extend Enumerize
8
10
  enumerize :foo, :in => %w(a b c), :multiple => true
9
11
  end
10
12
  end
11
13
 
12
- let(:object) { klass.new }
14
+ let(:object) { kklass.new }
13
15
 
14
16
  def build_set(values)
15
- @set = Enumerize::Set.new(object, klass.foo, values)
17
+ @set = Enumerize::Set.new(object, kklass.foo, values)
16
18
  end
17
19
 
18
20
  def set
@@ -39,36 +41,36 @@ describe Enumerize::Set do
39
41
  end
40
42
 
41
43
  it 'equals to other set' do
42
- set.must_equal Enumerize::Set.new(nil, klass.foo, %w(a))
44
+ expect(set).must_equal Enumerize::Set.new(nil, kklass.foo, %w(a))
43
45
  end
44
46
 
45
47
  it 'equals to array' do
46
- set.must_equal %w(a)
48
+ expect(set).must_equal %w(a)
47
49
  end
48
50
 
49
51
  it 'equals to array of symbols' do
50
- set.must_equal [:a]
52
+ expect(set).must_equal [:a]
51
53
  end
52
54
 
53
55
  it 'has unique values' do
54
56
  set << :a
55
- set.must_equal %w(a)
57
+ expect(set).must_equal %w(a)
56
58
  end
57
59
 
58
60
  it 'equals to array with different value order' do
59
61
  set << :b
60
- set.must_equal %w(b a)
62
+ expect(set).must_equal %w(b a)
61
63
  end
62
64
 
63
65
  it "isn't equal to a part of values" do
64
66
  set << :b
65
- set.wont_equal %w(a)
67
+ expect(set).wont_equal %w(a)
66
68
  end
67
69
 
68
70
  describe '#push' do
69
71
  it 'appends values' do
70
72
  set.push :b
71
- set.must_include :b
73
+ expect(set).must_include :b
72
74
  end
73
75
 
74
76
  it 'reassigns attribute' do
@@ -81,7 +83,7 @@ describe Enumerize::Set do
81
83
  describe '#delete' do
82
84
  it 'deletes value' do
83
85
  set.delete :a
84
- set.wont_include :a
86
+ expect(set).wont_include :a
85
87
  end
86
88
 
87
89
  it 'reassigns attribute' do
@@ -94,64 +96,64 @@ describe Enumerize::Set do
94
96
  describe '#inspect' do
95
97
  it 'returns custom string' do
96
98
  set << :b
97
- set.inspect.must_equal '#<Enumerize::Set {a, b}>'
99
+ expect(set.inspect).must_equal '#<Enumerize::Set {a, b}>'
98
100
  end
99
101
  end
100
102
 
101
103
  describe '#to_ary' do
102
104
  it 'returns array' do
103
- set.to_ary.must_be_instance_of Array
105
+ expect(set.to_ary).must_be_instance_of Array
104
106
  end
105
107
  end
106
108
 
107
109
  describe '#texts' do
108
110
  it 'returns array of text values' do
109
- set.texts.must_equal ['A']
111
+ expect(set.texts).must_equal ['A']
110
112
  end
111
113
  end
112
114
 
113
115
  describe '#join' do
114
116
  it 'joins values' do
115
117
  set << :b
116
- set.join(', ').must_equal 'a, b'
118
+ expect(set.join(', ')).must_equal 'a, b'
117
119
  end
118
120
  end
119
121
 
120
122
  describe 'boolean methods comparison' do
121
123
  it 'returns true if value equals method' do
122
124
  set << :a
123
- set.a?.must_equal true
125
+ expect(set.a?).must_equal true
124
126
  end
125
127
 
126
128
  it 'returns false if value does not equal method' do
127
129
  set << :a
128
- set.b?.must_equal false
130
+ expect(set.b?).must_equal false
129
131
  end
130
132
 
131
133
  it 'raises NoMethodError if there are no values like boolean method' do
132
- proc {
134
+ expect(proc {
133
135
  set.some_method?
134
- }.must_raise NoMethodError
136
+ }).must_raise NoMethodError
135
137
  end
136
138
 
137
139
  it 'raises ArgumentError if arguments are passed' do
138
- proc {
140
+ expect(proc {
139
141
  set.a?('<3')
140
- }.must_raise ArgumentError
142
+ }).must_raise ArgumentError
141
143
  end
142
144
 
143
145
  it 'responds to methods for existing values' do
144
- set.must_respond_to :a?
145
- set.must_respond_to :b?
146
- set.must_respond_to :c?
146
+ expect(set).must_respond_to :a?
147
+ expect(set).must_respond_to :b?
148
+ expect(set).must_respond_to :c?
147
149
  end
148
150
 
149
151
  it 'returns a method object' do
150
- set.method(:a?).must_be_instance_of Method
152
+ expect(set.method(:a?)).must_be_instance_of Method
151
153
  end
152
154
 
153
155
  it 'does not respond to a method for not existing value' do
154
- set.wont_respond_to :some_method?
156
+ expect(set).wont_respond_to :some_method?
155
157
  end
156
158
  end
157
159