enumerize 2.0.1 → 2.5.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 (64) hide show
  1. checksums.yaml +5 -5
  2. data/.github/workflows/ruby.yml +73 -0
  3. data/CHANGELOG.md +80 -3
  4. data/Gemfile +3 -3
  5. data/Gemfile.global +2 -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 +209 -92
  12. data/Rakefile +2 -0
  13. data/lib/enumerize/activemodel.rb +47 -0
  14. data/lib/enumerize/activerecord.rb +79 -0
  15. data/lib/enumerize/attribute.rb +19 -11
  16. data/lib/enumerize/attribute_map.rb +2 -0
  17. data/lib/enumerize/base.rb +6 -6
  18. data/lib/enumerize/hooks/formtastic.rb +4 -1
  19. data/lib/enumerize/hooks/sequel_dataset.rb +2 -0
  20. data/lib/enumerize/hooks/simple_form.rb +4 -1
  21. data/lib/enumerize/hooks/uniqueness.rb +5 -1
  22. data/lib/enumerize/integrations/rails_admin.rb +3 -1
  23. data/lib/enumerize/integrations/rspec/matcher.rb +7 -2
  24. data/lib/enumerize/integrations/rspec.rb +2 -0
  25. data/lib/enumerize/module.rb +2 -0
  26. data/lib/enumerize/module_attributes.rb +2 -0
  27. data/lib/enumerize/mongoid.rb +16 -0
  28. data/lib/enumerize/predicatable.rb +3 -1
  29. data/lib/enumerize/predicates.rb +2 -0
  30. data/lib/enumerize/scope/activerecord.rb +16 -0
  31. data/lib/enumerize/scope/mongoid.rb +15 -0
  32. data/lib/enumerize/scope/sequel.rb +16 -0
  33. data/lib/enumerize/sequel.rb +9 -4
  34. data/lib/enumerize/set.rb +2 -0
  35. data/lib/enumerize/utils.rb +12 -0
  36. data/lib/enumerize/value.rb +14 -15
  37. data/lib/enumerize/version.rb +3 -1
  38. data/lib/enumerize.rb +9 -0
  39. data/lib/sequel/plugins/enumerize.rb +18 -0
  40. data/spec/enumerize/integrations/rspec/matcher_spec.rb +13 -10
  41. data/spec/spec_helper.rb +2 -0
  42. data/test/activemodel_test.rb +114 -0
  43. data/test/activerecord_test.rb +277 -79
  44. data/test/attribute_map_test.rb +9 -7
  45. data/test/attribute_test.rb +37 -30
  46. data/test/base_test.rb +66 -64
  47. data/test/formtastic_test.rb +25 -0
  48. data/test/module_attributes_test.rb +10 -8
  49. data/test/mongo_mapper_test.rb +19 -10
  50. data/test/mongoid_test.rb +51 -22
  51. data/test/multiple_test.rb +26 -18
  52. data/test/predicates_test.rb +30 -28
  53. data/test/rails_admin_test.rb +8 -6
  54. data/test/sequel_test.rb +111 -58
  55. data/test/set_test.rb +28 -26
  56. data/test/simple_form_test.rb +25 -0
  57. data/test/support/mock_controller.rb +6 -0
  58. data/test/support/shared_enums.rb +43 -0
  59. data/test/support/view_test_helper.rb +14 -1
  60. data/test/test_helper.rb +2 -0
  61. data/test/value_test.rb +51 -30
  62. metadata +14 -27
  63. data/.travis.yml +0 -18
  64. data/Gemfile.rails42 +0 -6
data/test/sequel_test.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
  require 'sequel'
3
5
  require 'logger'
@@ -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,64 +73,80 @@ module SequelTest
67
73
  end
68
74
  end
69
75
 
