Fixes issue in has_orders concern
This commit is contained in:
@@ -4,8 +4,8 @@ module HasOrders
|
||||
class_methods do
|
||||
def has_orders(valid_orders, *args)
|
||||
before_action(*args) do |c|
|
||||
@valid_orders = valid_orders.respond_to?(:call) ? valid_orders.call(c) : valid_orders
|
||||
@valid_orders.delete('relevance') unless params[:search].present?
|
||||
@valid_orders = valid_orders.respond_to?(:call) ? valid_orders.call(c) : valid_orders.dup
|
||||
@valid_orders.delete('relevance') if params[:search].blank?
|
||||
@current_order = @valid_orders.include?(params[:order]) ? params[:order] : @valid_orders.first
|
||||
end
|
||||
end
|
||||
|
||||
@@ -33,6 +33,14 @@ describe 'HasOrders' do
|
||||
expect(response.body).to eq('created_at (created_at votes_count flags_count relevance)')
|
||||
end
|
||||
|
||||
it "does not overwrite the has_orders options when doing several requests" do
|
||||
get :index
|
||||
# Since has_orders did valid_options.delete, the first call to :index might remove 'relevance' from
|
||||
# the list by mistake.
|
||||
get :index, search: 'ipsum'
|
||||
expect(response.body).to eq('created_at (created_at votes_count flags_count relevance)')
|
||||
end
|
||||
|
||||
describe "the current order" do
|
||||
it "defaults to the first one on the list" do
|
||||
get :index
|
||||
|
||||
Reference in New Issue
Block a user