enumerize 2.1.0 → 2.1.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 +4 -4
- data/.travis.yml +16 -6
- data/CHANGELOG.md +11 -0
- data/Gemfile +3 -2
- data/Gemfile.global +1 -0
- data/Gemfile.mongo_mapper +3 -2
- data/Gemfile.rails42 +3 -2
- data/Gemfile.rails51 +7 -0
- data/lib/enumerize/activerecord.rb +12 -0
- data/lib/enumerize/version.rb +3 -1
- data/test/activerecord_test.rb +45 -6
- data/test/base_test.rb +5 -5
- data/test/mongo_mapper_test.rb +1 -1
- data/test/mongoid_test.rb +1 -1
- data/test/sequel_test.rb +2 -2
- data/test/support/mock_controller.rb +4 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fcc222d35f7bc7e96f344ebac473c10324a42bd9
|
4
|
+
data.tar.gz: 4509894cf1723e3df5403c8c93108c316b1ffbb1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b1237ba9ede67eefc02b235ec0b74ff2bc6774f89479c22e0e5733dba911b487449bf24e49e82a3be2623cfb432198d6cedf59425f26fab11e36c8c11c073769
|
7
|
+
data.tar.gz: 98234b48c034f98cdd43e2379b8ad277dbad8d68088b3cabdfffe71767584028be87ead75629db81fc036862743e16bb5554c680f75d3aa22e814fada961c113
|
data/.travis.yml
CHANGED
@@ -1,22 +1,32 @@
|
|
1
1
|
language: ruby
|
2
2
|
sudo: false
|
3
3
|
services:
|
4
|
+
- postgresql
|
4
5
|
- mongodb
|
5
6
|
gemfile:
|
6
7
|
- Gemfile
|
7
8
|
- Gemfile.rails42
|
9
|
+
- Gemfile.rails51
|
8
10
|
- Gemfile.mongo_mapper
|
9
11
|
rvm:
|
10
|
-
- 2.2.
|
12
|
+
- 2.2.7
|
11
13
|
- 2.3.3
|
12
|
-
-
|
13
|
-
- jruby-9.1.
|
14
|
+
- 2.4.1
|
15
|
+
- jruby-9.1.8.0
|
16
|
+
env:
|
17
|
+
global:
|
18
|
+
- DB_USER=postgres
|
19
|
+
- DB_PASS=
|
20
|
+
matrix:
|
21
|
+
- DB=sqlite3
|
22
|
+
- DB=postgresql
|
14
23
|
matrix:
|
24
|
+
fast_finish: true
|
15
25
|
allow_failures:
|
16
|
-
-
|
17
|
-
|
26
|
+
- rvm: jruby-9.1.8.0
|
27
|
+
exclude:
|
18
28
|
- gemfile: Gemfile.mongo_mapper
|
19
|
-
|
29
|
+
env: DB=postgresql
|
20
30
|
branches:
|
21
31
|
only:
|
22
32
|
- master
|
data/CHANGELOG.md
CHANGED
@@ -4,6 +4,17 @@
|
|
4
4
|
|
5
5
|
### bug fix
|
6
6
|
|
7
|
+
## 2.1.1 (May 1, 2017)
|
8
|
+
|
9
|
+
### enhancements
|
10
|
+
|
11
|
+
* Run tests with multiple DBs (SQLite and PostgreSQL). (by [tkawa](https://github.com/tkawa))
|
12
|
+
|
13
|
+
### bug fix
|
14
|
+
|
15
|
+
* Support deserialize and Rails 4.2 methods in the custom AR::Type class. (by [@lest](https://github.com/lest))
|
16
|
+
* Support dumping custom AR type to JSON. (by [@lest](https://github.com/lest))
|
17
|
+
|
7
18
|
## 2.1.0 (March 31, 2017)
|
8
19
|
|
9
20
|
### enhancements
|
data/Gemfile
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
eval_gemfile('Gemfile.global')
|
2
2
|
|
3
3
|
gem 'minitest', '~> 5.8'
|
4
|
-
gem 'rails', '5.0.
|
4
|
+
gem 'rails', '5.0.2', require: false
|
5
5
|
gem 'activerecord-jdbcsqlite3-adapter', github: 'jruby/activerecord-jdbc-adapter', branch: 'rails-5', platform: :jruby
|
6
|
-
gem '
|
6
|
+
gem 'activerecord-jdbcpostgresql-adapter', github: 'jruby/activerecord-jdbc-adapter', branch: 'rails-5', platform: :jruby
|
7
|
+
gem 'mongoid'
|
data/Gemfile.global
CHANGED
data/Gemfile.mongo_mapper
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
eval_gemfile('Gemfile.global')
|
2
2
|
|
3
3
|
gem 'minitest', '~> 5.8'
|
4
|
-
gem 'rails', '4.2.
|
5
|
-
gem 'activerecord-jdbcsqlite3-adapter', :
|
4
|
+
gem 'rails', '4.2.8', :require => false
|
5
|
+
gem 'activerecord-jdbcsqlite3-adapter', platform: :jruby
|
6
|
+
gem 'activerecord-jdbcpostgresql-adapter', platform: :jruby
|
6
7
|
gem 'mongo_mapper'
|
data/Gemfile.rails42
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
eval_gemfile('Gemfile.global')
|
2
2
|
|
3
3
|
gem 'minitest', '~> 5.8'
|
4
|
-
gem 'rails', '4.2.
|
5
|
-
gem 'activerecord-jdbcsqlite3-adapter', :
|
4
|
+
gem 'rails', '4.2.8', :require => false
|
5
|
+
gem 'activerecord-jdbcsqlite3-adapter', platform: :jruby
|
6
|
+
gem 'activerecord-jdbcpostgresql-adapter', platform: :jruby
|
6
7
|
gem 'mongoid', '~> 5.0'
|
data/Gemfile.rails51
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
eval_gemfile('Gemfile.global')
|
2
|
+
|
3
|
+
gem 'minitest', '~> 5.8'
|
4
|
+
gem 'rails', '5.1.0.rc1', require: false
|
5
|
+
gem 'activerecord-jdbcsqlite3-adapter', github: 'jruby/activerecord-jdbc-adapter', branch: 'rails-5', platform: :jruby
|
6
|
+
gem 'activerecord-jdbcpostgresql-adapter', github: 'jruby/activerecord-jdbc-adapter', branch: 'rails-5', platform: :jruby
|
7
|
+
gem 'mongoid', github: 'mongodb/mongoid'
|
@@ -78,6 +78,18 @@ module Enumerize
|
|
78
78
|
v = @attr.find_value(value)
|
79
79
|
v && v.value
|
80
80
|
end
|
81
|
+
|
82
|
+
alias type_cast_for_database serialize
|
83
|
+
|
84
|
+
def deserialize(value)
|
85
|
+
@attr.find_value(value)
|
86
|
+
end
|
87
|
+
|
88
|
+
alias type_cast_from_database deserialize
|
89
|
+
|
90
|
+
def as_json(options = nil)
|
91
|
+
{attr: @attr.name, subtype: @subtype}.as_json(options)
|
92
|
+
end
|
81
93
|
end
|
82
94
|
end
|
83
95
|
end
|
data/lib/enumerize/version.rb
CHANGED
data/test/activerecord_test.rb
CHANGED
@@ -1,11 +1,39 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'test_helper'
|
2
4
|
require 'active_record'
|
3
5
|
require 'logger'
|
4
6
|
|
7
|
+
db = (ENV['DB'] || 'sqlite3').to_sym
|
8
|
+
|
5
9
|
silence_warnings do
|
6
10
|
ActiveRecord::Migration.verbose = false
|
7
11
|
ActiveRecord::Base.logger = Logger.new(nil)
|
8
|
-
ActiveRecord::Base.
|
12
|
+
ActiveRecord::Base.configurations = {
|
13
|
+
'sqlite3' => {
|
14
|
+
'adapter' => 'sqlite3',
|
15
|
+
'database' => ':memory:'
|
16
|
+
},
|
17
|
+
'postgresql' => {
|
18
|
+
'adapter' => 'postgresql',
|
19
|
+
'username' => ENV['DB_USER'],
|
20
|
+
'password' => ENV['DB_PASSD'],
|
21
|
+
'database' => 'enumerize_test'
|
22
|
+
},
|
23
|
+
'postgresql_master' => {
|
24
|
+
'adapter' => 'postgresql',
|
25
|
+
'username' => ENV['DB_USER'],
|
26
|
+
'password' => ENV['DB_PASS'],
|
27
|
+
'database' => 'template1',
|
28
|
+
'schema_search_path' => 'public'
|
29
|
+
}
|
30
|
+
}
|
31
|
+
if db == :postgresql
|
32
|
+
ActiveRecord::Base.establish_connection(:postgresql_master)
|
33
|
+
ActiveRecord::Base.connection.recreate_database('enumerize_test')
|
34
|
+
end
|
35
|
+
|
36
|
+
ActiveRecord::Base.establish_connection(db)
|
9
37
|
end
|
10
38
|
|
11
39
|
ActiveRecord::Base.connection.instance_eval do
|
@@ -79,7 +107,7 @@ describe Enumerize::ActiveRecordSupport do
|
|
79
107
|
it 'sets nil if invalid value is passed' do
|
80
108
|
user = User.new
|
81
109
|
user.sex = :invalid
|
82
|
-
user.sex.
|
110
|
+
user.sex.must_be_nil
|
83
111
|
end
|
84
112
|
|
85
113
|
it 'saves value' do
|
@@ -181,7 +209,7 @@ describe Enumerize::ActiveRecordSupport do
|
|
181
209
|
it 'stores nil when empty string assigned' do
|
182
210
|
user = User.new
|
183
211
|
user.role = ''
|
184
|
-
user.read_attribute(:role).
|
212
|
+
user.read_attribute(:role).must_be_nil
|
185
213
|
end
|
186
214
|
|
187
215
|
it 'supports multiple attributes' do
|
@@ -379,6 +407,14 @@ describe Enumerize::ActiveRecordSupport do
|
|
379
407
|
assert_equal [1, 2], YAML.load(user.changes.to_yaml)[:status]
|
380
408
|
end
|
381
409
|
|
410
|
+
it 'does not change by the practical same value' do
|
411
|
+
user = User.create!(status: 'active')
|
412
|
+
user.reload
|
413
|
+
user.status = 'active'
|
414
|
+
|
415
|
+
user.changes.must_be_empty
|
416
|
+
end
|
417
|
+
|
382
418
|
it 'allows using update_all' do
|
383
419
|
User.delete_all
|
384
420
|
|
@@ -467,15 +503,18 @@ describe Enumerize::ActiveRecordSupport do
|
|
467
503
|
|
468
504
|
User.update_all(status: :foo)
|
469
505
|
user.reload
|
470
|
-
user.status.
|
506
|
+
user.status.must_be_nil
|
471
507
|
end
|
472
508
|
|
473
509
|
it 'supports AR types serialization' do
|
474
|
-
User.delete_all
|
475
|
-
|
476
510
|
type = User.type_for_attribute('status')
|
477
511
|
type.must_be_instance_of Enumerize::ActiveRecordSupport::Type
|
478
512
|
serialized = type.serialize('blocked')
|
479
513
|
serialized.must_equal 2
|
480
514
|
end
|
515
|
+
|
516
|
+
it 'has AR type itself JSON serializable' do
|
517
|
+
type = User.type_for_attribute('status')
|
518
|
+
type.as_json['attr'].must_equal 'status'
|
519
|
+
end
|
481
520
|
end
|
data/test/base_test.rb
CHANGED
@@ -15,7 +15,7 @@ describe Enumerize::Base do
|
|
15
15
|
|
16
16
|
it 'returns nil when not set' do
|
17
17
|
klass.enumerize(:foo, :in => [:a, :b])
|
18
|
-
object.foo.
|
18
|
+
object.foo.must_be_nil
|
19
19
|
end
|
20
20
|
|
21
21
|
it 'returns value that was set' do
|
@@ -37,7 +37,7 @@ describe Enumerize::Base do
|
|
37
37
|
it 'returns nil as translation when value is nil' do
|
38
38
|
store_translations(:en, :enumerize => {:foo => {:a => 'a text'}}) do
|
39
39
|
klass.enumerize(:foo, :in => [:a, :b])
|
40
|
-
object.foo_text.
|
40
|
+
object.foo_text.must_be_nil
|
41
41
|
end
|
42
42
|
end
|
43
43
|
|
@@ -120,7 +120,7 @@ describe Enumerize::Base do
|
|
120
120
|
klass.enumerize(:foo, :in => %w[a b])
|
121
121
|
subklass.enumerize(:bar, :in => %w[c d])
|
122
122
|
|
123
|
-
klass.enumerized_attributes[:bar].
|
123
|
+
klass.enumerized_attributes[:bar].must_be_nil
|
124
124
|
end
|
125
125
|
|
126
126
|
it 'adds new parent class attributes to subclass' do
|
@@ -132,7 +132,7 @@ describe Enumerize::Base do
|
|
132
132
|
it 'stores nil value' do
|
133
133
|
klass.enumerize(:foo, :in => [:a, :b])
|
134
134
|
object.foo = nil
|
135
|
-
object.instance_variable_get(:@foo).
|
135
|
+
object.instance_variable_get(:@foo).must_be_nil
|
136
136
|
end
|
137
137
|
|
138
138
|
it 'casts value to string for validation' do
|
@@ -144,7 +144,7 @@ describe Enumerize::Base do
|
|
144
144
|
it "doesn't cast nil to string for validation" do
|
145
145
|
klass.enumerize(:foo, :in => [:a, :b])
|
146
146
|
object.foo = nil
|
147
|
-
object.read_attribute_for_validation(:foo).
|
147
|
+
object.read_attribute_for_validation(:foo).must_be_nil
|
148
148
|
end
|
149
149
|
|
150
150
|
it 'calls super in the accessor method' do
|
data/test/mongo_mapper_test.rb
CHANGED
data/test/mongoid_test.rb
CHANGED
data/test/sequel_test.rb
CHANGED
@@ -71,7 +71,7 @@ module SequelTest
|
|
71
71
|
it 'sets nil if invalid value is passed' do
|
72
72
|
user = User.new
|
73
73
|
user.sex = :invalid
|
74
|
-
user.sex.
|
74
|
+
user.sex.must_be_nil
|
75
75
|
end
|
76
76
|
|
77
77
|
it 'saves value' do
|
@@ -147,7 +147,7 @@ module SequelTest
|
|
147
147
|
it 'stores nil when empty string assigned' do
|
148
148
|
user = User.new
|
149
149
|
user.role = ''
|
150
|
-
user.values[:role].
|
150
|
+
user.values[:role].must_be_nil
|
151
151
|
end
|
152
152
|
|
153
153
|
it 'supports multiple attributes' do
|
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.1.
|
4
|
+
version: 2.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sergey Nartimov
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-05-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -39,6 +39,7 @@ files:
|
|
39
39
|
- Gemfile.global
|
40
40
|
- Gemfile.mongo_mapper
|
41
41
|
- Gemfile.rails42
|
42
|
+
- Gemfile.rails51
|
42
43
|
- MIT-LICENSE
|
43
44
|
- README.md
|
44
45
|
- Rakefile
|