76
+ class SkipValidationsUser < Sequel::Model(:users)
77
+ include SkipValidationsEnum
78
+ end
79
+
80
+ class DoNotSkipValidationsUser < Sequel::Model(:users)
81
+ include DoNotSkipValidationsEnum
82
+ end
83
+
84
+ class SkipValidationsLambdaUser < Sequel::Model(:users)
85
+ include SkipValidationsLambdaEnum
86
+ end
87
+
88
+ class SkipValidationsLambdaWithParamUser < Sequel::Model(:users)
89
+ include SkipValidationsLambdaWithParamEnum
90
+ end
91
+
70
92
  describe Enumerize::SequelSupport do
71
93
  it 'sets nil if invalid value is passed' do
72
94
  user = User.new
73
95
  user.sex = :invalid
74
- user.sex.must_equal nil
96
+ expect(user.sex).must_be_nil
75
97
  end
76
98
 
77
99
  it 'saves value' do
78
- User.filter.delete
100
+ User.filter{ true }.delete
79
101
  user = User.new
80
102
  user.sex = :female
81
103
  user.save
82
- user.sex.must_equal 'female'
104
+ expect(user.sex).must_equal 'female'
83
105
  end
84
106
 
85
107
  it 'loads value' do
86
- User.filter.delete
108
+ User.filter{ true }.delete
87
109
  User.create(:sex => :male)
88
110
  store_translations(:en, :enumerize => {:sex => {:male => 'Male'}}) do
89
111
  user = User.first
90
- user.sex.must_equal 'male'
91
- user.sex_text.must_equal 'Male'
112
+ expect(user.sex).must_equal 'male'
113
+ expect(user.sex_text).must_equal 'Male'
92
114
  end
93
115
  end
94
116
 
95
117
  it 'has default value' do
96
- User.new.role.must_equal 'user'
97
- User.new.values[:role].must_equal 'user'
118
+ expect(User.new.role).must_equal 'user'
119
+ expect(User.new.values[:role]).must_equal 'user'
98
120
  end
99
121
 
100
122
  it 'does not set default value for not selected attributes' do
101
- User.filter.delete
123
+ User.filter{ true }.delete
102
124
  User.create(:sex => :male)
103
125
 
104
126
  assert_equal [:id], User.select(:id).first.values.keys
105
127
  end
106
128
 
107
129
  it 'has default value with lambda' do
108
- User.new.lambda_role.must_equal 'admin'
109
- User.new.values[:lambda_role].must_equal 'admin'
130
+ expect(User.new.lambda_role).must_equal 'admin'
131
+ expect(User.new.values[:lambda_role]).must_equal 'admin'
110
132
  end
111
133
  it 'uses after_initialize callback to set default value' do
112
- User.filter.delete
134
+ User.filter{ true }.delete
113
135
  User.create(sex: 'male', lambda_role: nil)
114
136
 
115
137
  user = User.where(:sex => 'male').first
116
- user.lambda_role.must_equal 'admin'
138
+ expect(user.lambda_role).must_equal 'admin'
117
139
  end
118
140
 
119
141
  it 'uses default value from db column' do
120
- User.new.account_type.must_equal 'basic'
142
+ expect(User.new.account_type).must_equal 'basic'
121
143
  end
122
144
 
123
145
  it 'validates inclusion' do
124
146
  user = User.new
125
147
  user.role = 'wrong'
126
- user.wont_be :valid?
127
- user.errors[:role].must_include 'is not included in the list'
148
+ expect(user).wont_be :valid?
149
+ expect(user.errors[:role]).must_include 'is not included in the list'
128
150
  end
129
151
 
130
152
  it 'validates inclusion on mass assignment' do
@@ -135,41 +157,66 @@ module SequelTest
135
157
 
136
158
  it "uses persisted value for validation if it hasn't been set" do
137
159
  user = User.create :sex => :male
138
- User[user.id].read_attribute_for_validation(:sex).must_equal 'male'
160
+ expect(User[user.id].read_attribute_for_validation(:sex)).must_equal 'male'
139
161
  end
140
162
 
141
163
  it 'is valid with empty string assigned' do
142
164
  user = User.new
143
165
  user.role = ''
144
- user.must_be :valid?
166
+ expect(user).must_be :valid?
145
167
  end
