M app/controllers/settings/preferences/appearance_controller.rb => app/controllers/settings/preferences/appearance_controller.rb +1 -1
@@ 1,6 1,6 @@
# frozen_string_literal: true
-class Settings::Preferences::AppearanceController < Settings::PreferencesController
+class Settings::Preferences::AppearanceController < Settings::Preferences::BaseController
private
def after_update_redirect_path
R app/controllers/settings/preferences_controller.rb => app/controllers/settings/preferences/base_controller.rb +2 -2
@@ 1,6 1,6 @@
# frozen_string_literal: true
-class Settings::PreferencesController < Settings::BaseController
+class Settings::Preferences::BaseController < Settings::BaseController
def show; end
def update
@@ 15,7 15,7 @@ class Settings::PreferencesController < Settings::BaseController
private
def after_update_redirect_path
- settings_preferences_path
+ raise 'Override in controller'
end
def user_params
M app/controllers/settings/preferences/notifications_controller.rb => app/controllers/settings/preferences/notifications_controller.rb +1 -1
@@ 1,6 1,6 @@
# frozen_string_literal: true
-class Settings::Preferences::NotificationsController < Settings::PreferencesController
+class Settings::Preferences::NotificationsController < Settings::Preferences::BaseController
private
def after_update_redirect_path
M app/controllers/settings/preferences/other_controller.rb => app/controllers/settings/preferences/other_controller.rb +1 -1
@@ 1,6 1,6 @@
# frozen_string_literal: true
-class Settings::Preferences::OtherController < Settings::PreferencesController
+class Settings::Preferences::OtherController < Settings::Preferences::BaseController
private
def after_update_redirect_path
M spec/controllers/settings/preferences/appearance_controller_spec.rb => spec/controllers/settings/preferences/appearance_controller_spec.rb +6 -0
@@ 31,5 31,11 @@ describe Settings::Preferences::AppearanceController do
expect(response).to redirect_to(settings_preferences_appearance_path)
end
+
+ it 'renders show on failure' do
+ put :update, params: { user: { locale: 'fake option' } }
+
+ expect(response).to render_template('preferences/appearance/show')
+ end
end
end
A spec/controllers/settings/preferences/base_controller_spec.rb => spec/controllers/settings/preferences/base_controller_spec.rb +11 -0
@@ 0,0 1,11 @@
+# frozen_string_literal: true
+
+require 'rails_helper'
+
+describe Settings::Preferences::BaseController do
+ describe 'after_update_redirect_path' do
+ it 'raises error when called' do
+ expect { described_class.new.send(:after_update_redirect_path) }.to raise_error(/Override/)
+ end
+ end
+end