Adds 3 orders for comments: most_voted, newest, oldest
This commit is contained in:
@@ -7,7 +7,7 @@ class DebatesController < ApplicationController
|
||||
before_action :authenticate_user!, except: [:index, :show]
|
||||
|
||||
has_orders %w{hot_score confidence_score created_at most_commented random}, only: :index
|
||||
has_orders %w{confidence_score created_at}, only: :show
|
||||
has_orders %w{most_voted newest oldest}, only: :show
|
||||
|
||||
load_and_authorize_resource
|
||||
respond_to :html, :js
|
||||
|
||||
@@ -7,7 +7,7 @@ class ProposalsController < ApplicationController
|
||||
before_action :authenticate_user!, except: [:index, :show]
|
||||
|
||||
has_orders %w{hot_score confidence_score created_at most_commented random}, only: :index
|
||||
has_orders %w{confidence_score created_at}, only: :show
|
||||
has_orders %w{most_voted newest oldest}, only: :show
|
||||
|
||||
load_and_authorize_resource
|
||||
respond_to :html, :js
|
||||
|
||||
@@ -22,10 +22,15 @@ class Comment < ActiveRecord::Base
|
||||
scope :for_render, -> { with_hidden.includes(user: :organization) }
|
||||
scope :with_visible_author, -> { joins(:user).where("users.hidden_at IS NULL") }
|
||||
scope :sort_by_flags, -> { order(flags_count: :desc, updated_at: :desc) }
|
||||
scope :sort_by_confidence_score , -> { order(confidence_score: :desc, created_at: :desc) }
|
||||
scope :sort_descendants_by_confidence_score , -> { order(confidence_score: :desc, created_at: :asc) }
|
||||
scope :sort_by_created_at, -> { order(created_at: :desc) }
|
||||
scope :sort_descendants_by_created_at, -> { order(created_at: :asc) }
|
||||
|
||||
scope :sort_by_most_voted , -> { order(confidence_score: :desc, created_at: :desc) }
|
||||
scope :sort_descendants_by_most_voted , -> { order(confidence_score: :desc, created_at: :asc) }
|
||||
|
||||
scope :sort_by_newest, -> { order(created_at: :desc) }
|
||||
scope :sort_descendants_by_newest, -> { order(created_at: :desc) }
|
||||
|
||||
scope :sort_by_oldest, -> { order(created_at: :asc) }
|
||||
scope :sort_descendants_by_oldest, -> { order(created_at: :asc) }
|
||||
|
||||
after_create :call_after_commented
|
||||
|
||||
|
||||
@@ -241,8 +241,9 @@ en:
|
||||
comments:
|
||||
select_order: "Sort by"
|
||||
orders:
|
||||
confidence_score: "Most voted"
|
||||
created_at: "Newest"
|
||||
most_voted: "Most voted"
|
||||
newest: "Newest first"
|
||||
oldest: "Oldest first"
|
||||
form:
|
||||
leave_comment: "Leave your comment"
|
||||
comment_as_moderator: "Comment as moderator"
|
||||
|
||||
@@ -241,8 +241,9 @@ es:
|
||||
comments:
|
||||
select_order: "Ordenar por"
|
||||
orders:
|
||||
confidence_score: "Más votados"
|
||||
created_at: "Más nuevos"
|
||||
most_voted: "Más votados"
|
||||
newest: "Más nuevos primero"
|
||||
oldest: "Más antiguos primero"
|
||||
form:
|
||||
leave_comment: "Deja tu comentario"
|
||||
comment_as_moderator: "Comentar como moderador"
|
||||
|
||||
@@ -25,15 +25,20 @@ feature 'Commenting debates' do
|
||||
c2 = create(:comment, :with_confidence_score, commentable: debate, cached_votes_up: 10, cached_votes_total: 12, created_at: Time.now - 1)
|
||||
c3 = create(:comment, :with_confidence_score, commentable: debate, cached_votes_up: 1, cached_votes_total: 2, created_at: Time.now)
|
||||
|
||||
visit debate_path(debate)
|
||||
visit debate_path(debate, order: :most_voted)
|
||||
|
||||
expect(c1.body).to appear_before(c2.body)
|
||||
expect(c2.body).to appear_before(c3.body)
|
||||
|
||||
visit debate_path(debate, order: :created_at)
|
||||
visit debate_path(debate, order: :newest)
|
||||
|
||||
expect(c3.body).to appear_before(c2.body)
|
||||
expect(c2.body).to appear_before(c1.body)
|
||||
|
||||
visit debate_path(debate, order: :oldest)
|
||||
|
||||
expect(c1.body).to appear_before(c2.body)
|
||||
expect(c2.body).to appear_before(c3.body)
|
||||
end
|
||||
|
||||
scenario 'Creation date works differently in roots and in child comments, even when sorting by confidence_score' do
|
||||
@@ -42,14 +47,19 @@ feature 'Commenting debates' do
|
||||
old_child = create(:comment, commentable: debate, parent_id: new_root.id, created_at: Time.now - 10)
|
||||
new_child = create(:comment, commentable: debate, parent_id: new_root.id, created_at: Time.now)
|
||||
|
||||
visit debate_path(debate)
|
||||
visit debate_path(debate, order: :most_voted)
|
||||
|
||||
expect(new_root.body).to appear_before(old_root.body)
|
||||
expect(old_child.body).to appear_before(new_child.body)
|
||||
|
||||
visit debate_path(debate, order: :created_at)
|
||||
visit debate_path(debate, order: :newest)
|
||||
|
||||
expect(new_root.body).to appear_before(old_root.body)
|
||||
expect(new_child.body).to appear_before(old_child.body)
|
||||
|
||||
visit debate_path(debate, order: :oldest)
|
||||
|
||||
expect(old_root.body).to appear_before(new_root.body)
|
||||
expect(old_child.body).to appear_before(new_child.body)
|
||||
end
|
||||
|
||||
|
||||
@@ -25,31 +25,41 @@ feature 'Commenting proposals' do
|
||||
c2 = create(:comment, :with_confidence_score, commentable: proposal, cached_votes_up: 10, cached_votes_total: 12, created_at: Time.now - 1)
|
||||
c3 = create(:comment, :with_confidence_score, commentable: proposal, cached_votes_up: 1, cached_votes_total: 2, created_at: Time.now)
|
||||
|
||||
visit proposal_path(proposal)
|
||||
visit proposal_path(proposal, order: :most_voted)
|
||||
|
||||
expect(c1.body).to appear_before(c2.body)
|
||||
expect(c2.body).to appear_before(c3.body)
|
||||
|
||||
visit proposal_path(proposal, order: :created_at)
|
||||
visit proposal_path(proposal, order: :newest)
|
||||
|
||||
expect(c3.body).to appear_before(c2.body)
|
||||
expect(c2.body).to appear_before(c1.body)
|
||||
|
||||
visit proposal_path(proposal, order: :oldest)
|
||||
|
||||
expect(c1.body).to appear_before(c2.body)
|
||||
expect(c2.body).to appear_before(c3.body)
|
||||
end
|
||||
|
||||
scenario 'Creation date works differently in roots and in child comments, even when sorting by confidence_score' do
|
||||
scenario 'Creation date works differently in roots and in child comments, when sorting by confidence_score' do
|
||||
old_root = create(:comment, commentable: proposal, created_at: Time.now - 10)
|
||||
new_root = create(:comment, commentable: proposal, created_at: Time.now)
|
||||
old_child = create(:comment, commentable: proposal, parent_id: new_root.id, created_at: Time.now - 10)
|
||||
new_child = create(:comment, commentable: proposal, parent_id: new_root.id, created_at: Time.now)
|
||||
|
||||
visit proposal_path(proposal)
|
||||
visit proposal_path(proposal, order: :most_voted)
|
||||
|
||||
expect(new_root.body).to appear_before(old_root.body)
|
||||
expect(old_child.body).to appear_before(new_child.body)
|
||||
|
||||
visit proposal_path(proposal, order: :created_at)
|
||||
visit proposal_path(proposal, order: :newest)
|
||||
|
||||
expect(new_root.body).to appear_before(old_root.body)
|
||||
expect(new_child.body).to appear_before(old_child.body)
|
||||
|
||||
visit proposal_path(proposal, order: :oldest)
|
||||
|
||||
expect(old_root.body).to appear_before(new_root.body)
|
||||
expect(old_child.body).to appear_before(new_child.body)
|
||||
end
|
||||
|
||||
|
||||
Reference in New Issue
Block a user