146
168
 
147
169
  it 'stores nil when empty string assigned' do
148
170
  user = User.new
149
171
  user.role = ''
150
- user.values[:role].must_equal nil
172
+ expect(user.values[:role]).must_be_nil
173
+ end
174
+
175
+ it 'validates inclusion when :skip_validations = false' do
176
+ user = DoNotSkipValidationsUser.new
177
+ user.foo = 'wrong'
178
+ expect(user).wont_be :valid?
179
+ expect(user.errors[:foo]).must_include 'is not included in the list'
180
+ end
181
+
182
+ it 'does not validate inclusion when :skip_validations = true' do
183
+ user = SkipValidationsUser.new
184
+ user.foo = 'wrong'
185
+ expect(user).must_be :valid?
186
+ end
187
+
188
+ it 'supports :skip_validations option as lambda' do
189
+ user = SkipValidationsLambdaUser.new
190
+ user.foo = 'wrong'
191
+ expect(user).must_be :valid?
192
+ end
193
+
194
+ it 'supports :skip_validations option as lambda with a parameter' do
195
+ user = SkipValidationsLambdaWithParamUser.new
196
+ user.foo = 'wrong'
197
+ expect(user).must_be :valid?
151
198
  end
152
199
 
153
200
  it 'supports multiple attributes' do
154
201
  user = User.new
155
202
  user.interests ||= []
156
- user.interests.must_be_empty
203
+ expect(user.interests).must_be_empty
157
204
  user.interests << "music"
158
- user.interests.must_equal %w(music)
205
+ expect(user.interests).must_equal %w(music)
159
206
  user.save
160
207
 
161
208
  user = User[user.id]
162
- user.interests.must_be_instance_of Enumerize::Set
163
- user.interests.must_equal %w(music)
209
+ expect(user.interests).must_be_instance_of Enumerize::Set
210
+ expect(user.interests).must_equal %w(music)
164
211
  user.interests << "sports"
165
- user.interests.must_equal %w(music sports)
212
+ expect(user.interests).must_equal %w(music sports)
166
213
 
167
214
  user.interests = []
168
215
  interests = user.interests
169
216
  interests << "music"
170
- interests.must_equal %w(music)
217
+ expect(interests).must_equal %w(music)
171
218
  interests << "dancing"
172
- interests.must_equal %w(music dancing)
219
+ expect(interests).must_equal %w(music dancing)
173
220
  end
174
221
 
175
222
  it 'returns invalid multiple value for validation' do
@@ -177,50 +224,56 @@ module SequelTest
177
224
  user.interests << :music
178
225
  user.interests << :invalid
179
226
  values = user.read_attribute_for_validation(:interests)
180
- values.must_equal %w(music invalid)
227
+ expect(values).must_equal %w(music invalid)
181
228
  end
182
229
 
183
230
  it 'validates multiple attributes' do
184
231
  user = User.new
185
232
  user.interests << :invalid
186
- user.wont_be :valid?
233
+ expect(user).wont_be :valid?
187
234
 
188
235
  user.interests = Object.new
189
- user.wont_be :valid?
236
+ expect(user).wont_be :valid?
190
237
 
191
238
  user.interests = ['music', '']
192
- user.must_be :valid?
239
+ expect(user).must_be :valid?
193
240
  end
194
241
 
195
242
  it 'stores custom values for multiple attributes' do
196
- User.filter.delete
243
+ User.filter{ true }.delete
197
244
 
198
245
  klass = Class.new(User)
199
246
  klass.enumerize :interests, in: { music: 0, sports: 1, dancing: 2, programming: 3}, multiple: true
200
247
 
201
248
  user = klass.new
202
249
  user.interests << :music
203
- user.interests.must_equal %w(music)
250
+ expect(user.interests).must_equal %w(music)
204
251
  user.save
205
252
 
206
253
  user = klass[user.id]
207
- user.interests.must_equal %w(music)
254
+ expect(user.interests).must_equal %w(music)
208
255
  end
