Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion lib/enumerize/activerecord.rb
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ def reload(options = nil)
reloaded.class.enumerized_attributes.each do |attr|
begin
# Checks first if the enumerized attribute is in ActiveRecord::Store
store_attr, _ = reloaded.class.stored_attributes.detect do |store_attr, keys|
store_attr, _ = reloaded.class.stored_attributes.detect do |_store_attr, keys|
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

warning: shadowing outer local variable - store_attr

keys.include?(attr.name)
end

Expand Down
44 changes: 22 additions & 22 deletions test/activemodel_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -24,88 +24,88 @@ class InterestsRequiredActiveModelUser < ActiveModelUser

it 'initialize value' do
user = model.new(:name => 'active_model_user', :sex => :male, :role => :user, :interests => [:music, :programming])
user.sex.must_equal 'male'
user.sex_text.must_equal 'Male'
user.role.must_equal 'user'
user.role_text.must_equal 'User'
user.interests.must_equal %w(music programming)
expect(user.sex).must_equal 'male'
expect(user.sex_text).must_equal 'Male'
expect(user.role).must_equal 'user'
expect(user.role_text).must_equal 'User'
expect(user.interests).must_equal %w(music programming)
end

it 'sets nil if invalid value is passed' do
user = model.new
user.sex = :invalid
user.sex.must_be_nil
expect(user.sex).must_be_nil
end

it 'stores value' do
user = model.new
user.sex = :female
user.sex.must_equal 'female'
expect(user.sex).must_equal 'female'
end

it 'has default value' do
model.new.role.must_equal 'user'
expect(model.new.role).must_equal 'user'
end

it 'validates inclusion' do
user = model.new
user.role = 'wrong'
user.wont_be :valid?
expect(user).wont_be :valid?
end

it 'supports multiple attributes' do
user = ActiveModelUser.new
user.interests.must_be_instance_of Enumerize::Set
user.interests.must_be_empty
expect(user.interests).must_be_instance_of Enumerize::Set
expect(user.interests).must_be_empty
user.interests << :music
user.interests.must_equal %w(music)
expect(user.interests).must_equal %w(music)
user.interests << :sports
user.interests.must_equal %w(music sports)
expect(user.interests).must_equal %w(music sports)

user.interests = []
interests = user.interests
interests << :music
interests.must_equal %w(music)
expect(interests).must_equal %w(music)
interests << :dancing
interests.must_equal %w(music dancing)
expect(interests).must_equal %w(music dancing)
end

it 'returns invalid multiple value for validation' do
user = ActiveModelUser.new
user.interests << :music
user.interests << :invalid
values = user.read_attribute_for_validation(:interests)
values.must_equal %w(music invalid)
expect(values).must_equal %w(music invalid)
end

it 'validates multiple attributes' do
user = ActiveModelUser.new
user.interests << :invalid
user.wont_be :valid?
expect(user).wont_be :valid?

user.interests = Object.new
user.wont_be :valid?
expect(user).wont_be :valid?

user.interests = ['music', '']
user.must_be :valid?
expect(user).must_be :valid?
end

it 'validates presence with multiple attributes' do
user = InterestsRequiredActiveModelUser.new
user.interests = []
user.valid?

user.errors[:interests].wont_be :empty?
expect(user.errors[:interests]).wont_be :empty?

user.interests = ['']
user.valid?

user.errors[:interests].wont_be :empty?
expect(user.errors[:interests]).wont_be :empty?

user.interests = [:dancing, :programming]
user.valid?

user.errors[:interests].must_be_empty
expect(user.errors[:interests]).must_be_empty
end
end

Expand Down
Loading