fix config issue with nested hash
This commit is contained in:
parent
7a9dd4edec
commit
1c878c3c13
2 changed files with 14 additions and 1 deletions
|
@ -249,7 +249,9 @@ class FoodsoftConfig
|
||||||
# Normalize value recursively (which can be entered as strings, but we want to store it properly)
|
# Normalize value recursively (which can be entered as strings, but we want to store it properly)
|
||||||
def normalize_value(value)
|
def normalize_value(value)
|
||||||
value = value.map(&:normalize_value) if value.is_a? Array
|
value = value.map(&:normalize_value) if value.is_a? Array
|
||||||
value = Hash[ value.to_a.map{|a| [a[0], normalize_value(a[1])]} ] if value.is_a? Hash
|
if value.is_a? Hash
|
||||||
|
value = ActiveSupport::HashWithIndifferentAccess[ value.to_a.map{|a| [a[0], normalize_value(a[1])]} ]
|
||||||
|
end
|
||||||
case value
|
case value
|
||||||
when 'true' then true
|
when 'true' then true
|
||||||
when 'false' then false
|
when 'false' then false
|
||||||
|
|
|
@ -2,6 +2,7 @@ require_relative '../spec_helper'
|
||||||
|
|
||||||
describe 'admin/configs', type: :feature do
|
describe 'admin/configs', type: :feature do
|
||||||
let(:name) { Faker::Lorem.words(rand(2..4)).join(' ') }
|
let(:name) { Faker::Lorem.words(rand(2..4)).join(' ') }
|
||||||
|
let(:email) { Faker::Internet.email }
|
||||||
|
|
||||||
describe type: :feature, js: true do
|
describe type: :feature, js: true do
|
||||||
let(:admin) { create :admin }
|
let(:admin) { create :admin }
|
||||||
|
@ -35,6 +36,16 @@ describe 'admin/configs', type: :feature do
|
||||||
expect(get_full_config).to eq orig_values
|
expect(get_full_config).to eq orig_values
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it 'can modify a nested value' do
|
||||||
|
visit admin_config_path
|
||||||
|
fill_in 'config_contact_email', with: email
|
||||||
|
within('form.config') do
|
||||||
|
find('input[type="submit"]').click
|
||||||
|
expect(find_field('config_contact_email').value).to eq email
|
||||||
|
end
|
||||||
|
expect(FoodsoftConfig[:contact][:email]).to eq email
|
||||||
|
end
|
||||||
|
|
||||||
def get_full_config
|
def get_full_config
|
||||||
cfg = FoodsoftConfig.to_hash.deep_dup
|
cfg = FoodsoftConfig.to_hash.deep_dup
|
||||||
cfg.each {|k,v| v.reject! {|k,v| v.blank?} if v.is_a? Hash}
|
cfg.each {|k,v| v.reject! {|k,v| v.blank?} if v.is_a? Hash}
|
||||||
|
|
Loading…
Reference in a new issue