Merges orders_helper functionality inside has_orders concern
Both these objects where using/setting a variable called valid_orders. As a results, some specs where becoming flacky (features/budgets/investments_spec.rb, balloting phase). By putting them together, there is no `valid_orders` variable any more (everything is @valid_orders) and the flackyness is gone.
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.call(c) if valid_orders.respond_to?(:call)
|
||||
@valid_orders = valid_orders
|
||||
@valid_orders = valid_orders.respond_to?(:call) ? valid_orders.call(c) : valid_orders
|
||||
@valid_orders.delete('relevance') unless params[:search].present?
|
||||
@current_order = @valid_orders.include?(params[:order]) ? params[:order] : @valid_orders.first
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1,7 +0,0 @@
|
||||
module OrdersHelper
|
||||
|
||||
def valid_orders
|
||||
@valid_orders.reject { |order| order =='relevance' && params[:search].blank? }
|
||||
end
|
||||
|
||||
end
|
||||
@@ -1,5 +1,5 @@
|
||||
<div class="submenu">
|
||||
<% valid_orders.each do |order| %>
|
||||
<% @valid_orders.each do |order| %>
|
||||
<%= link_to current_path_with_query_params(order: order, page: 1), class: order == @current_order ? 'active' : '' do %>
|
||||
<%= content_tag(order == @current_order ? :h2 : :span) do %>
|
||||
<%= t("#{i18n_namespace}.orders.#{order}") %>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
data-order="<%= @current_order %>"
|
||||
name="order-selector"
|
||||
id="order-selector-participation">
|
||||
<% valid_orders.each do |order| %>
|
||||
<% @valid_orders.each do |order| %>
|
||||
<option <%= 'selected' if order == @current_order %>
|
||||
value='<%= current_path_with_query_params(order: order, page: 1) %>'>
|
||||
<%= t("#{i18n_namespace}.orders.#{order}") %>
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
require 'rails_helper'
|
||||
|
||||
xdescribe 'HasOrders' do
|
||||
describe 'HasOrders' do
|
||||
|
||||
class FakeController < ActionController::Base; end
|
||||
|
||||
controller(FakeController) do
|
||||
include HasOrders
|
||||
has_orders ['created_at', 'votes_count', 'flags_count'], only: :index
|
||||
has_orders -> { ['votes_count', 'flags_count'] }, only: :new
|
||||
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(' ')})"
|
||||
@@ -18,7 +18,7 @@ xdescribe 'HasOrders' do
|
||||
end
|
||||
end
|
||||
|
||||
it "has the valid orders set up" do
|
||||
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
|
||||
@@ -28,6 +28,11 @@ xdescribe 'HasOrders' do
|
||||
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
|
||||
|
||||
describe "the current order" do
|
||||
it "defaults to the first one on the list" do
|
||||
get :index
|
||||
|
||||
@@ -1,18 +0,0 @@
|
||||
require 'rails_helper'
|
||||
|
||||
describe OrdersHelper do
|
||||
|
||||
describe '#valid_orders' do
|
||||
it 'displays relevance when searching' do
|
||||
params[:search] = 'ipsum'
|
||||
assign(:valid_orders, %w(created_at random relevance))
|
||||
expect(helper.valid_orders).to eq %w(created_at random relevance)
|
||||
end
|
||||
|
||||
it 'does not display relevance when not searching' do
|
||||
assign(:valid_orders, %w(created_at random relevance))
|
||||
expect(helper.valid_orders).to eq %w(created_at random)
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
Reference in New Issue
Block a user