enumerize 2.4.0 → 2.6.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.
@@ -49,7 +49,7 @@ module Enumerize
49
49
  end
50
50
  end
51
51
 
52
- def initialize(*)
52
+ def initialize(*args, **kwargs)
53
53
  super
54
54
  _set_default_value_for_enumerized_attributes
55
55
  end
@@ -90,22 +90,26 @@ module Enumerize
90
90
 
91
91
  def _set_default_value_for_enumerized_attributes
92
92
  self.class.enumerized_attributes.each do |attr|
93
- next if attr.default_value.nil?
94
- begin
95
- if respond_to?(attr.name)
96
- attr_value = public_send(attr.name)
97
- else
98
- next
99
- end
100
-
101
- value_for_validation = _enumerized_values_for_validation[attr.name.to_s]
102
-
103
- if (!attr_value || attr_value.empty?) && (!value_for_validation || value_for_validation.empty?)
104
- value = Utils.call_if_callable(attr.default_value, self)
105
- public_send("#{attr.name}=", value)
106
- end
107
- rescue ActiveModel::MissingAttributeError
93
+ _set_default_value_for_enumerized_attribute(attr)
94
+ end
95
+ end
96
+
97
+ def _set_default_value_for_enumerized_attribute(attr)
98
+ return if attr.default_value.nil?
99
+ begin
100
+ if respond_to?(attr.name)
101
+ attr_value = public_send(attr.name)
102
+ else
103
+ return
104
+ end
105
+
106
+ value_for_validation = _enumerized_values_for_validation[attr.name.to_s]
107
+
108
+ if (!attr_value || attr_value.empty?) && (!value_for_validation || value_for_validation.empty?)
109
+ value = Utils.call_if_callable(attr.default_value, self)
110
+ public_send("#{attr.name}=", value)
108
111
  end
112
+ rescue ActiveModel::MissingAttributeError
109
113
  end
110
114
  end
111
115
  end
@@ -24,6 +24,13 @@ module Enumerize
24
24
 
25
25
  reloaded
26
26
  end
27
+
28
+ private
29
+
30
+ def _set_default_value_for_enumerized_attribute(attr)
31
+ super
32
+ rescue Mongoid::Errors::AttributeNotLoaded
33
+ end
27
34
  end
28
35
  end
29
36
  end
@@ -17,7 +17,7 @@ module Enumerize
17
17
  end
18
18
 
19
19
  def predicate_method?(method)
20
- method[-1] == '?' && @attr && @attr.values.include?(method[0..-2])
20
+ method[-1] == '?' && @attr && @attr.value?(method[0..-2])
21
21
  end
22
22
  end
23
23
  end
@@ -42,6 +42,10 @@ module Enumerize
42
42
  define_singleton_method(value_obj) do
43
43
  where(attribute_name => value_obj.value)
44
44
  end
45
+
46
+ define_singleton_method("not_#{value_obj}") do
47
+ where.not(attribute_name => value_obj.value)
48
+ end
45
49
  end
46
50
  end
47
51
  end
@@ -39,6 +39,10 @@ module Enumerize
39
39
  define_singleton_method(value_obj) do
40
40
  self.in(attribute_name => value_obj.value)
41
41
  end
42
+
43
+ define_singleton_method("not_#{value_obj}") do
44
+ self.not_in(attribute_name => value_obj.value)
45
+ end
42
46
  end
43
47
  end
44
48
  end
@@ -45,6 +45,10 @@ module Enumerize
45
45
  def_dataset_method(value_obj) do
46
46
  where(attribute_name => value_obj.value.to_s)
47
47
  end
48
+
49
+ def_dataset_method("not_#{value_obj}") do
50
+ exclude(attribute_name => value_obj.value.to_s)
51
+ end
48
52
  end
49
53
  end
50
54
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Enumerize
4
- VERSION = '2.4.0'
4
+ VERSION = '2.6.0'
5
5
  end
data/lib/enumerize.rb CHANGED
@@ -82,7 +82,7 @@ module Enumerize
82
82
  end
83
83
 
84
84
  begin
85
- require 'rspec/matchers'
85
+ require 'rspec'
86
86
  rescue LoadError
87
87
  else
88
88
  require 'enumerize/integrations/rspec'
@@ -4,7 +4,7 @@ require 'test_helper'
4
4
 
5
5
  if defined?(::ActiveModel::Attributes)
6
6
 