209
256
 
210
257
  it 'adds scope' do
211
- User.filter.delete
258
+ User.filter{ true }.delete
259
+
260
+ user_1 = User.create(sex: :female, skill: :noob, status: :active, role: :admin)
261
+ user_2 = User.create(sex: :female, skill: :casual, status: :blocked)
262
+ user_3 = User.create(sex: :male, skill: :pro)
212
263
 
213
- user_1 = User.create(status: :active, role: :admin)
214
- user_2 = User.create(status: :blocked)
264
+ expect(User.with_status(:active).to_a).must_equal [user_1]
265
+ expect(User.with_status(:blocked).to_a).must_equal [user_2]
266
+ expect(User.with_status(:active, :blocked).to_set).must_equal [user_1, user_2].to_set
215
267
 
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
268
+ expect(User.without_status(:active).to_a).must_equal [user_2]
269
+ expect(User.without_status(:active, :blocked).to_a).must_equal []
219
270
 
220
- User.without_status(:active).to_a.must_equal [user_2]
221
- User.without_status(:active, :blocked).to_a.must_equal []
271
+ expect(User.having_role(:admin).to_a).must_equal [user_1]
272
+ expect(User.male.to_a).must_equal [user_3]
273
+ expect(User.pro.to_a).must_equal [user_3]
222
274
 
223
- User.having_role(:admin).to_a.must_equal [user_1]
275
+ expect(User.not_male.to_set).must_equal [user_1, user_2].to_set
276
+ expect(User.not_pro.to_set).must_equal [user_1, user_2].to_set
224
277
  end
225
278
 
226
279
  it 'allows either key or value as valid' do
@@ -228,30 +281,30 @@ module SequelTest
228
281
  user_2 = User.new(status: 1)
229
282
  user_3 = User.new(status: '1')
230
283
 
231
- user_1.status.must_equal 'active'
232
- user_2.status.must_equal 'active'
233
- user_3.status.must_equal 'active'
284
+ expect(user_1.status).must_equal 'active'
285
+ expect(user_2.status).must_equal 'active'
286
+ expect(user_3.status).must_equal 'active'
234
287
 
235
- user_1.must_be :valid?
236
- user_2.must_be :valid?
237
- user_3.must_be :valid?
288
+ expect(user_1).must_be :valid?
289
+ expect(user_2).must_be :valid?
290
+ expect(user_3).must_be :valid?
238
291
  end
239
292
 
240
293
  it 'supports defining enumerized attributes on abstract class' do
241
- Document.filter.delete
294
+ Document.filter{ true }.delete
242
295
 
243
296
  document = Document.new
244
297
  document.visibility = :protected
245
- document.visibility.must_equal 'protected'
298
+ expect(document.visibility).must_equal 'protected'
246
299
  end
247
300
 
248
301
  it 'supports defining enumerized scopes on abstract class' do
249
- Document.filter.delete
302
+ Document.filter{ true }.delete
250
303
 
251
304
  document_1 = Document.create(visibility: :public)
252
305
  document_2 = Document.create(visibility: :private)
253
306
 
254
- Document.with_visibility(:public).to_a.must_equal [document_1]
307
+ expect(Document.with_visibility(:public).to_a).must_equal [document_1]
255
308
  end
256
309
 
257
310
  it 'validates uniqueness' do
@@ -260,13 +313,13 @@ module SequelTest
260
313
  user = UniqStatusUser.new
261
314
  user.sex = "male"
262
315
  user.status = :active
263
- user.valid?.must_equal false
316
+ expect(user.valid?).must_equal false
264
317
 
265
- user.errors[:status].wont_be :empty?
318
+ expect(user.errors[:status]).wont_be :empty?
266
319
  end
267
320
 
268
321
  it "doesn't update record" do
269
- Document.filter.delete
322
+ Document.filter{ true }.delete
270
323
 
271
324
  expected = Time.new(2010, 10, 10)
272
325
 
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
6
  describe Enumerize::Set do
5
- let(:klass) do
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
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
  require 'simple_form/version'
