enumerize 0.8.0 → 2.6.1
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.
- checksums.yaml +5 -5
- data/.github/workflows/ruby.yml +73 -0
- data/.gitignore +2 -0
- data/.rspec +2 -0
- data/CHANGELOG.md +210 -0
- data/Gemfile +4 -21
- data/Gemfile.global +12 -0
- data/Gemfile.mongo_mapper +6 -0
- data/Gemfile.rails60 +6 -0
- data/Gemfile.rails61 +6 -0
- data/Gemfile.rails70 +9 -0
- data/Gemfile.railsmaster +5 -0
- data/README.md +366 -73
- data/Rakefile +4 -4
- data/enumerize.gemspec +2 -1
- data/lib/enumerize/activemodel.rb +47 -0
- data/lib/enumerize/activerecord.rb +102 -27
- data/lib/enumerize/attribute.rb +59 -15
- data/lib/enumerize/attribute_map.rb +2 -0
- data/lib/enumerize/base.rb +32 -17
- data/lib/enumerize/hooks/formtastic.rb +7 -9
- data/lib/enumerize/hooks/sequel_dataset.rb +17 -0
- data/lib/enumerize/hooks/simple_form.rb +9 -12
- data/lib/enumerize/hooks/uniqueness.rb +7 -8
- data/lib/enumerize/integrations/rails_admin.rb +3 -1
- data/lib/enumerize/integrations/rspec/matcher.rb +112 -26
- data/lib/enumerize/integrations/rspec.rb +3 -0
- data/lib/enumerize/module.rb +2 -0
- data/lib/enumerize/module_attributes.rb +2 -0
- data/lib/enumerize/mongoid.rb +36 -0
- data/lib/enumerize/predicatable.rb +10 -17
- data/lib/enumerize/predicates.rb +5 -1
- data/lib/enumerize/scope/activerecord.rb +53 -0
- data/lib/enumerize/scope/mongoid.rb +50 -0
- data/lib/enumerize/scope/sequel.rb +56 -0
- data/lib/enumerize/sequel.rb +62 -0
- data/lib/enumerize/set.rb +20 -8
- data/lib/enumerize/utils.rb +12 -0
- data/lib/enumerize/value.rb +20 -20
- data/lib/enumerize/version.rb +3 -1
- data/lib/enumerize.rb +33 -2
- data/lib/sequel/plugins/enumerize.rb +18 -0
- data/spec/enumerize/integrations/rspec/matcher_spec.rb +261 -0
- data/spec/spec_helper.rb +30 -0
- data/test/activemodel_test.rb +114 -0
- data/test/activerecord_test.rb +434 -58
- data/test/attribute_map_test.rb +9 -7
- data/test/attribute_test.rb +52 -23
- data/test/base_test.rb +118 -66
- data/test/formtastic_test.rb +28 -12
- data/test/module_attributes_test.rb +10 -8
- data/test/mongo_mapper_test.rb +26 -11
- data/test/mongoid_test.rb +100 -15
- data/test/multiple_test.rb +41 -12
- data/test/predicates_test.rb +34 -26
- data/test/rails_admin_test.rb +8 -6
- data/test/sequel_test.rb +342 -0
- data/test/set_test.rb +42 -26
- data/test/simple_form_test.rb +25 -1
- data/test/support/mock_controller.rb +6 -0
- data/test/support/shared_enums.rb +43 -0
- data/test/support/view_test_helper.rb +18 -1
- data/test/test_helper.rb +33 -2
- data/test/value_test.rb +79 -28
- metadata +51 -12
- data/.travis.yml +0 -19
- data/Gemfile.rails4 +0 -23
- data/lib/enumerize/form_helper.rb +0 -23
- data/test/rspec_matcher_test.rb +0 -76
- data/test/rspec_spec.rb +0 -13
data/test/mongo_mapper_test.rb
CHANGED
@@ -1,22 +1,27 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'test_helper'
|
2
4
|
|
5
|
+
begin
|
6
|
+
|
3
7
|
silence_warnings do
|
4
8
|
require 'mongo_mapper'
|
5
9
|
end
|
6
10
|
|
7
|
-
MongoMapper.connection = Mongo::
|
8
|
-
MongoMapper.database = 'enumerize-test-suite-of-mongomapper'
|
11
|
+
MongoMapper.connection = Mongo::Client.new(['localhost:27017'], database: 'enumerize-test-suite-of-mongomapper')
|
9
12
|
|
10
|
-
|
13
|
+
class MongoMapperTest < MiniTest::Spec
|
11
14
|
class MongoMapperUser
|
12
15
|
include MongoMapper::Document
|
13
16
|
extend Enumerize
|
14
17
|
|
15
18
|
key :sex
|
16
19
|
key :role
|
20
|
+
key :foo
|
17
21
|
|
18
|
-
enumerize :sex,
|
22
|
+
enumerize :sex, :in => %w[male female]
|
19
23
|
enumerize :role, :in => %w[admin user], :default => 'user'
|
24
|
+
enumerize :foo, :in => %w[bar baz], :skip_validations => true
|
20
25
|
end
|
21
26
|
|
22
27
|
before { $VERBOSE = nil }
|
@@ -27,7 +32,7 @@ describe Enumerize do
|
|
27
32
|
it 'sets nil if invalid value is passed' do
|
28
33
|
user = model.new
|
29
34
|
user.sex = :invalid
|
30
|
-
user.sex.
|
35
|
+
expect(user.sex).must_be_nil
|
31
36
|
end
|
32
37
|
|
33
38
|
it 'saves value' do
|
@@ -35,7 +40,7 @@ describe Enumerize do
|
|
35
40
|
user = model.new
|
36
41
|
user.sex = :female
|
37
42
|
user.save!
|
38
|
-
user.sex.must_equal 'female'
|
43
|
+
expect(user.sex).must_equal 'female'
|
39
44
|
end
|
40
45
|
|
41
46
|
it 'loads value' do
|
@@ -43,19 +48,25 @@ describe Enumerize do
|
|
43
48
|
model.create!(:sex => :male)
|
44
49
|
store_translations(:en, :enumerize => {:sex => {:male => 'Male'}}) do
|
45
50
|
user = model.first
|
46
|
-
user.sex.must_equal 'male'
|
47
|
-
user.sex_text.must_equal 'Male'
|
51
|
+
expect(user.sex).must_equal 'male'
|
52
|
+
expect(user.sex_text).must_equal 'Male'
|
48
53
|
end
|
49
54
|
end
|
50
55
|
|
51
56
|
it 'has default value' do
|
52
|
-
model.new.role.must_equal 'user'
|
57
|
+
expect(model.new.role).must_equal 'user'
|
53
58
|
end
|
54
59
|
|
55
60
|
it 'validates inclusion' do
|
56
61
|
user = model.new
|
57
62
|
user.role = 'wrong'
|
58
|
-
user.wont_be :valid?
|
63
|
+
expect(user).wont_be :valid?
|
64
|
+
end
|
65
|
+
|
66
|
+
it 'does not validate inclusion when :skip_validations option passed' do
|
67
|
+
user = model.new
|
68
|
+
user.foo = 'wrong'
|
69
|
+
expect(user).must_be :valid?
|
59
70
|
end
|
60
71
|
|
61
72
|
it 'assigns value on loaded record' do
|
@@ -63,6 +74,10 @@ describe Enumerize do
|
|
63
74
|
model.create!(:sex => :male)
|
64
75
|
user = model.first
|
65
76
|
user.sex = :female
|
66
|
-
user.sex.must_equal 'female'
|
77
|
+
expect(user.sex).must_equal 'female'
|
67
78
|
end
|
68
79
|
end
|
80
|
+
|
81
|
+
rescue LoadError
|
82
|
+
# Skip
|
83
|
+
end
|
data/test/mongoid_test.rb
CHANGED
@@ -1,25 +1,35 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'test_helper'
|
2
4
|
|
5
|
+
begin
|
6
|
+
|
3
7
|
silence_warnings do
|
4
8
|
require 'mongoid'
|
5
9
|
end
|
6
10
|
|
7
11
|
Mongoid.configure do |config|
|
8
|
-
config.
|
9
|
-
config.
|
10
|
-
config.include_root_in_json = true
|
12
|
+
config.connect_to('enumerize-test-suite')
|
13
|
+
config.options = { use_utc: true, include_root_in_json: true }
|
11
14
|
end
|
12
15
|
|
13
|
-
|
16
|
+
class MongoidTest < MiniTest::Spec
|
14
17
|
class MongoidUser
|
15
18
|
include Mongoid::Document
|
16
19
|
extend Enumerize
|
17
20
|
|
18
21
|
field :sex
|
19
22
|
field :role
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
+
field :foo
|
24
|
+
field :skill
|
25
|
+
|
26
|
+
enumerize :sex, :in => %w[male female], scope: true
|
27
|
+
enumerize :status, :in => %w[notice warning error], scope: true
|
28
|
+
enumerize :role, :in => %w[admin user], :default => 'user', scope: :having_role
|
29
|
+
enumerize :mult, :in => %w[one two three four], :multiple => true
|
30
|
+
enumerize :foo, :in => %w[bar baz], :skip_validations => true
|
31
|
+
enumerize :skill, :in => { noob: 0, casual: 1, pro: 2 }, scope: :shallow
|
32
|
+
enumerize :account_type, :in => %w[basic premium], scope: :shallow
|
23
33
|
end
|
24
34
|
|
25
35
|
before { $VERBOSE = nil }
|
@@ -30,7 +40,7 @@ describe Enumerize do
|
|
30
40
|
it 'sets nil if invalid value is passed' do
|
31
41
|
user = model.new
|
32
42
|
user.sex = :invalid
|
33
|
-
user.sex.
|
43
|
+
expect(user.sex).must_be_nil
|
34
44
|
end
|
35
45
|
|
36
46
|
it 'saves value' do
|
@@ -38,7 +48,7 @@ describe Enumerize do
|
|
38
48
|
user = model.new
|
39
49
|
user.sex = :female
|
40
50
|
user.save!
|
41
|
-
user.sex.must_equal 'female'
|
51
|
+
expect(user.sex).must_equal 'female'
|
42
52
|
end
|
43
53
|
|
44
54
|
it 'loads value' do
|
@@ -46,19 +56,48 @@ describe Enumerize do
|
|
46
56
|
model.create!(:sex => :male)
|
47
57
|
store_translations(:en, :enumerize => {:sex => {:male => 'Male'}}) do
|
48
58
|
user = model.first
|
49
|
-
user.sex.must_equal 'male'
|
50
|
-
user.sex_text.must_equal 'Male'
|
59
|
+
expect(user.sex).must_equal 'male'
|
60
|
+
expect(user.sex_text).must_equal 'Male'
|
51
61
|
end
|
52
62
|
end
|
53
63
|
|
54
64
|
it 'has default value' do
|
55
|
-
model.new.role.must_equal 'user'
|
65
|
+
expect(model.new.role).must_equal 'user'
|
66
|
+
end
|
67
|
+
|
68
|
+
it 'uses after_initialize callback to set default value' do
|
69
|
+
model.delete_all
|
70
|
+
model.create!(sex: 'male', role: nil)
|
71
|
+
|
72
|
+
user = model.where(sex: 'male').first
|
73
|
+
expect(user.role).must_equal 'user'
|
74
|
+
end
|
75
|
+
|
76
|
+
it 'does not set default value for not selected attributes' do
|
77
|
+
model.delete_all
|
78
|
+
model.create!(sex: :male)
|
79
|
+
|
80
|
+
assert_equal ['_id'], model.only(:id).first.attributes.keys
|
56
81
|
end
|
57
82
|
|
58
83
|
it 'validates inclusion' do
|
59
84
|
user = model.new
|
60
85
|
user.role = 'wrong'
|
61
|
-
user.wont_be :valid?
|
86
|
+
expect(user).wont_be :valid?
|
87
|
+
end
|
88
|
+
|
89
|
+
it 'does not validate inclusion when :skip_validations option passed' do
|
90
|
+
user = model.new
|
91
|
+
user.foo = 'wrong'
|
92
|
+
expect(user).must_be :valid?
|
93
|
+
end
|
94
|
+
|
95
|
+
it 'sets value to enumerized field from db when record is reloaded' do
|
96
|
+
user = model.create!(mult: [:one])
|
97
|
+
model.find(user.id).update(mult: %i[two three])
|
98
|
+
expect(user.mult).must_equal %w[one]
|
99
|
+
user.reload
|
100
|
+
expect(user.mult).must_equal %w[two three]
|
62
101
|
end
|
63
102
|
|
64
103
|
it 'assigns value on loaded record' do
|
@@ -66,7 +105,7 @@ describe Enumerize do
|
|
66
105
|
model.create!(:sex => :male)
|
67
106
|
user = model.first
|
68
107
|
user.sex = :female
|
69
|
-
user.sex.must_equal 'female'
|
108
|
+
expect(user.sex).must_equal 'female'
|
70
109
|
end
|
71
110
|
|
72
111
|
it 'loads multiple properly' do
|
@@ -74,6 +113,52 @@ describe Enumerize do
|
|
74
113
|
|
75
114
|
model.create!(:mult => ['one', 'two'])
|
76
115
|
user = model.first
|
77
|
-
user.mult.to_a.must_equal ['one', 'two']
|
116
|
+
expect(user.mult.to_a).must_equal ['one', 'two']
|
117
|
+
end
|
118
|
+
|
119
|
+
it 'adds scope' do
|
120
|
+
model.delete_all
|
121
|
+
|
122
|
+
user_1 = model.create!(sex: :male, skill: :noob, role: :admin, account_type: :basic)
|
123
|
+
user_2 = model.create!(sex: :female, skill: :noob, role: :user, account_type: :basic)
|
124
|
+
user_3 = model.create!(skill: :pro, account_type: :premium)
|
125
|
+
|
126
|
+
expect(model.with_sex(:male).to_a).must_equal [user_1]
|
127
|
+
expect(model.with_sex(:female).to_a).must_equal [user_2]
|
128
|
+
expect(model.with_sex(:male, :female).to_set).must_equal [user_1, user_2].to_set
|
129
|
+
|
130
|
+
expect(model.without_sex(:male).to_set).must_equal [user_2, user_3].to_set
|
131
|
+
expect(model.without_sex(:female).to_set).must_equal [user_1, user_3].to_set
|
132
|
+
expect(model.without_sex(:male, :female).to_a).must_equal [user_3]
|
133
|
+
|
134
|
+
expect(model.having_role(:admin).to_a).must_equal [user_1]
|
135
|
+
expect(model.having_role(:user).to_a).must_equal [user_2, user_3]
|
136
|
+
|
137
|
+
expect(model.pro.to_a).must_equal [user_3]
|
138
|
+
expect(model.premium.to_a).must_equal [user_3]
|
139
|
+
|
140
|
+
expect(model.not_pro.to_set).must_equal [user_1, user_2].to_set
|
141
|
+
expect(model.not_premium.to_set).must_equal [user_1, user_2].to_set
|
142
|
+
end
|
143
|
+
|
144
|
+
it 'chains scopes' do
|
145
|
+
model.delete_all
|
146
|
+
|
147
|
+
user_1 = model.create!(status: :notice)
|
148
|
+
user_2 = model.create!(status: :warning)
|
149
|
+
user_3 = model.create!(status: :error)
|
150
|
+
|
151
|
+
expect(model.with_status(:notice, :warning).with_status(:notice, :error).to_a).must_equal [user_1]
|
152
|
+
expect(model.with_status(:notice, :warning).union.with_status(:notice, :error).to_a).must_equal [user_1, user_2, user_3]
|
78
153
|
end
|
154
|
+
|
155
|
+
it 'ignores not enumerized values that passed to the scope method' do
|
156
|
+
model.delete_all
|
157
|
+
|
158
|
+
expect(model.with_sex(:foo)).must_equal []
|
159
|
+
end
|
160
|
+
end
|
161
|
+
|
162
|
+
rescue LoadError
|
163
|
+
# Skip
|
79
164
|
end
|
data/test/multiple_test.rb
CHANGED
@@ -1,36 +1,65 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'test_helper'
|
2
4
|
|
3
|
-
|
4
|
-
let(:
|
5
|
+
class MultipleTest < MiniTest::Spec
|
6
|
+
let(:kklass) do
|
5
7
|
Class.new do
|
6
8
|
extend Enumerize
|
7
9
|
end
|
8
10
|
end
|
9
11
|
|
10
12
|
let(:subklass) do
|
11
|
-
Class.new(
|
13
|
+
Class.new(kklass)
|
12
14
|
end
|
13
15
|
|
14
|
-
let(:object) {
|
16
|
+
let(:object) { kklass.new }
|
15
17
|
|
16
18
|
it 'returns [] when not set' do
|
17
|
-
|
18
|
-
object.foos.must_equal []
|
19
|
+
kklass.enumerize :foos, in: %w(a b), multiple: true
|
20
|
+
expect(object.foos).must_equal []
|
19
21
|
end
|
20
22
|
|
21
23
|
it 'returns setted array' do
|
22
|
-
|
24
|
+
kklass.enumerize :foos, in: %w(a b c), multiple: true
|
23
25
|
object.foos = %w(a c)
|
24
|
-
object.foos.must_equal %w(a c)
|
26
|
+
expect(object.foos).must_equal %w(a c)
|
27
|
+
end
|
28
|
+
|
29
|
+
it 'sets default value as single value' do
|
30
|
+
kklass.enumerize :foos, in: %w(a b c), default: 'b', multiple: true
|
31
|
+
expect(object.foos).must_equal %w(b)
|
32
|
+
end
|
33
|
+
|
34
|
+
it 'sets default value as array of one element' do
|
35
|
+
kklass.enumerize :foos, in: %w(a b c), default: %w(b), multiple: true
|
36
|
+
expect(object.foos).must_equal %w(b)
|
37
|
+
end
|
38
|
+
|
39
|
+
it 'sets default value as array of several elements' do
|
40
|
+
kklass.enumerize :foos, in: %w(a b c), default: %w(b c), multiple: true
|
41
|
+
expect(object.foos).must_equal %w(b c)
|
25
42
|
end
|
26
43
|
|
27
44
|
it "doesn't define _text method" do
|
28
|
-
|
29
|
-
object.wont_respond_to :foos_text
|
45
|
+
kklass.enumerize :foos, in: %w(a b c), multiple: true
|
46
|
+
expect(object).wont_respond_to :foos_text
|
30
47
|
end
|
31
48
|
|
32
49
|
it "doesn't define _value method" do
|
33
|
-
|
34
|
-
object.wont_respond_to :foos_value
|
50
|
+
kklass.enumerize :foos, in: %w(a b c), multiple: true
|
51
|
+
expect(object).wont_respond_to :foos_value
|
52
|
+
end
|
53
|
+
|
54
|
+
it "cannot define multiple with scope" do
|
55
|
+
assert_raises ArgumentError do
|
56
|
+
kklass.enumerize :foos, in: %w(a b c), multiple: true, scope: true
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
it 'assign a name with the first letter capitalized' do
|
61
|
+
kklass.enumerize :Foos, in: %w(a b c), multiple: true
|
62
|
+
object.Foos = %w(a c)
|
63
|
+
expect(object.Foos).must_equal %w(a c)
|
35
64
|
end
|
36
65
|
end
|
data/test/predicates_test.rb
CHANGED
@@ -1,57 +1,65 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'test_helper'
|
2
4
|
|
3
|
-
|
4
|
-
let(:
|
5
|
+
class PredicatesTest < MiniTest::Spec
|
6
|
+
let(:kklass) do
|
5
7
|
Class.new do
|
6
8
|
extend Enumerize
|
7
9
|
end
|
8
10
|
end
|
9
11
|
|
10
|
-
let(:object) {
|
12
|
+
let(:object) { kklass.new }
|
11
13
|
|
12
14
|
it 'creates predicate methods' do
|
13
|
-
|
14
|
-
object.must_respond_to :a?
|
15
|
-
object.must_respond_to :b?
|
15
|
+
kklass.enumerize(:foo, in: %w(a b), predicates: true)
|
16
|
+
expect(object).must_respond_to :a?
|
17
|
+
expect(object).must_respond_to :b?
|
18
|
+
end
|
19
|
+
|
20
|
+
it 'creates predicate methods when enumerized values have dash in it' do
|
21
|
+
kklass.enumerize(:foo, in: %w(foo-bar bar-foo), predicates: true)
|
22
|
+
expect(object).must_respond_to :foo_bar?
|
23
|
+
expect(object).must_respond_to :bar_foo?
|
16
24
|
end
|
17
25
|
|
18
26
|
it 'creates predicate methods on multiple attribute' do
|
19
|
-
|
20
|
-
object.must_respond_to :a?
|
21
|
-
object.must_respond_to :b?
|
27
|
+
kklass.enumerize(:foo, in: %w(a b), predicates: true, multiple: true)
|
28
|
+
expect(object).must_respond_to :a?
|
29
|
+
expect(object).must_respond_to :b?
|
22
30
|
end
|
23
31
|
|
24
32
|
it 'checks values' do
|
25
|
-
|
33
|
+
kklass.enumerize(:foo, in: %w(a b), predicates: true)
|
26
34
|
object.foo = 'a'
|
27
|
-
object.a
|
28
|
-
object.b
|
35
|
+
expect(object.a?).must_equal true
|
36
|
+
expect(object.b?).must_equal false
|
29
37
|
end
|
30
38
|
|
31
39
|
it 'checks values on multiple attribute' do
|
32
|
-
|
40
|
+
kklass.enumerize(:foo, in: %w(a b), predicates: true, multiple: true)
|
33
41
|
object.foo << :a
|
34
|
-
object.a
|
35
|
-
object.b
|
42
|
+
expect(object.a?).must_equal true
|
43
|
+
expect(object.b?).must_equal false
|
36
44
|
end
|
37
45
|
|
38
46
|
it 'prefixes methods' do
|
39
|
-
|
40
|
-
object.wont_respond_to :a?
|
41
|
-
object.wont_respond_to :b?
|
42
|
-
object.must_respond_to :bar_a?
|
43
|
-
object.must_respond_to :bar_b?
|
47
|
+
kklass.enumerize(:foo, in: %w(a b), predicates: { prefix: 'bar' })
|
48
|
+
expect(object).wont_respond_to :a?
|
49
|
+
expect(object).wont_respond_to :b?
|
50
|
+
expect(object).must_respond_to :bar_a?
|
51
|
+
expect(object).must_respond_to :bar_b?
|
44
52
|
end
|
45
53
|
|
46
54
|
it 'accepts only option' do
|
47
|
-
|
48
|
-
object.must_respond_to :a?
|
49
|
-
object.wont_respond_to :b?
|
55
|
+
kklass.enumerize(:foo, in: %w(a b), predicates: { only: :a })
|
56
|
+
expect(object).must_respond_to :a?
|
57
|
+
expect(object).wont_respond_to :b?
|
50
58
|
end
|
51
59
|
|
52
60
|
it 'accepts except option' do
|
53
|
-
|
54
|
-
object.wont_respond_to :a?
|
55
|
-
object.must_respond_to :b?
|
61
|
+
kklass.enumerize(:foo, in: %w(a b), predicates: { except: :a })
|
62
|
+
expect(object).wont_respond_to :a?
|
63
|
+
expect(object).must_respond_to :b?
|
56
64
|
end
|
57
65
|
end
|
data/test/rails_admin_test.rb
CHANGED
@@ -1,25 +1,27 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'test_helper'
|
2
4
|
|
3
5
|
class RailsAdminSpec < MiniTest::Spec
|
4
|
-
let(:
|
6
|
+
let(:kklass) do
|
5
7
|
Class.new do
|
6
8
|
extend Enumerize
|
7
9
|
end
|
8
10
|
end
|
9
11
|
|
10
|
-
let(:object) {
|
12
|
+
let(:object) { kklass.new }
|
11
13
|
|
12
14
|
it 'defines enum method' do
|
13
15
|
store_translations(:en, :enumerize => {:foo => {:a => 'a text', :b => 'b text'}}) do
|
14
|
-
|
15
|
-
object.foo_enum.must_equal [['a text', 'a'], ['b text', 'b']]
|
16
|
+
kklass.enumerize(:foo, in: [:a, :b])
|
17
|
+
expect(object.foo_enum).must_equal [['a text', 'a'], ['b text', 'b']]
|
16
18
|
end
|
17
19
|
end
|
18
20
|
|
19
21
|
it 'defines enum properly for custom values enumerations' do
|
20
22
|
store_translations(:en, :enumerize => {:foo => {:a => 'a text', :b => 'b text'}}) do
|
21
|
-
|
22
|
-
object.foo_enum.must_equal [['a text',
|
23
|
+
kklass.enumerize(:foo, in: {:a => 1, :b => 2})
|
24
|
+
expect(object.foo_enum).must_equal [['a text', 'a'], ['b text', 'b']]
|
23
25
|
end
|
24
26
|
end
|
25
27
|
end
|