This rule was added in rubocop 1.79. We were inconsistent about it, so we're adding it to get more consistency.
59 lines
1.9 KiB
Ruby
59 lines
1.9 KiB
Ruby
require "rails_helper"
|
|
|
|
describe HasOrders do
|
|
controller(ActionController::Base) do
|
|
include HasOrders
|
|
|
|
has_orders ["created_at", "votes_count", "flags_count", "relevance"], only: :index
|
|
has_orders ->(c) { ["votes_count", "flags_count"] }, only: :new
|
|
|
|
def index
|
|
render plain: "#{@current_order} (#{@valid_orders.join(" ")})"
|
|
end
|
|
|
|
def new
|
|
render plain: "#{@current_order} (#{@valid_orders.join(" ")})"
|
|
end
|
|
end
|
|
|
|
it "displays all the orders except relevance when not searching" do
|
|
get :index
|
|
expect(response.body).to eq("created_at (created_at votes_count flags_count)")
|
|
end
|
|
|
|
it "allows specifying the orders via a lambda" do
|
|
get :new
|
|
expect(response.body).to eq("votes_count (votes_count flags_count)")
|
|
end
|
|
|
|
it "displays relevance when searching" do
|
|
get :index, params: { search: "ipsum" }
|
|
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, params: { 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
|
|
expect(response.body).to eq("created_at (created_at votes_count flags_count)")
|
|
end
|
|
|
|
it "can be changed by the order param" do
|
|
get :index, params: { order: "votes_count" }
|
|
expect(response.body).to eq("votes_count (created_at votes_count flags_count)")
|
|
end
|
|
|
|
it "defaults to the first one on the list if given a bogus order" do
|
|
get :index, params: { order: "foobar" }
|
|
expect(response.body).to eq("created_at (created_at votes_count flags_count)")
|
|
end
|
|
end
|
|
end
|