3
5
 
@@ -40,6 +42,12 @@ class SimpleFormSpec < MiniTest::Spec
40
42
  end
41
43
  end
42
44
 
45
+ class Registration < Struct.new(:sex)
46
+ extend Enumerize
47
+
48
+ enumerize :sex, in: [:male, :female]
49
+ end
50
+
43
51
  let(:user) { User.new }
44
52
  let(:post) { Post.new }
45
53
 
@@ -128,4 +136,21 @@ class SimpleFormSpec < MiniTest::Spec
128
136
 
129
137
  assert_select 'input.string'
130
138
  end
139
+
140
+ it 'renders select with enumerized values for non-ActiveModel object' do
141
+ concat(simple_form_for(Registration.new, as: 'registration', url: '/') do |f|
142
+ f.input(:sex)
143
+ end)
144
+
145
+ assert_select 'select option[value=male]'
146
+ assert_select 'select option[value=female]'
147
+ end
148
+
149
+ it 'does not affect forms without object' do
150
+ concat(simple_form_for('') do |f|
151
+ f.input(:name)
152
+ end)
153
+
154
+ assert_select 'input.string'
155
+ end
131
156
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class MockController
2
4
  attr_writer :action_name
3
5
 
@@ -22,4 +24,8 @@ class MockController
22
24
  end
23
25
 
24
26
  def hash_for_users_path(*); end
27
+
28
+ def polymorphic_mappings
29
+ {}
30
+ end
25
31
  end
@@ -0,0 +1,43 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'active_record'
4
+ require 'sequel'
5
+
6
+ module EnumerizeExtention
7
+ def self.included(base)
8
+ case
9
+ when base < ActiveRecord::Base
10
+ base.extend Enumerize
11
+ when base < Sequel::Model
12
+ base.plugin :enumerize
13
+ end
14
+ end
15
+ end
16
+
17
+ module SkipValidationsEnum
18
+ def self.included(base)
19
+ base.include EnumerizeExtention
20
+ base.enumerize :foo, :in => [:bar, :baz], :skip_validations => true
21
+ end
22
+ end
23
+
24
+ module DoNotSkipValidationsEnum
25
+ def self.included(base)
26
+ base.include EnumerizeExtention
27
+ base.enumerize :foo, :in => [:bar, :baz], :skip_validations => false
28
+ end
29
+ end
30
+
31
+ module SkipValidationsLambdaEnum
32
+ def self.included(base)
33
+ base.include EnumerizeExtention
34
+ base.enumerize :foo, :in => [:bar, :baz], :skip_validations => lambda { true }
35
+ end
36
+ end
37
+
38
+ module SkipValidationsLambdaWithParamEnum
39
+ def self.included(base)
40
+ base.include EnumerizeExtention
41
+ base.enumerize :foo, :in => [:bar, :baz], :skip_validations => lambda { |record| true }
42
+ end
43
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'active_support/concern'
2
4
  require 'active_support/testing/setup_and_teardown'
3
5
 
@@ -5,10 +7,21 @@ if defined?(ActionView::RoutingUrlFor)
5
7
  ActionView::RoutingUrlFor.send(:include, ActionDispatch::Routing::UrlFor)
6
8
  end
7
9
 
8
- module ViewTestHelper
10
+ module SetupAndTeardownHelper
9
11
  extend ActiveSupport::Concern
10
12
 
11
13
  include ActiveSupport::Testing::SetupAndTeardown
14
+
15
+ included do
16
+ include ActiveSupport::Callbacks
17
+ define_callbacks :setup, :teardown
18
+ end
19
+ end
20
+
21
+ module ViewTestHelper
22
+ extend ActiveSupport::Concern
23
+
24
+ include SetupAndTeardownHelper
12
25
  include ActionView::TestCase::Behavior
13
26
 
14
27
  included do
data/test/test_helper.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'minitest/autorun'
2
4
  require 'minitest/spec'
3
5
  require 'active_support/core_ext/kernel/reporting'