Skip to content
Snippets Groups Projects
Unverified Commit b4f38edf authored by Christian Schmidt's avatar Christian Schmidt Committed by GitHub
Browse files

Wrong type for user setting when default is defined by lambda (#24321)

parent 68a192e7
No related branches found
No related tags found
No related merge requests found
......@@ -19,7 +19,8 @@ class UserSettings::Setting
end
def type
if @default_value.is_a?(TrueClass) || @default_value.is_a?(FalseClass)
case default_value
when TrueClass, FalseClass
ActiveModel::Type::Boolean.new
else
ActiveModel::Type::String.new
......
......@@ -30,6 +30,38 @@ RSpec.describe UserSettings::Setting do
it 'returns a type' do
expect(subject.type).to be_a ActiveModel::Type::Value
end
context 'when default value is a boolean' do
let(:default) { false }
it 'returns boolean' do
expect(subject.type).to be_a ActiveModel::Type::Boolean
end
end
context 'when default value is a string' do
let(:default) { '' }
it 'returns string' do
expect(subject.type).to be_a ActiveModel::Type::String
end
end
context 'when default value is a lambda returning a boolean' do
let(:default) { -> { false } }
it 'returns boolean' do
expect(subject.type).to be_a ActiveModel::Type::Boolean
end
end
context 'when default value is a lambda returning a string' do
let(:default) { -> { '' } }
it 'returns boolean' do
expect(subject.type).to be_a ActiveModel::Type::String
end
end
end
describe '#type_cast' do
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment