Files
nairobi/spec/controllers/concerns/has_orders_spec.rb
Bertocq 6ec6f64675 Enable RSpec/DescribeClass rubocop rspec cop & fix issues
Manually fixes all issues & "stashed" false positives at .rubocop_todo.yml

Read about the cop at http://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/DescribeClass
2018-01-07 00:20:55 +01:00

61 lines
1.9 KiB
Ruby

require 'rails_helper'
describe HasOrders do
class FakeController < ActionController::Base; end
controller(FakeController) 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 text: "#{@current_order} (#{@valid_orders.join(' ')})"
end
def new
render text: "#{@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, 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, 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, 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, order: 'foobar'
expect(response.body).to eq('created_at (created_at votes_count flags_count)')
end
end
end