Merge pull request #319 from glitch-soc/317-attempt-to-switch-flavors-raises-actioncontroller-parametermissing
Fix #317: Attempting to switch flavors raises ActionController::ParameterMissing
This commit is contained in:
commit
26f054253c
|
@ -1,13 +1,12 @@
|
||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
class Settings::FlavoursController < Settings::BaseController
|
class Settings::FlavoursController < Settings::BaseController
|
||||||
|
|
||||||
def index
|
def index
|
||||||
redirect_to action: 'show', flavour: current_flavour
|
redirect_to action: 'show', flavour: current_flavour
|
||||||
end
|
end
|
||||||
|
|
||||||
def show
|
def show
|
||||||
unless Themes.instance.flavours.include?(params[:flavour]) or params[:flavour] == current_flavour
|
unless Themes.instance.flavours.include?(params[:flavour]) || (params[:flavour] == current_flavour)
|
||||||
redirect_to action: 'show', flavour: current_flavour
|
redirect_to action: 'show', flavour: current_flavour
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -16,7 +15,7 @@ class Settings::FlavoursController < Settings::BaseController
|
||||||
end
|
end
|
||||||
|
|
||||||
def update
|
def update
|
||||||
user_settings.update(user_settings_params(params[:flavour]).to_h)
|
user_settings.update(user_settings_params)
|
||||||
redirect_to action: 'show', flavour: params[:flavour]
|
redirect_to action: 'show', flavour: params[:flavour]
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -26,10 +25,8 @@ class Settings::FlavoursController < Settings::BaseController
|
||||||
UserSettingsDecorator.new(current_user)
|
UserSettingsDecorator.new(current_user)
|
||||||
end
|
end
|
||||||
|
|
||||||
def user_settings_params(flavour)
|
def user_settings_params
|
||||||
params.require(:user).merge({ setting_flavour: flavour }).permit(
|
{ setting_flavour: params.require(:flavour),
|
||||||
:setting_flavour,
|
setting_skin: params.dig(:user, :setting_skin) }.with_indifferent_access
|
||||||
:setting_skin
|
|
||||||
)
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -0,0 +1,38 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
require 'rails_helper'
|
||||||
|
|
||||||
|
RSpec.describe Settings::FlavoursController, type: :controller do
|
||||||
|
let(:user) { Fabricate(:user) }
|
||||||
|
|
||||||
|
before do
|
||||||
|
sign_in user, scope: :user
|
||||||
|
end
|
||||||
|
|
||||||
|
describe 'PUT #update' do
|
||||||
|
describe 'without a user[setting_skin] parameter' do
|
||||||
|
it 'sets the selected flavour' do
|
||||||
|
put :update, params: { flavour: 'schnozzberry' }
|
||||||
|
|
||||||
|
user.reload
|
||||||
|
|
||||||
|
expect(user.setting_flavour).to eq 'schnozzberry'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe 'with a user[setting_skin] parameter' do
|
||||||
|
before do
|
||||||
|
put :update, params: { flavour: 'schnozzberry', user: { setting_skin: 'wallpaper' } }
|
||||||
|
|
||||||
|
user.reload
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'sets the selected flavour' do
|
||||||
|
expect(user.setting_flavour).to eq 'schnozzberry'
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'sets the selected skin' do
|
||||||
|
expect(user.setting_skin).to eq 'wallpaper'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
Reference in New Issue