diff options
author | George Koltsov <gkoltsov@gitlab.com> | 2019-08-20 19:07:58 +0100 |
---|---|---|
committer | George Koltsov <gkoltsov@gitlab.com> | 2019-08-20 19:07:58 +0100 |
commit | e73b60f787ac1b13e3b667faa2130a483ea2cbcf (patch) | |
tree | c03881f140d755d27d41f3189b749294d5620775 | |
parent | 09bdc6a8da2bd5be4fbcc97e083504169e5de53b (diff) | |
download | gitlab-ce-e73b60f787ac1b13e3b667faa2130a483ea2cbcf.tar.gz |
Refactor sorting_preference specs
-rw-r--r-- | spec/controllers/concerns/sorting_preference_spec.rb | 59 |
1 files changed, 26 insertions, 33 deletions
diff --git a/spec/controllers/concerns/sorting_preference_spec.rb b/spec/controllers/concerns/sorting_preference_spec.rb index 241f087e470..75a3f8116dd 100644 --- a/spec/controllers/concerns/sorting_preference_spec.rb +++ b/spec/controllers/concerns/sorting_preference_spec.rb @@ -5,46 +5,45 @@ require 'spec_helper' describe SortingPreference do let(:user) { create(:user) } - let(:controller) do + let(:controller_class) do klass = Class.new do def self.helper_method(name); end include SortingPreference include SortingHelper end + end - controller = klass.new + let(:controller) { controller_class.new } + before do allow(controller).to receive(:params).and_return(ActionController::Parameters.new(params)) allow(controller).to receive(:current_user).and_return(user) allow(controller).to receive(:legacy_sort_cookie_name).and_return('issuable_sort') - - controller + allow(controller).to receive(:sorting_field).and_return(:issues_sort) end describe '#set_sort_order_from_user_preference' do - describe 'when sort param given' do + subject { controller.send(:set_sort_order_from_user_preference) } + + context 'when sort param given' do let(:params) { { sort: 'updated_desc' } } context 'when sorting_field is defined' do - before do - controller.class.define_method(:sorting_field) { :issues_sort } - end - it 'sets user_preference with the right value' do - controller.send(:set_sort_order_from_user_preference) - - expect(user.user_preference.reload.issues_sort).to eq('updated_desc') + is_expected.to eq('updated_desc') end end context 'when no sorting_field is defined on the controller' do - it 'does not touch user_preference' do - allow(user).to receive(:user_preference) + before do + allow(controller).to receive(:sorting_field).and_return(nil) + end - controller.send(:set_sort_order_from_user_preference) + it 'does not touch user_preference' do + expect(user).not_to receive(:user_preference) - expect(user).not_to have_received(:user_preference) + subject end end end @@ -53,47 +52,41 @@ describe SortingPreference do let(:params) { {} } before do - controller.class.define_method(:sorting_field) { :issues_sort } + user.user_preference.update!(issues_sort: 'updated_asc') end it 'returns the set preference' do - user.user_preference.update(issues_sort: 'updated_asc') - - sort_preference = controller.send(:set_sort_order_from_user_preference) - - expect(sort_preference).to eq('updated_asc') + is_expected.to eq('updated_asc') end end end describe '#set_set_order_from_cookie' do + subject { controller.send(:set_sort_order_from_cookie) } + before do - controller.class.define_method(:sorting_field) { :issues_sort } + allow(controller).to receive(:cookies).and_return(cookies) end - describe 'when sort param given' do + context 'when sort param given' do let(:cookies) { {} } let(:params) { { sort: 'downvotes_asc' } } it 'sets the cookie with the right values and flags' do - allow(controller).to receive(:cookies).and_return(cookies) + subject - controller.send(:set_sort_order_from_cookie) - - expect(cookies['issue_sort']).to eq({ value: 'popularity', secure: false, httponly: false }) + expect(cookies['issue_sort']).to eq(value: 'popularity', secure: false, httponly: false) end end - describe 'when cookie exists' do + context 'when cookie exists' do let(:cookies) { { 'issue_sort' => 'id_asc' } } let(:params) { {} } it 'sets the cookie with the right values and flags' do - allow(controller).to receive(:cookies).and_return(cookies) - - controller.send(:set_sort_order_from_cookie) + subject - expect(cookies['issue_sort']).to eq({ value: 'created_asc', secure: false, httponly: false }) + expect(cookies['issue_sort']).to eq(value: 'created_asc', secure: false, httponly: false) end end end |