adds 'most commented' order to debates
This commit is contained in:
@@ -82,7 +82,7 @@ class DebatesController < ApplicationController
|
|||||||
end
|
end
|
||||||
|
|
||||||
def parse_order
|
def parse_order
|
||||||
@valid_orders = ['created_at', 'score']
|
@valid_orders = ['created_at', 'score', 'most_commented']
|
||||||
@order = @valid_orders.include?(params[:order]) ? params[:order] : 'created_at'
|
@order = @valid_orders.include?(params[:order]) ? params[:order] : 'created_at'
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -30,6 +30,7 @@ class Debate < ActiveRecord::Base
|
|||||||
scope :for_render, -> { includes(:tags) }
|
scope :for_render, -> { includes(:tags) }
|
||||||
scope :sort_by_score , -> { reorder(cached_votes_score: :desc) }
|
scope :sort_by_score , -> { reorder(cached_votes_score: :desc) }
|
||||||
scope :sort_by_created_at, -> { reorder(created_at: :desc) }
|
scope :sort_by_created_at, -> { reorder(created_at: :desc) }
|
||||||
|
scope :sort_by_most_commented, -> { reorder(comments_count: :desc) }
|
||||||
|
|
||||||
# Ahoy setup
|
# Ahoy setup
|
||||||
visitable # Ahoy will automatically assign visit_id on create
|
visitable # Ahoy will automatically assign visit_id on create
|
||||||
|
|||||||
@@ -71,6 +71,7 @@ en:
|
|||||||
orders:
|
orders:
|
||||||
created_at: newest
|
created_at: newest
|
||||||
score: best rated
|
score: best rated
|
||||||
|
most_commented: "most commented"
|
||||||
filter_topic:
|
filter_topic:
|
||||||
one: "You are seeing one debate with the topic '%{topic}'"
|
one: "You are seeing one debate with the topic '%{topic}'"
|
||||||
other: "You are seeing %{count} debates with the topic '%{topic}'"
|
other: "You are seeing %{count} debates with the topic '%{topic}'"
|
||||||
|
|||||||
@@ -71,6 +71,7 @@ es:
|
|||||||
orders:
|
orders:
|
||||||
created_at: "más nuevos"
|
created_at: "más nuevos"
|
||||||
score: "mejor valorados"
|
score: "mejor valorados"
|
||||||
|
most_commented: "más comentados"
|
||||||
filter_topic:
|
filter_topic:
|
||||||
one: "Estás viendo un debate con el tema ''%{topic}''"
|
one: "Estás viendo un debate con el tema ''%{topic}''"
|
||||||
other: "Estás viendo %{count} debates con el tema '%{topic}'"
|
other: "Estás viendo %{count} debates con el tema '%{topic}'"
|
||||||
|
|||||||
@@ -353,12 +353,14 @@ feature 'Debates' do
|
|||||||
feature 'Debate index order filters', :js do
|
feature 'Debate index order filters', :js do
|
||||||
|
|
||||||
before do
|
before do
|
||||||
@most_voted_debate = create(:debate)
|
@most_commented_debate = create(:debate)
|
||||||
@most_score_debate = create(:debate)
|
@most_score_debate = create(:debate)
|
||||||
@most_recent_debate = create(:debate)
|
@most_recent_debate = create(:debate)
|
||||||
|
create_list(:comment, 2, commentable: @most_commented_debate)
|
||||||
create_list(:vote, 2, votable: @most_score_debate)
|
create_list(:vote, 2, votable: @most_score_debate)
|
||||||
create_list(:vote, 2, votable: @most_voted_debate, vote_flag: false)
|
create_list(:vote, 2, votable: @most_recent_debate, vote_flag: false)
|
||||||
create(:vote, votable: @most_voted_debate)
|
create(:vote, votable: @most_recent_debate)
|
||||||
|
create(:comment, commentable: @most_recent_debate)
|
||||||
end
|
end
|
||||||
|
|
||||||
scenario 'Default order is created_at' do
|
scenario 'Default order is created_at' do
|
||||||
@@ -366,6 +368,7 @@ feature 'Debates' do
|
|||||||
|
|
||||||
expect(page).to have_select('order-selector', selected: 'newest')
|
expect(page).to have_select('order-selector', selected: 'newest')
|
||||||
expect(@most_recent_debate.title).to appear_before(@most_score_debate.title)
|
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
|
end
|
||||||
|
|
||||||
scenario 'Debates are ordered by best rated' do
|
scenario 'Debates are ordered by best rated' do
|
||||||
@@ -376,8 +379,20 @@ feature 'Debates' do
|
|||||||
expect(find("#debates .debate", match: :first)).to have_content(@most_score_debate.title)
|
expect(find("#debates .debate", match: :first)).to have_content(@most_score_debate.title)
|
||||||
|
|
||||||
expect(current_url).to include('order=score')
|
expect(current_url).to include('order=score')
|
||||||
expect(@most_score_debate.title).to appear_before(@most_recent_debate.title)
|
expect(@most_score_debate.title).to appear_before(@most_commented_debate.title)
|
||||||
expect(@most_recent_debate.title).to appear_before(@most_voted_debate.title)
|
expect(@most_commented_debate.title).to appear_before(@most_recent_debate.title)
|
||||||
|
end
|
||||||
|
|
||||||
|
scenario 'Debates are ordered by most commented' do
|
||||||
|
visit debates_path
|
||||||
|
|
||||||
|
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)
|
||||||
|
|
||||||
|
expect(current_url).to include('order=most_commented')
|
||||||
|
expect(@most_commented_debate.title).to appear_before(@most_recent_debate.title)
|
||||||
|
expect(@most_recent_debate.title).to appear_before(@most_score_debate.title)
|
||||||
end
|
end
|
||||||
|
|
||||||
scenario 'Debates are ordered by newest' do
|
scenario 'Debates are ordered by newest' do
|
||||||
@@ -392,7 +407,7 @@ feature 'Debates' do
|
|||||||
|
|
||||||
expect(current_url).to include('order=created_at')
|
expect(current_url).to include('order=created_at')
|
||||||
expect(@most_recent_debate.title).to appear_before(@most_score_debate.title)
|
expect(@most_recent_debate.title).to appear_before(@most_score_debate.title)
|
||||||
expect(@most_score_debate.title).to appear_before(@most_voted_debate.title)
|
expect(@most_score_debate.title).to appear_before(@most_commented_debate.title)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user