adds specs
This commit is contained in:
@@ -515,6 +515,67 @@ feature 'Debates' do
|
||||
end
|
||||
end
|
||||
|
||||
pending "Order by relevance by default", :js do
|
||||
debate1 = create(:debate, title: "Show you got", cached_votes_up: 10)
|
||||
debate2 = create(:debate, title: "Show what you got", cached_votes_up: 1)
|
||||
debate3 = create(:debate, title: "Show you got", cached_votes_up: 100)
|
||||
|
||||
visit debates_path
|
||||
fill_in "search", with: "Show what you got"
|
||||
click_button "Search"
|
||||
|
||||
expect(page).to have_selector('.js-order-selector[data-order="relevance"]')
|
||||
|
||||
within("#debates") do
|
||||
expect(all(".debate")[0].text).to match "Show what you got"
|
||||
expect(all(".debate")[1].text).to match "Show you got"
|
||||
expect(all(".debate")[2].text).to match "Show you got"
|
||||
end
|
||||
end
|
||||
|
||||
pending "Reorder results maintaing search", :js do
|
||||
debate1 = create(:debate, title: "Show you got", cached_votes_up: 10, created_at: 1.week.ago)
|
||||
debate2 = create(:debate, title: "Show what you got", cached_votes_up: 1, created_at: 1.month.ago)
|
||||
debate3 = create(:debate, title: "Show you got", cached_votes_up: 100, created_at: Time.now)
|
||||
debate4 = create(:debate, title: "Do not display", cached_votes_up: 1, created_at: 1.week.ago)
|
||||
|
||||
visit debates_path
|
||||
fill_in "search", with: "Show what you got"
|
||||
click_button "Search"
|
||||
|
||||
select 'newest', from: 'order-selector'
|
||||
expect(page).to have_selector('.js-order-selector[data-order="created_at"]')
|
||||
|
||||
within("#debates") do
|
||||
expect(all(".debate")[0].text).to match "Show you got"
|
||||
expect(all(".debate")[1].text).to match "Show you got"
|
||||
expect(all(".debate")[2].text).to match "Show what you got"
|
||||
expect(page).to_not have_content "Do not display"
|
||||
end
|
||||
end
|
||||
|
||||
scenario 'Index search does not show featured debates' do
|
||||
featured_debates = create_featured_debates
|
||||
debate = create(:debate, title: "Abcdefghi")
|
||||
|
||||
visit debates_path
|
||||
fill_in "search", with: debate.title
|
||||
click_button "Search"
|
||||
|
||||
expect(page).to_not have_selector('#debates .debate-featured')
|
||||
expect(page).to_not have_selector('#featured-debates')
|
||||
end
|
||||
|
||||
scenario 'Index tag does not show featured debates' do
|
||||
featured_debates = create_featured_debates
|
||||
debates = create(:debate, tag_list: "123")
|
||||
|
||||
visit debates_path(tag: "123")
|
||||
|
||||
expect(page).to_not have_selector('#debates .debate-featured')
|
||||
expect(page).to_not have_selector('#featured-debates')
|
||||
end
|
||||
|
||||
scenario 'Conflictive' do
|
||||
good_debate = create(:debate)
|
||||
conflictive_debate = create(:debate, :conflictive)
|
||||
|
||||
@@ -584,6 +584,45 @@ feature 'Proposals' do
|
||||
end
|
||||
end
|
||||
|
||||
scenario "Order by relevance by default", :js do
|
||||
proposal1 = create(:proposal, title: "Show you got", cached_votes_up: 10)
|
||||
proposal2 = create(:proposal, title: "Show what you got", cached_votes_up: 1)
|
||||
proposal3 = create(:proposal, title: "Show you got", cached_votes_up: 100)
|
||||
|
||||
visit proposals_path
|
||||
fill_in "search", with: "Show what you got"
|
||||
click_button "Search"
|
||||
|
||||
expect(page).to have_selector('.js-order-selector[data-order="relevance"]')
|
||||
|
||||
within("#proposals") do
|
||||
expect(all(".proposal")[0].text).to match "Show what you got"
|
||||
expect(all(".proposal")[1].text).to match "Show you got"
|
||||
expect(all(".proposal")[2].text).to match "Show you got"
|
||||
end
|
||||
end
|
||||
|
||||
scenario "Reorder results maintaing search", :js do
|
||||
proposal1 = create(:proposal, title: "Show you got", cached_votes_up: 10, created_at: 1.week.ago)
|
||||
proposal2 = create(:proposal, title: "Show what you got", cached_votes_up: 1, created_at: 1.month.ago)
|
||||
proposal3 = create(:proposal, title: "Show you got", cached_votes_up: 100, created_at: Time.now)
|
||||
proposal4 = create(:proposal, title: "Do not display", cached_votes_up: 1, created_at: 1.week.ago)
|
||||
|
||||
visit proposals_path
|
||||
fill_in "search", with: "Show what you got"
|
||||
click_button "Search"
|
||||
|
||||
select 'newest', from: 'order-selector'
|
||||
expect(page).to have_selector('.js-order-selector[data-order="created_at"]')
|
||||
|
||||
within("#proposals") do
|
||||
expect(all(".proposal")[0].text).to match "Show you got"
|
||||
expect(all(".proposal")[1].text).to match "Show you got"
|
||||
expect(all(".proposal")[2].text).to match "Show what you got"
|
||||
expect(page).to_not have_content "Do not display"
|
||||
end
|
||||
end
|
||||
|
||||
scenario 'Index search does not show featured proposals' do
|
||||
featured_proposals = create_featured_proposals
|
||||
proposal = create(:proposal, title: "Abcdefghi")
|
||||
@@ -596,7 +635,7 @@ feature 'Proposals' do
|
||||
expect(page).to_not have_selector('#featured-proposals')
|
||||
end
|
||||
|
||||
scenario 'Tag index tag does not show featured proposals' do
|
||||
scenario 'Index tag does not show featured proposals' do
|
||||
featured_proposals = create_featured_proposals
|
||||
proposal = create(:proposal, tag_list: "123")
|
||||
|
||||
@@ -606,35 +645,6 @@ feature 'Proposals' do
|
||||
expect(page).to_not have_selector('#featured-proposals')
|
||||
end
|
||||
|
||||
scenario "Reorder search results", :focus do
|
||||
proposal1 = create(:proposal, title: "Show me what you got", cached_votes_up: 1)
|
||||
proposal2 = create(:proposal, title: "Show what you got", cached_votes_up: 100)
|
||||
proposal3 = create(:proposal, title: "Show a what you got", cached_votes_up: 10)
|
||||
|
||||
visit proposals_path
|
||||
fill_in "search", with: "Show me what you got"
|
||||
click_button "Search"
|
||||
|
||||
within("#proposals") do
|
||||
expect(page).to have_css('.proposal', count: 3)
|
||||
|
||||
expect(page).to have_content(proposal1.title)
|
||||
expect(page).to have_content(proposal2.title)
|
||||
expect(page).to have_content(proposal3.title)
|
||||
end
|
||||
|
||||
select 'highest rated', from: 'order-selector'
|
||||
expect(page).to have_selector('.js-order-selector[data-order="confidence_score"]')
|
||||
|
||||
within("#proposals") do
|
||||
expect(page).to have_css('.proposal', count: 3)
|
||||
|
||||
expect(page).to have_content(proposal2.title)
|
||||
expect(page).to have_content(proposal3.title)
|
||||
expect(page).to have_content(proposal1.title)
|
||||
end
|
||||
end
|
||||
|
||||
scenario 'Conflictive' do
|
||||
good_proposal = create(:proposal)
|
||||
conflictive_proposal = create(:proposal, :conflictive)
|
||||
|
||||
18
spec/helpers/orders_helper_spec.rb
Normal file
18
spec/helpers/orders_helper_spec.rb
Normal file
@@ -0,0 +1,18 @@
|
||||
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
|
||||
@@ -548,6 +548,90 @@ describe Debate do
|
||||
|
||||
end
|
||||
|
||||
context "reorder" do
|
||||
|
||||
xit "should be able to reorder by hot_score after searching" do
|
||||
lowest_score = create(:debate, title: 'stop corruption', cached_votes_up: 1)
|
||||
highest_score = create(:debate, title: 'stop corruption', cached_votes_up: 2)
|
||||
average_score = create(:debate, title: 'stop corruption', cached_votes_up: 3)
|
||||
|
||||
lowest_score.update_column(:hot_score, 1)
|
||||
highest_score.update_column(:hot_score, 100)
|
||||
average_score.update_column(:hot_score, 10)
|
||||
|
||||
results = Debate.search('stop corruption')
|
||||
|
||||
expect(results.first).to eq(average_score)
|
||||
expect(results.second).to eq(highest_score)
|
||||
expect(results.third).to eq(lowest_score)
|
||||
|
||||
results = results.sort_by_hot_score
|
||||
|
||||
expect(results.first).to eq(highest_score)
|
||||
expect(results.second).to eq(average_score)
|
||||
expect(results.third).to eq(lowest_score)
|
||||
end
|
||||
|
||||
xit "should be able to reorder by confidence_score after searching" do
|
||||
lowest_score = create(:debate, title: 'stop corruption', cached_votes_up: 1)
|
||||
highest_score = create(:debate, title: 'stop corruption', cached_votes_up: 2)
|
||||
average_score = create(:debate, title: 'stop corruption', cached_votes_up: 3)
|
||||
|
||||
lowest_score.update_column(:confidence_score, 1)
|
||||
highest_score.update_column(:confidence_score, 100)
|
||||
average_score.update_column(:confidence_score, 10)
|
||||
|
||||
results = Debate.search('stop corruption')
|
||||
|
||||
expect(results.first).to eq(average_score)
|
||||
expect(results.second).to eq(highest_score)
|
||||
expect(results.third).to eq(lowest_score)
|
||||
|
||||
results = results.sort_by_confidence_score
|
||||
|
||||
expect(results.first).to eq(highest_score)
|
||||
expect(results.second).to eq(average_score)
|
||||
expect(results.third).to eq(lowest_score)
|
||||
end
|
||||
|
||||
xit "should be able to reorder by created_at after searching" do
|
||||
recent = create(:debate, title: 'stop corruption', cached_votes_up: 1, created_at: 1.week.ago)
|
||||
newest = create(:debate, title: 'stop corruption', cached_votes_up: 2, created_at: Time.now)
|
||||
oldest = create(:debate, title: 'stop corruption', cached_votes_up: 3, created_at: 1.month.ago)
|
||||
|
||||
results = Debate.search('stop corruption')
|
||||
|
||||
expect(results.first).to eq(oldest)
|
||||
expect(results.second).to eq(newest)
|
||||
expect(results.third).to eq(recent)
|
||||
|
||||
results = results.sort_by_created_at
|
||||
|
||||
expect(results.first).to eq(newest)
|
||||
expect(results.second).to eq(recent)
|
||||
expect(results.third).to eq(oldest)
|
||||
end
|
||||
|
||||
xit "should be able to reorder by most commented after searching" do
|
||||
least_commented = create(:debate, title: 'stop corruption', cached_votes_up: 1, comments_count: 1)
|
||||
most_commented = create(:debate, title: 'stop corruption', cached_votes_up: 2, comments_count: 100)
|
||||
some_comments = create(:debate, title: 'stop corruption', cached_votes_up: 3, comments_count: 10)
|
||||
|
||||
results = Debate.search('stop corruption')
|
||||
|
||||
expect(results.first).to eq(some_comments)
|
||||
expect(results.second).to eq(most_commented)
|
||||
expect(results.third).to eq(least_commented)
|
||||
|
||||
results = results.sort_by_most_commented
|
||||
|
||||
expect(results.first).to eq(most_commented)
|
||||
expect(results.second).to eq(some_comments)
|
||||
expect(results.third).to eq(least_commented)
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
context "tags" do
|
||||
|
||||
xit "searches by tags" do
|
||||
|
||||
@@ -486,6 +486,90 @@ describe Proposal do
|
||||
|
||||
end
|
||||
|
||||
context "reorder" do
|
||||
|
||||
it "should be able to reorder by hot_score after searching" do
|
||||
lowest_score = create(:proposal, title: 'stop corruption', cached_votes_up: 1)
|
||||
highest_score = create(:proposal, title: 'stop corruption', cached_votes_up: 2)
|
||||
average_score = create(:proposal, title: 'stop corruption', cached_votes_up: 3)
|
||||
|
||||
lowest_score.update_column(:hot_score, 1)
|
||||
highest_score.update_column(:hot_score, 100)
|
||||
average_score.update_column(:hot_score, 10)
|
||||
|
||||
results = Proposal.search('stop corruption')
|
||||
|
||||
expect(results.first).to eq(average_score)
|
||||
expect(results.second).to eq(highest_score)
|
||||
expect(results.third).to eq(lowest_score)
|
||||
|
||||
results = results.sort_by_hot_score
|
||||
|
||||
expect(results.first).to eq(highest_score)
|
||||
expect(results.second).to eq(average_score)
|
||||
expect(results.third).to eq(lowest_score)
|
||||
end
|
||||
|
||||
it "should be able to reorder by confidence_score after searching" do
|
||||
lowest_score = create(:proposal, title: 'stop corruption', cached_votes_up: 1)
|
||||
highest_score = create(:proposal, title: 'stop corruption', cached_votes_up: 2)
|
||||
average_score = create(:proposal, title: 'stop corruption', cached_votes_up: 3)
|
||||
|
||||
lowest_score.update_column(:confidence_score, 1)
|
||||
highest_score.update_column(:confidence_score, 100)
|
||||
average_score.update_column(:confidence_score, 10)
|
||||
|
||||
results = Proposal.search('stop corruption')
|
||||
|
||||
expect(results.first).to eq(average_score)
|
||||
expect(results.second).to eq(highest_score)
|
||||
expect(results.third).to eq(lowest_score)
|
||||
|
||||
results = results.sort_by_confidence_score
|
||||
|
||||
expect(results.first).to eq(highest_score)
|
||||
expect(results.second).to eq(average_score)
|
||||
expect(results.third).to eq(lowest_score)
|
||||
end
|
||||
|
||||
it "should be able to reorder by created_at after searching" do
|
||||
recent = create(:proposal, title: 'stop corruption', cached_votes_up: 1, created_at: 1.week.ago)
|
||||
newest = create(:proposal, title: 'stop corruption', cached_votes_up: 2, created_at: Time.now)
|
||||
oldest = create(:proposal, title: 'stop corruption', cached_votes_up: 3, created_at: 1.month.ago)
|
||||
|
||||
results = Proposal.search('stop corruption')
|
||||
|
||||
expect(results.first).to eq(oldest)
|
||||
expect(results.second).to eq(newest)
|
||||
expect(results.third).to eq(recent)
|
||||
|
||||
results = results.sort_by_created_at
|
||||
|
||||
expect(results.first).to eq(newest)
|
||||
expect(results.second).to eq(recent)
|
||||
expect(results.third).to eq(oldest)
|
||||
end
|
||||
|
||||
it "should be able to reorder by most commented after searching" do
|
||||
least_commented = create(:proposal, title: 'stop corruption', cached_votes_up: 1, comments_count: 1)
|
||||
most_commented = create(:proposal, title: 'stop corruption', cached_votes_up: 2, comments_count: 100)
|
||||
some_comments = create(:proposal, title: 'stop corruption', cached_votes_up: 3, comments_count: 10)
|
||||
|
||||
results = Proposal.search('stop corruption')
|
||||
|
||||
expect(results.first).to eq(some_comments)
|
||||
expect(results.second).to eq(most_commented)
|
||||
expect(results.third).to eq(least_commented)
|
||||
|
||||
results = results.sort_by_most_commented
|
||||
|
||||
expect(results.first).to eq(most_commented)
|
||||
expect(results.second).to eq(some_comments)
|
||||
expect(results.third).to eq(least_commented)
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
context "no results" do
|
||||
|
||||
it "no words match" do
|
||||
|
||||
@@ -168,4 +168,10 @@ module CommonActions
|
||||
create(:proposal, :with_confidence_score, cached_votes_up: 80)]
|
||||
end
|
||||
|
||||
def create_featured_debates
|
||||
[create(:debate, :with_confidence_score, cached_votes_up: 100),
|
||||
create(:debate, :with_confidence_score, cached_votes_up: 90),
|
||||
create(:debate, :with_confidence_score, cached_votes_up: 80)]
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
@@ -3,5 +3,4 @@ RSpec::Matchers.define :appear_before do |later_content|
|
||||
text = page.text
|
||||
text.index(earlier_content) < text.index(later_content)
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
Reference in New Issue
Block a user