mongoid-enum-i18n 0.2.5 → 0.2.9
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 +2 -0
- data/Gemfile +12 -0
- data/Guardfile +22 -0
- data/README.md +0 -3
- data/lib/mongoid/enum.rb +30 -15
- data/lib/mongoid/enum/validators/multiple_validator.rb +1 -1
- data/lib/mongoid/enum/version.rb +1 -1
- data/mongoid-enum-i18n.gemspec +0 -6
- data/spec/mongoid/enum_spec.rb +59 -2
- data/spec/spec_helper.rb +3 -4
- metadata +5 -73
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cc39e71840d462cac737d0756eea80a8f831089e
|
4
|
+
data.tar.gz: c388c3055bd4af60a7549d71645511a40a242443
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6ff488c1098984135d6d1a70da51395c909b2865a22e9ff1538e76b894e0fc29d78dc3da4f6428fef5ea0c8fabaeddd5b3396e003298bfc84faad69e0677aa0c
|
7
|
+
data.tar.gz: 6702eb2c30f6872a6df327cb0a8c2d56e68987d2180c42fcfdca31a6391b0188e7490ac609e84b5d18ea4d9a4ccc4edeb96b4d03cd10b0b3d7e841106a01f84f
|
data/.travis.yml
CHANGED
data/Gemfile
CHANGED
@@ -1,4 +1,16 @@
|
|
1
1
|
source 'https://rubygems.org'
|
2
2
|
|
3
3
|
# Specify your gem's dependencies in mongoid-enum.gemspec
|
4
|
+
gem 'mongoid', '>= 5.0.0.beta'
|
5
|
+
|
4
6
|
gemspec
|
7
|
+
|
8
|
+
group :test do
|
9
|
+
gem 'guard'
|
10
|
+
gem 'rubocop'
|
11
|
+
gem 'guard-rspec'
|
12
|
+
gem 'guard-rubocop'
|
13
|
+
gem 'rspec', '>= 3.2.0'
|
14
|
+
gem 'codeclimate-test-reporter', require: nil
|
15
|
+
gem 'mongoid-rspec', git: 'https://github.com/nofxx/mongoid-rspec'
|
16
|
+
end
|
data/Guardfile
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
# Note: The cmd option is now required due to the increasing number of ways
|
2
|
+
# rspec may be run, below are examples of the most common uses.
|
3
|
+
# * bundler: 'bundle exec rspec'
|
4
|
+
# * bundler binstubs: 'bin/rspec'
|
5
|
+
# * spring: 'bin/rsspec' (This will use spring if running and you have
|
6
|
+
# installed the spring binstubs per the docs)
|
7
|
+
# * zeus: 'zeus rspec' (requires the server to be started separetly)
|
8
|
+
# * 'just' rspec: 'rspec'
|
9
|
+
|
10
|
+
# guard :rubocop do
|
11
|
+
guard :rubocop, all_on_start: false, keep_failed: false, cli: ['-D'] do
|
12
|
+
watch(%r{.+\.rb$})
|
13
|
+
watch(%r{(?:.+/)?\.rubocop\.yml$}) { |m| File.dirname(m[0]) }
|
14
|
+
end
|
15
|
+
|
16
|
+
guard :rspec, cmd: 'bundle exec rspec' do
|
17
|
+
watch(%r{^spec/.+_spec\.rb$})
|
18
|
+
watch(%r{^lib/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
|
19
|
+
watch(/^generators\/(.+)\.rb$/) { |_m| 'spec/schemaless/worker_spec' }
|
20
|
+
|
21
|
+
watch('spec/spec_helper.rb') { 'spec' }
|
22
|
+
end
|
data/README.md
CHANGED
@@ -1,8 +1,5 @@
|
|
1
1
|
# Mongoid::Enum (::I18n alternative gem)
|
2
2
|
|
3
|
-
[](https://travis-ci.org/thetron/mongoid-enum)
|
5
|
-
[](https://codeclimate.com/github/thetron/mongoid-enum)
|
6
3
|
|
7
4
|
Heavily inspired by [DHH's
|
8
5
|
ActiveRecord::Enum](https://github.com/rails/rails/commit/db41eb8a6ea88b854bf5cd11070ea4245e1639c5), this little library is
|
data/lib/mongoid/enum.rb
CHANGED
@@ -18,26 +18,27 @@ module Mongoid
|
|
18
18
|
# Main class method
|
19
19
|
#
|
20
20
|
def enum(field_name, values, options = {})
|
21
|
-
options = default_options
|
21
|
+
options = default_options.merge(options)
|
22
22
|
|
23
23
|
set_values_constant field_name, values
|
24
24
|
|
25
|
-
create_field field_name, options
|
25
|
+
create_field field_name, options, values
|
26
26
|
create_i18n_helper field_name, options
|
27
27
|
create_values_helper field_name, options
|
28
28
|
|
29
29
|
create_validations field_name, values, options
|
30
30
|
define_value_scopes_and_accessors field_name, values, options
|
31
|
+
return unless options[:multiple]
|
32
|
+
define_array_field_writer field_name
|
31
33
|
end
|
32
34
|
|
33
35
|
private
|
34
36
|
|
35
|
-
def default_options
|
37
|
+
def default_options
|
36
38
|
{
|
37
|
-
:
|
38
|
-
:
|
39
|
-
:
|
40
|
-
:validate => true
|
39
|
+
multiple: false,
|
40
|
+
required: true,
|
41
|
+
validate: true
|
41
42
|
}
|
42
43
|
end
|
43
44
|
|
@@ -46,21 +47,33 @@ module Mongoid
|
|
46
47
|
const_set const_name, values
|
47
48
|
end
|
48
49
|
|
49
|
-
def create_field(field_name, options)
|
50
|
+
def create_field(field_name, options, values)
|
50
51
|
type = options[:multiple] && Array || Symbol
|
51
|
-
|
52
|
+
default = \
|
53
|
+
if options.key?(:default)
|
54
|
+
options[:default]
|
55
|
+
else
|
56
|
+
options[:multiple] ? [] : values.first
|
57
|
+
end
|
58
|
+
field field_name, type: type, default: default
|
59
|
+
end
|
60
|
+
|
61
|
+
def define_array_field_writer(field_name)
|
62
|
+
define_method("#{field_name}=") do |vals|
|
63
|
+
write_attribute(field_name, Array(vals).compact.map(&:to_sym))
|
64
|
+
end
|
52
65
|
end
|
53
66
|
|
54
67
|
def create_validations(field_name, values, options)
|
55
68
|
if options[:multiple] && options[:validate]
|
56
69
|
validates field_name, :'mongoid/enum/validators/multiple' => {
|
57
|
-
:
|
58
|
-
:
|
70
|
+
in: values.map(&:to_sym),
|
71
|
+
allow_nil: !options[:required]
|
59
72
|
}
|
60
73
|
elsif validate
|
61
74
|
validates field_name,
|
62
|
-
:
|
63
|
-
:
|
75
|
+
inclusion: { in: values },
|
76
|
+
allow_nil: !options[:required]
|
64
77
|
end
|
65
78
|
end
|
66
79
|
|
@@ -74,7 +87,7 @@ module Mongoid
|
|
74
87
|
|
75
88
|
def create_values_helper(field_name, options)
|
76
89
|
return if options[:i18n].is_a?(FalseClass)
|
77
|
-
|
90
|
+
define_singleton_method("#{field_name}_values") do
|
78
91
|
I18n.translate("mongoid.enums.#{model_name.to_s.underscore}."\
|
79
92
|
"#{field_name}").map { |k, v| [v, k] }
|
80
93
|
end
|
@@ -101,7 +114,9 @@ module Mongoid
|
|
101
114
|
|
102
115
|
def define_string_accessor(field_name, value)
|
103
116
|
class_eval "def #{value}?() self.#{field_name} == :#{value} end"
|
104
|
-
|
117
|
+
define_method("#{value}!") do
|
118
|
+
update_attributes! :"#{field_name}" => :"#{value}"
|
119
|
+
end
|
105
120
|
end
|
106
121
|
end
|
107
122
|
end
|
data/lib/mongoid/enum/version.rb
CHANGED
data/mongoid-enum-i18n.gemspec
CHANGED
@@ -19,10 +19,4 @@ Gem::Specification.new do |spec|
|
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
21
|
spec.add_runtime_dependency "mongoid", "> 4.0.0"
|
22
|
-
|
23
|
-
spec.add_development_dependency "bundler"
|
24
|
-
spec.add_development_dependency "rake"
|
25
|
-
spec.add_development_dependency "rspec"
|
26
|
-
spec.add_development_dependency "guard-rspec"
|
27
|
-
spec.add_development_dependency "mongoid-rspec"
|
28
22
|
end
|
data/spec/mongoid/enum_spec.rb
CHANGED
@@ -5,7 +5,10 @@ class User
|
|
5
5
|
include Mongoid::Enum
|
6
6
|
|
7
7
|
enum :status, [:awaiting_approval, :approved, :banned]
|
8
|
-
enum :roles, [:author, :editor, :admin],
|
8
|
+
enum :roles, [:author, :editor, :admin],
|
9
|
+
default: [],
|
10
|
+
multiple: true,
|
11
|
+
required: false
|
9
12
|
end
|
10
13
|
|
11
14
|
describe Mongoid::Enum do
|
@@ -52,6 +55,22 @@ describe Mongoid::Enum do
|
|
52
55
|
end
|
53
56
|
end
|
54
57
|
|
58
|
+
describe "'required' option" do
|
59
|
+
context 'when true' do
|
60
|
+
let(:instance) { User.new status: nil }
|
61
|
+
it 'is not valid with nil value' do
|
62
|
+
expect(instance).to_not be_valid
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
context 'when false' do
|
67
|
+
let(:instance) { User.new roles: nil }
|
68
|
+
it 'is valid with nil value' do
|
69
|
+
expect(instance).to be_valid
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
55
74
|
describe 'constant' do
|
56
75
|
it 'is set to the values' do
|
57
76
|
expect(klass::STATUS).to eq values
|
@@ -60,6 +79,18 @@ describe Mongoid::Enum do
|
|
60
79
|
|
61
80
|
describe 'accessors'do
|
62
81
|
context 'when singular' do
|
82
|
+
describe 'setter' do
|
83
|
+
it 'accepts strings' do
|
84
|
+
instance.status = 'banned'
|
85
|
+
expect(instance.status).to eq :banned
|
86
|
+
end
|
87
|
+
|
88
|
+
it 'accepts symbols' do
|
89
|
+
instance.status = :banned
|
90
|
+
expect(instance.status).to eq :banned
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
63
94
|
describe '{{value}}!' do
|
64
95
|
it 'sets the value' do
|
65
96
|
instance.save
|
@@ -87,6 +118,32 @@ describe Mongoid::Enum do
|
|
87
118
|
end
|
88
119
|
|
89
120
|
context 'when multiple' do
|
121
|
+
describe 'setter' do
|
122
|
+
it 'accepts strings' do
|
123
|
+
instance.roles = 'author'
|
124
|
+
expect(instance.roles).to eq [:author]
|
125
|
+
end
|
126
|
+
|
127
|
+
it 'accepts symbols' do
|
128
|
+
instance.roles << :author
|
129
|
+
expect(instance.roles).to eq [:author]
|
130
|
+
end
|
131
|
+
|
132
|
+
it 'accepts arrays of strings' do
|
133
|
+
instance.roles = %w( author editor )
|
134
|
+
instance.save
|
135
|
+
puts instance.errors.full_messages
|
136
|
+
instance.reload
|
137
|
+
expect(instance.roles).to include(:author)
|
138
|
+
expect(instance.roles).to include(:editor)
|
139
|
+
end
|
140
|
+
|
141
|
+
it 'accepts arrays of symbols' do
|
142
|
+
instance.roles = [:author, :editor]
|
143
|
+
expect(instance.roles).to include(:author)
|
144
|
+
expect(instance.roles).to include(:editor)
|
145
|
+
end
|
146
|
+
end
|
90
147
|
describe '{{value}}!' do
|
91
148
|
context 'when field is nil' do
|
92
149
|
it 'creates an array containing the value' do
|
@@ -183,7 +240,7 @@ describe Mongoid::Enum do
|
|
183
240
|
end
|
184
241
|
|
185
242
|
it 'should have a helper to translate the values' do
|
186
|
-
expect(
|
243
|
+
expect(User.status_values)
|
187
244
|
.to eq([['Awaiting Approval', :awaiting_approval]])
|
188
245
|
end
|
189
246
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,6 +1,5 @@
|
|
1
1
|
$LOAD_PATH << File.expand_path('../../lib', __FILE__)
|
2
2
|
|
3
|
-
require 'database_cleaner'
|
4
3
|
require 'mongoid'
|
5
4
|
require 'mongoid-rspec'
|
6
5
|
require 'mongoid/enum'
|
@@ -9,9 +8,9 @@ ENV['MONGOID_ENV'] = 'test'
|
|
9
8
|
|
10
9
|
RSpec.configure do |config|
|
11
10
|
config.include Mongoid::Matchers
|
12
|
-
config.before(:suite) do
|
13
|
-
|
14
|
-
end
|
11
|
+
# config.before(:suite) do
|
12
|
+
# DatabaseCleaner.strategy = :truncation
|
13
|
+
# end
|
15
14
|
|
16
15
|
config.after(:each) do
|
17
16
|
Mongoid.purge!
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mongoid-enum-i18n
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nicholas Bruning
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2015-07-
|
12
|
+
date: 2015-07-31 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: mongoid
|
@@ -25,76 +25,6 @@ dependencies:
|
|
25
25
|
- - ">"
|
26
26
|
- !ruby/object:Gem::Version
|
27
27
|
version: 4.0.0
|
28
|
-
- !ruby/object:Gem::Dependency
|
29
|
-
name: bundler
|
30
|
-
requirement: !ruby/object:Gem::Requirement
|
31
|
-
requirements:
|
32
|
-
- - ">="
|
33
|
-
- !ruby/object:Gem::Version
|
34
|
-
version: '0'
|
35
|
-
type: :development
|
36
|
-
prerelease: false
|
37
|
-
version_requirements: !ruby/object:Gem::Requirement
|
38
|
-
requirements:
|
39
|
-
- - ">="
|
40
|
-
- !ruby/object:Gem::Version
|
41
|
-
version: '0'
|
42
|
-
- !ruby/object:Gem::Dependency
|
43
|
-
name: rake
|
44
|
-
requirement: !ruby/object:Gem::Requirement
|
45
|
-
requirements:
|
46
|
-
- - ">="
|
47
|
-
- !ruby/object:Gem::Version
|
48
|
-
version: '0'
|
49
|
-
type: :development
|
50
|
-
prerelease: false
|
51
|
-
version_requirements: !ruby/object:Gem::Requirement
|
52
|
-
requirements:
|
53
|
-
- - ">="
|
54
|
-
- !ruby/object:Gem::Version
|
55
|
-
version: '0'
|
56
|
-
- !ruby/object:Gem::Dependency
|
57
|
-
name: rspec
|
58
|
-
requirement: !ruby/object:Gem::Requirement
|
59
|
-
requirements:
|
60
|
-
- - ">="
|
61
|
-
- !ruby/object:Gem::Version
|
62
|
-
version: '0'
|
63
|
-
type: :development
|
64
|
-
prerelease: false
|
65
|
-
version_requirements: !ruby/object:Gem::Requirement
|
66
|
-
requirements:
|
67
|
-
- - ">="
|
68
|
-
- !ruby/object:Gem::Version
|
69
|
-
version: '0'
|
70
|
-
- !ruby/object:Gem::Dependency
|
71
|
-
name: guard-rspec
|
72
|
-
requirement: !ruby/object:Gem::Requirement
|
73
|
-
requirements:
|
74
|
-
- - ">="
|
75
|
-
- !ruby/object:Gem::Version
|
76
|
-
version: '0'
|
77
|
-
type: :development
|
78
|
-
prerelease: false
|
79
|
-
version_requirements: !ruby/object:Gem::Requirement
|
80
|
-
requirements:
|
81
|
-
- - ">="
|
82
|
-
- !ruby/object:Gem::Version
|
83
|
-
version: '0'
|
84
|
-
- !ruby/object:Gem::Dependency
|
85
|
-
name: mongoid-rspec
|
86
|
-
requirement: !ruby/object:Gem::Requirement
|
87
|
-
requirements:
|
88
|
-
- - ">="
|
89
|
-
- !ruby/object:Gem::Version
|
90
|
-
version: '0'
|
91
|
-
type: :development
|
92
|
-
prerelease: false
|
93
|
-
version_requirements: !ruby/object:Gem::Requirement
|
94
|
-
requirements:
|
95
|
-
- - ">="
|
96
|
-
- !ruby/object:Gem::Version
|
97
|
-
version: '0'
|
98
28
|
description: Heavily inspired by DDH's ActiveRecord::Enum, this little library is
|
99
29
|
there to help you cut down the cruft in your models and make the world a happier
|
100
30
|
place at the same time.
|
@@ -109,6 +39,7 @@ files:
|
|
109
39
|
- ".rspec"
|
110
40
|
- ".travis.yml"
|
111
41
|
- Gemfile
|
42
|
+
- Guardfile
|
112
43
|
- LICENSE.txt
|
113
44
|
- README.md
|
114
45
|
- Rakefile
|
@@ -142,7 +73,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
142
73
|
version: '0'
|
143
74
|
requirements: []
|
144
75
|
rubyforge_project:
|
145
|
-
rubygems_version: 2.4.
|
76
|
+
rubygems_version: 2.4.8
|
146
77
|
signing_key:
|
147
78
|
specification_version: 4
|
148
79
|
summary: Sweet enum sugar for your Mongoid documents
|
@@ -153,3 +84,4 @@ test_files:
|
|
153
84
|
- spec/support/app.en.yml
|
154
85
|
- spec/support/mongoid.yml
|
155
86
|
- spec/support/mongoid4.yml
|
87
|
+
has_rdoc:
|