7
- describe Enumerize do
7
+ class ActiveModelTest < MiniTest::Spec
8
8
  class ActiveModelUser
9
9
  include ActiveModel::Model
10
10
  include ActiveModel::Attributes
@@ -24,50 +24,50 @@ describe Enumerize do
24
24
 
25
25
  it 'initialize value' do
26
26
  user = model.new(:name => 'active_model_user', :sex => :male, :role => :user, :interests => [:music, :programming])
27
- user.sex.must_equal 'male'
28
- user.sex_text.must_equal 'Male'
29
- user.role.must_equal 'user'
30
- user.role_text.must_equal 'User'
31
- user.interests.must_equal %w(music programming)
27
+ expect(user.sex).must_equal 'male'
28
+ expect(user.sex_text).must_equal 'Male'
29
+ expect(user.role).must_equal 'user'
30
+ expect(user.role_text).must_equal 'User'
31
+ expect(user.interests).must_equal %w(music programming)
32
32
  end
33
33
 
34
34
  it 'sets nil if invalid value is passed' do
35
35
  user = model.new
36
36
  user.sex = :invalid
37
- user.sex.must_be_nil
37
+ expect(user.sex).must_be_nil
38
38
  end
39
39
 
40
40
  it 'stores value' do
41
41
  user = model.new
42
42
  user.sex = :female
43
- user.sex.must_equal 'female'
43
+ expect(user.sex).must_equal 'female'
44
44
  end
45
45
 
46
46
  it 'has default value' do
47
- model.new.role.must_equal 'user'
47
+ expect(model.new.role).must_equal 'user'
48
48
  end
49
49
 
50
50
  it 'validates inclusion' do
51
51
  user = model.new
52
52
  user.role = 'wrong'
53
- user.wont_be :valid?
53
+ expect(user).wont_be :valid?
54
54
  end
55
55
 
56
56
  it 'supports multiple attributes' do
57
57
  user = ActiveModelUser.new
58
- user.interests.must_be_instance_of Enumerize::Set
59
- user.interests.must_be_empty
58
+ expect(user.interests).must_be_instance_of Enumerize::Set
59
+ expect(user.interests).must_be_empty
60
60
  user.interests << :music
61
- user.interests.must_equal %w(music)
61
+ expect(user.interests).must_equal %w(music)
62
62
  user.interests << :sports
63
- user.interests.must_equal %w(music sports)
63
+ expect(user.interests).must_equal %w(music sports)
64
64
 
65
65
  user.interests = []
66
66
  interests = user.interests
67
67
  interests << :music
68
- interests.must_equal %w(music)
68
+ expect(interests).must_equal %w(music)
69
69
  interests << :dancing
70
- interests.must_equal %w(music dancing)
70
+ expect(interests).must_equal %w(music dancing)
71
71
  end
72
72
 
73
73
  it 'returns invalid multiple value for validation' do
@@ -75,19 +75,19 @@ describe Enumerize do
75
75
  user.interests << :music
76
76
  user.interests << :invalid
77
77
  values = user.read_attribute_for_validation(:interests)
78
- values.must_equal %w(music invalid)
78
+ expect(values).must_equal %w(music invalid)
79
79
  end
80
80
 
81
81
  it 'validates multiple attributes' do
82
82
  user = ActiveModelUser.new
83
83
  user.interests << :invalid
84
- user.wont_be :valid?
84
+ expect(user).wont_be :valid?
85
85
 
86
86
  user.interests = Object.new
87
- user.wont_be :valid?
87
+ expect(user).wont_be :valid?
88
88
 
89
89
  user.interests = ['music', '']
90
- user.must_be :valid?
90
+ expect(user).must_be :valid?
91
91
  end
92
92
 
93
93
  it 'validates presence with multiple attributes' do
@@ -95,17 +95,17 @@ describe Enumerize do
95
95
  user.interests = []
96
96
  user.valid?
97
97
 
98
- user.errors[:interests].wont_be :empty?
98
+ expect(user.errors[:interests]).wont_be :empty?
99
99
 
100
100
  user.interests = ['']
101
101
  user.valid?
102
102
 
103
- user.errors[:interests].wont_be :empty?
103
+ expect(user.errors[:interests]).wont_be :empty?
104
104
 
105
105
  user.interests = [:dancing, :programming]
106
106
  user.valid?
107
107
 
108
- user.errors[:interests].must_be_empty
108
+ expect(user.errors[:interests]).must_be_empty
109
109
  end
110
110
  end
111
111