summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeorge Koltsov <gkoltsov@gitlab.com>2019-08-20 19:07:58 +0100
committerGeorge Koltsov <gkoltsov@gitlab.com>2019-08-20 19:07:58 +0100
commite73b60f787ac1b13e3b667faa2130a483ea2cbcf (patch)
treec03881f140d755d27d41f3189b749294d5620775
parent09bdc6a8da2bd5be4fbcc97e083504169e5de53b (diff)
downloadgitlab-ce-e73b60f787ac1b13e3b667faa2130a483ea2cbcf.tar.gz
Refactor sorting_preference specs
-rw-r--r--spec/controllers/concerns/sorting_preference_spec.rb59
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