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.
- checksums.yaml +5 -5
- data/.github/workflows/ruby.yml +73 -0
- data/CHANGELOG.md +80 -3
- data/Gemfile +3 -3
- data/Gemfile.global +2 -9
- data/Gemfile.mongo_mapper +2 -2
- data/Gemfile.rails60 +6 -0
- data/Gemfile.rails61 +6 -0
- data/Gemfile.rails70 +9 -0
- data/Gemfile.railsmaster +5 -0
- data/README.md +209 -92
- data/Rakefile +2 -0
- data/lib/enumerize/activemodel.rb +47 -0
- data/lib/enumerize/activerecord.rb +79 -0
- data/lib/enumerize/attribute.rb +19 -11
- data/lib/enumerize/attribute_map.rb +2 -0
- data/lib/enumerize/base.rb +6 -6
- data/lib/enumerize/hooks/formtastic.rb +4 -1
- data/lib/enumerize/hooks/sequel_dataset.rb +2 -0
- data/lib/enumerize/hooks/simple_form.rb +4 -1
- data/lib/enumerize/hooks/uniqueness.rb +5 -1
- data/lib/enumerize/integrations/rails_admin.rb +3 -1
- data/lib/enumerize/integrations/rspec/matcher.rb +7 -2
- data/lib/enumerize/integrations/rspec.rb +2 -0
- data/lib/enumerize/module.rb +2 -0
- data/lib/enumerize/module_attributes.rb +2 -0
- data/lib/enumerize/mongoid.rb +16 -0
- data/lib/enumerize/predicatable.rb +3 -1
- data/lib/enumerize/predicates.rb +2 -0
- data/lib/enumerize/scope/activerecord.rb +16 -0
- data/lib/enumerize/scope/mongoid.rb +15 -0
- data/lib/enumerize/scope/sequel.rb +16 -0
- data/lib/enumerize/sequel.rb +9 -4
- data/lib/enumerize/set.rb +2 -0
- data/lib/enumerize/utils.rb +12 -0
- data/lib/enumerize/value.rb +14 -15
- data/lib/enumerize/version.rb +3 -1
- data/lib/enumerize.rb +9 -0
- data/lib/sequel/plugins/enumerize.rb +18 -0
- data/spec/enumerize/integrations/rspec/matcher_spec.rb +13 -10
- data/spec/spec_helper.rb +2 -0
- data/test/activemodel_test.rb +114 -0
- data/test/activerecord_test.rb +277 -79
- data/test/attribute_map_test.rb +9 -7
- data/test/attribute_test.rb +37 -30
- data/test/base_test.rb +66 -64
- data/test/formtastic_test.rb +25 -0
- data/test/module_attributes_test.rb +10 -8
- data/test/mongo_mapper_test.rb +19 -10
- data/test/mongoid_test.rb +51 -22
- data/test/multiple_test.rb +26 -18
- data/test/predicates_test.rb +30 -28
- data/test/rails_admin_test.rb +8 -6
- data/test/sequel_test.rb +111 -58
- data/test/set_test.rb +28 -26
- data/test/simple_form_test.rb +25 -0
- data/test/support/mock_controller.rb +6 -0
- data/test/support/shared_enums.rb +43 -0
- data/test/support/view_test_helper.rb +14 -1
- data/test/test_helper.rb +2 -0
- data/test/value_test.rb +51 -30
- metadata +14 -27
- data/.travis.yml +0 -18
- data/Gemfile.rails42 +0 -6
data/test/value_test.rb
CHANGED
@@ -1,46 +1,49 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'test_helper'
|
2
4
|
require 'yaml'
|
3
5
|
|
4
6
|
describe Enumerize::Value do
|
5
|
-
class
|
7
|
+
class Model
|
8
|
+
end
|
9
|
+
|
10
|
+
class Attr < Struct.new(:values, :name, :i18n_scopes, :klass)
|
6
11
|
end
|
7
12
|
|
8
|
-
let(:attr) { Attr.new([]) }
|
9
|
-
let(:val)
|
13
|
+
let(:attr) { Attr.new([], "attribute_name", [], Model) }
|
14
|
+
let(:val) { Enumerize::Value.new(attr, 'test_value', 1) }
|
10
15
|
|
11
16
|
it 'is a string' do
|
12
|
-
val.must_be_kind_of String
|
17
|
+
expect(val).must_be_kind_of String
|
13
18
|
end
|
14
19
|
|
15
20
|
describe 'equality' do
|
16
21
|
it 'is compared to string' do
|
17
|
-
val.must_be :==, 'test_value'
|
18
|
-
val.wont_be :==, 'not_value'
|
22
|
+
expect(val).must_be :==, 'test_value'
|
23
|
+
expect(val).wont_be :==, 'not_value'
|
19
24
|
end
|
20
25
|
|
21
26
|
it 'is compared to symbol' do
|
22
|
-
val.must_be :==, :test_value
|
23
|
-
val.wont_be :==, :not_value
|
27
|
+
expect(val).must_be :==, :test_value
|
28
|
+
expect(val).wont_be :==, :not_value
|
24
29
|
end
|
25
30
|
|
26
31
|
it 'is compared to integer' do
|
27
|
-
val.must_be :==, 1
|
28
|
-
val.wont_be :==, 2
|
32
|
+
expect(val).must_be :==, 1
|
33
|
+
expect(val).wont_be :==, 2
|
29
34
|
end
|
30
35
|
end
|
31
36
|
|
32
37
|
describe 'translation' do
|
33
|
-
let(:attr) { Struct.new(:values, :name, :i18n_scopes).new([], "attribute_name", []) }
|
34
|
-
|
35
38
|
it 'uses common translation' do
|
36
39
|
store_translations(:en, :enumerize => {:attribute_name => {:test_value => "Common translation"}}) do
|
37
|
-
val.text.must_be :==, "Common translation"
|
40
|
+
expect(val.text).must_be :==, "Common translation"
|
38
41
|
end
|
39
42
|
end
|
40
43
|
|
41
44
|
it 'uses default translation from the "default" section if its present' do
|
42
45
|
store_translations(:en, :enumerize => {:defaults => {:attribute_name => {:test_value => "Common translation"}}}) do
|
43
|
-
val.text.must_be :==, "Common translation"
|
46
|
+
expect(val.text).must_be :==, "Common translation"
|
44
47
|
end
|
45
48
|
end
|
46
49
|
|
@@ -48,7 +51,7 @@ describe Enumerize::Value do
|
|
48
51
|
attr.i18n_scopes = ["enumerize.model_name.attribute_name"]
|
49
52
|
|
50
53
|
store_translations(:en, :enumerize => {:model_name => {:attribute_name => {:test_value => "Model Specific translation"}}}) do
|
51
|
-
val.text.must_be :==, "Model Specific translation"
|
54
|
+
expect(val.text).must_be :==, "Model Specific translation"
|
52
55
|
end
|
53
56
|
end
|
54
57
|
|
@@ -56,13 +59,13 @@ describe Enumerize::Value do
|
|
56
59
|
attr.i18n_scopes = ["enumerize.model_name.attribute_name"]
|
57
60
|
|
58
61
|
store_translations(:en, :enumerize => {:attribute_name => {:test_value => "Common translation"}, :model_name => {:attribute_name => {:test_value => "Model Specific translation"}}}) do
|
59
|
-
val.text.must_be :==, "Model Specific translation"
|
62
|
+
expect(val.text).must_be :==, "Model Specific translation"
|
60
63
|
end
|
61
64
|
end
|
62
65
|
|
63
66
|
it 'uses simply humanized value when translation is undefined' do
|
64
67
|
store_translations(:en, :enumerize => {}) do
|
65
|
-
val.text.must_be :==, "Test value"
|
68
|
+
expect(val.text).must_be :==, "Test value"
|
66
69
|
end
|
67
70
|
end
|
68
71
|
|
@@ -70,7 +73,7 @@ describe Enumerize::Value do
|
|
70
73
|
attr.i18n_scopes = ["other.scope"]
|
71
74
|
|
72
75
|
store_translations(:en, :other => {:scope => {:test_value => "Scope specific translation"}}) do
|
73
|
-
val.text.must_be :==, "Scope specific translation"
|
76
|
+
expect(val.text).must_be :==, "Scope specific translation"
|
74
77
|
end
|
75
78
|
end
|
76
79
|
|
@@ -78,7 +81,7 @@ describe Enumerize::Value do
|
|
78
81
|
attr.i18n_scopes = ["nonexistent.scope", "other.scope"]
|
79
82
|
|
80
83
|
store_translations(:en, :other => {:scope => {:test_value => "Scope specific translation"}}) do
|
81
|
-
val.text.must_be :==, "Scope specific translation"
|
84
|
+
expect(val.text).must_be :==, "Scope specific translation"
|
82
85
|
end
|
83
86
|
end
|
84
87
|
end
|
@@ -89,36 +92,44 @@ describe Enumerize::Value do
|
|
89
92
|
end
|
90
93
|
|
91
94
|
it 'returns true if value equals method' do
|
92
|
-
val.test_value
|
95
|
+
expect(val.test_value?).must_equal true
|
93
96
|
end
|
94
97
|
|
95
98
|
it 'returns false if value does not equal method' do
|
96
|
-
val.other_value
|
99
|
+
expect(val.other_value?).must_equal false
|
97
100
|
end
|
98
101
|
|
99
102
|
it 'raises NoMethodError if there are no values like boolean method' do
|
100
|
-
proc {
|
103
|
+
expect(proc {
|
101
104
|
val.some_method?
|
102
|
-
}.must_raise NoMethodError
|
105
|
+
}).must_raise NoMethodError
|
103
106
|
end
|
104
107
|
|
105
108
|
it 'raises ArgumentError if arguments are passed' do
|
106
|
-
proc {
|
109
|
+
expect(proc {
|
107
110
|
val.other_value?('<3')
|
108
|
-
}.must_raise ArgumentError
|
111
|
+
}).must_raise ArgumentError
|
109
112
|
end
|
110
113
|
|
111
114
|
it 'responds to methods for existing values' do
|
112
|
-
val.must_respond_to :test_value?
|
113
|
-
val.must_respond_to :other_value?
|
115
|
+
expect(val).must_respond_to :test_value?
|
116
|
+
expect(val).must_respond_to :other_value?
|
114
117
|
end
|
115
118
|
|
116
119
|
it 'returns a method object' do
|
117
|
-
val.method(:test_value?).must_be_instance_of Method
|
120
|
+
expect(val.method(:test_value?)).must_be_instance_of Method
|
118
121
|
end
|
119
122
|
|
120
123
|
it "doesn't respond to a method for not existing value" do
|
121
|
-
val.wont_respond_to :some_method?
|
124
|
+
expect(val).wont_respond_to :some_method?
|
125
|
+
end
|
126
|
+
|
127
|
+
it "doesn't respond to methods is value was modified" do
|
128
|
+
modified_value = val.upcase
|
129
|
+
|
130
|
+
expect(modified_value.upcase).wont_respond_to :some_method?
|
131
|
+
expect(modified_value.upcase).wont_respond_to :test_value?
|
132
|
+
expect(modified_value.upcase).wont_respond_to :other_value?
|
122
133
|
end
|
123
134
|
end
|
124
135
|
|
@@ -131,7 +142,17 @@ describe Enumerize::Value do
|
|
131
142
|
|
132
143
|
it 'serializes with Marshal' do
|
133
144
|
dump_value = Marshal.dump(val)
|
134
|
-
Marshal.load(dump_value).must_equal 'test_value'
|
145
|
+
expect(Marshal.load(dump_value)).must_equal 'test_value'
|
146
|
+
end
|
147
|
+
end
|
148
|
+
|
149
|
+
describe 'initialize' do
|
150
|
+
it 'no output if undefined boolean method' do
|
151
|
+
assert_silent() { Enumerize::Value.new(attr, 'test_value') }
|
152
|
+
end
|
153
|
+
|
154
|
+
it 'error output if defined boolean method' do
|
155
|
+
assert_output(nil, /`empty\?` is defined/) { Enumerize::Value.new(attr, 'empty') }
|
135
156
|
end
|
136
157
|
end
|
137
158
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: enumerize
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0
|
4
|
+
version: 2.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sergey Nartimov
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-12-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -31,19 +31,23 @@ executables: []
|
|
31
31
|
extensions: []
|
32
32
|
extra_rdoc_files: []
|
33
33
|
files:
|
34
|
+
- ".github/workflows/ruby.yml"
|
34
35
|
- ".gitignore"
|
35
36
|
- ".rspec"
|
36
|
-
- ".travis.yml"
|
37
37
|
- CHANGELOG.md
|
38
38
|
- Gemfile
|
39
39
|
- Gemfile.global
|
40
40
|
- Gemfile.mongo_mapper
|
41
|
-
- Gemfile.
|
41
|
+
- Gemfile.rails60
|
42
|
+
- Gemfile.rails61
|
43
|
+
- Gemfile.rails70
|
44
|
+
- Gemfile.railsmaster
|
42
45
|
- MIT-LICENSE
|
43
46
|
- README.md
|
44
47
|
- Rakefile
|
45
48
|
- enumerize.gemspec
|
46
49
|
- lib/enumerize.rb
|
50
|
+
- lib/enumerize/activemodel.rb
|
47
51
|
- lib/enumerize/activerecord.rb
|
48
52
|
- lib/enumerize/attribute.rb
|
49
53
|
- lib/enumerize/attribute_map.rb
|
@@ -65,10 +69,13 @@ files:
|
|
65
69
|
- lib/enumerize/scope/sequel.rb
|
66
70
|
- lib/enumerize/sequel.rb
|
67
71
|
- lib/enumerize/set.rb
|
72
|
+
- lib/enumerize/utils.rb
|
68
73
|
- lib/enumerize/value.rb
|
69
74
|
- lib/enumerize/version.rb
|
75
|
+
- lib/sequel/plugins/enumerize.rb
|
70
76
|
- spec/enumerize/integrations/rspec/matcher_spec.rb
|
71
77
|
- spec/spec_helper.rb
|
78
|
+
- test/activemodel_test.rb
|
72
79
|
- test/activerecord_test.rb
|
73
80
|
- test/attribute_map_test.rb
|
74
81
|
- test/attribute_test.rb
|
@@ -84,6 +91,7 @@ files:
|
|
84
91
|
- test/set_test.rb
|
85
92
|
- test/simple_form_test.rb
|
86
93
|
- test/support/mock_controller.rb
|
94
|
+
- test/support/shared_enums.rb
|
87
95
|
- test/support/view_test_helper.rb
|
88
96
|
- test/test_helper.rb
|
89
97
|
- test/value_test.rb
|
@@ -106,29 +114,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
106
114
|
- !ruby/object:Gem::Version
|
107
115
|
version: '0'
|
108
116
|
requirements: []
|
109
|
-
|
110
|
-
rubygems_version: 2.5.1
|
117
|
+
rubygems_version: 3.0.9
|
111
118
|
signing_key:
|
112
119
|
specification_version: 4
|
113
120
|
summary: Enumerated attributes with I18n and ActiveRecord/Mongoid/MongoMapper support
|
114
|
-
test_files:
|
115
|
-
- spec/enumerize/integrations/rspec/matcher_spec.rb
|
116
|
-
- spec/spec_helper.rb
|
117
|
-
- test/activerecord_test.rb
|
118
|
-
- test/attribute_map_test.rb
|
119
|
-
- test/attribute_test.rb
|
120
|
-
- test/base_test.rb
|
121
|
-
- test/formtastic_test.rb
|
122
|
-
- test/module_attributes_test.rb
|
123
|
-
- test/mongo_mapper_test.rb
|
124
|
-
- test/mongoid_test.rb
|
125
|
-
- test/multiple_test.rb
|
126
|
-
- test/predicates_test.rb
|
127
|
-
- test/rails_admin_test.rb
|
128
|
-
- test/sequel_test.rb
|
129
|
-
- test/set_test.rb
|
130
|
-
- test/simple_form_test.rb
|
131
|
-
- test/support/mock_controller.rb
|
132
|
-
- test/support/view_test_helper.rb
|
133
|
-
- test/test_helper.rb
|
134
|
-
- test/value_test.rb
|
121
|
+
test_files: []
|
data/.travis.yml
DELETED
@@ -1,18 +0,0 @@
|
|
1
|
-
language: ruby
|
2
|
-
sudo: false
|
3
|
-
services:
|
4
|
-
- mongodb
|
5
|
-
gemfile:
|
6
|
-
- Gemfile
|
7
|
-
- Gemfile.rails42
|
8
|
-
- Gemfile.mongo_mapper
|
9
|
-
rvm:
|
10
|
-
- 2.2.5
|
11
|
-
- 2.3.1
|
12
|
-
- jruby-9.1.2.0
|
13
|
-
matrix:
|
14
|
-
allow_failures:
|
15
|
-
- gemfile: Gemfile
|
16
|
-
rvm: jruby-9.1.2.0
|
17
|
-
notifications:
|
18
|
-
email: false
|