adds random order to debates' index

This commit is contained in:
Juanjo Bazán
2015-09-03 18:50:19 +02:00
parent dbfa35c444
commit 559b60e63f
5 changed files with 24 additions and 2 deletions

View File

@@ -82,7 +82,7 @@ class DebatesController < ApplicationController
end
def parse_order
@valid_orders = ['created_at', 'score', 'most_commented']
@valid_orders = ['created_at', 'score', 'most_commented', 'random']
@order = @valid_orders.include?(params[:order]) ? params[:order] : 'created_at'
end

View File

@@ -31,6 +31,7 @@ class Debate < ActiveRecord::Base
scope :sort_by_score , -> { reorder(cached_votes_score: :desc) }
scope :sort_by_created_at, -> { reorder(created_at: :desc) }
scope :sort_by_most_commented, -> { reorder(comments_count: :desc) }
scope :sort_by_random, -> { reorder("RANDOM()") }
# Ahoy setup
visitable # Ahoy will automatically assign visit_id on create

View File

@@ -71,7 +71,8 @@ en:
orders:
created_at: newest
score: best rated
most_commented: "most commented"
most_commented: most commented
random: random
filter_topic:
one: "You are seeing one debate with the topic '%{topic}'"
other: "You are seeing %{count} debates with the topic '%{topic}'"

View File

@@ -72,6 +72,7 @@ es:
created_at: "más nuevos"
score: "mejor valorados"
most_commented: "más comentados"
random: "aleatorio"
filter_topic:
one: "Estás viendo un debate con el tema ''%{topic}''"
other: "Estás viendo %{count} debates con el tema '%{topic}'"

View File

@@ -409,5 +409,24 @@ feature 'Debates' do
expect(@most_recent_debate.title).to appear_before(@most_score_debate.title)
expect(@most_score_debate.title).to appear_before(@most_commented_debate.title)
end
scenario 'Debates are ordered randomly' do
create_list(:debate, 12)
visit debates_path
select 'random', from: 'order-selector'
expect(page).to have_select('order-selector', selected: 'random')
debates_first_time = find("#debates").text
select 'most commented', from: 'order-selector'
expect(page).to have_select('order-selector', selected: 'most commented')
expect(find("#debates .debate", match: :first)).to have_content(@most_commented_debate.title)
select 'random', from: 'order-selector'
expect(page).to have_select('order-selector', selected: 'random')
debates_second_time = find("#debates").text
expect(debates_first_time).to_not eq(debates_second_time)
end
end
end