diff options
author | Robert Speicher <rspeicher@gmail.com> | 2015-06-05 14:00:21 -0400 |
---|---|---|
committer | Robert Speicher <rspeicher@gmail.com> | 2015-06-13 17:58:15 -0400 |
commit | 821fc4b03479a193b055c91b8a655d226bc46c17 (patch) | |
tree | a768f6c4cdd039261194bbc36a40b31e61c9934f /spec/controllers/profiles/preferences_controller_spec.rb | |
parent | 0b3c97422136683357cdb4433a5ef0aa8858c18d (diff) | |
download | gitlab-ce-821fc4b03479a193b055c91b8a655d226bc46c17.tar.gz |
Add Profiles::PreferencesController
Diffstat (limited to 'spec/controllers/profiles/preferences_controller_spec.rb')
-rw-r--r-- | spec/controllers/profiles/preferences_controller_spec.rb | 70 |
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 |