summaryrefslogtreecommitdiff
path: root/spec/controllers/profiles
diff options
context:
space:
mode:
authorRobert Speicher <rspeicher@gmail.com>2015-06-05 14:00:21 -0400
committerRobert Speicher <rspeicher@gmail.com>2015-06-13 17:58:15 -0400
commit821fc4b03479a193b055c91b8a655d226bc46c17 (patch)
treea768f6c4cdd039261194bbc36a40b31e61c9934f /spec/controllers/profiles
parent0b3c97422136683357cdb4433a5ef0aa8858c18d (diff)
downloadgitlab-ce-821fc4b03479a193b055c91b8a655d226bc46c17.tar.gz
Add Profiles::PreferencesController
Diffstat (limited to 'spec/controllers/profiles')
-rw-r--r--spec/controllers/profiles/preferences_controller_spec.rb70
1 files changed, 70 insertions, 0 deletions
diff --git a/spec/controllers/profiles/preferences_controller_spec.rb b/spec/controllers/profiles/preferences_controller_spec.rb
new file mode 100644
index 00000000000..87503b1ed4d
--- /dev/null
+++ b/spec/controllers/profiles/preferences_controller_spec.rb
@@ -0,0 +1,70 @@
+require 'spec_helper'
+
+describe Profiles::PreferencesController do
+ let(:user) { create(:user) }
+
+ before do
+ sign_in(user)
+
+ allow(subject).to receive(:current_user).and_return(user)
+ end
+
+ describe 'GET show' do
+ it 'renders' do
+ get :show
+ expect(response).to render_template :show
+ end
+
+ it 'assigns user' do
+ get :show
+ expect(assigns[:user]).to eq user
+ end
+ end
+
+ describe 'PATCH update' do
+ def go(params: {}, format: :js)
+ params.reverse_merge!(
+ color_scheme_id: '1',
+ theme_id: '1'
+ )
+
+ patch :update, user: params, format: format
+ end
+
+ context 'on successful update' do
+ it 'sets the flash' do
+ go
+ expect(flash[:notice]).to eq 'Preferences saved.'
+ end
+
+ it "changes the user's preferences" do
+ prefs = {
+ color_scheme_id: '1',
+ theme_id: '2'
+ }.with_indifferent_access
+
+ expect(user).to receive(:update_attributes).with(prefs)
+
+ go params: prefs
+ end
+ end
+
+ context 'on unsuccessful update' do
+ # TODO (rspeicher): Can this happen?
+ end
+
+ context 'as js' do
+ it 'renders' do
+ go
+ expect(response).to render_template :update
+ end
+ end
+
+ context 'as html' do
+ it 'redirects' do
+ go format: :html
+ expect(response).to redirect_to(profile_preferences_path)
+ end
+ end
+ end
+end