Simplify testing arrays exact contents

Instead of testing the contents of each element, we can test the whole
array at once.
This commit is contained in:
Javi Martín
2019-09-26 17:30:38 +02:00
parent 24f14ea772
commit a04a289850
10 changed files with 44 additions and 114 deletions

View File

@@ -994,10 +994,10 @@ describe "Budget Investments" do
visit new_budget_investment_path(budget)
select_options = find("#budget_investment_heading_id").all("option").collect(&:text)
expect(select_options.first).to eq("")
expect(select_options.second).to eq("Toda la ciudad")
expect(select_options.third).to eq("Health: More health professionals")
expect(select_options.fourth).to eq("Health: More hospitals")
expect(select_options).to eq ["",
"Toda la ciudad",
"Health: More health professionals",
"Health: More hospitals"]
end
end

View File

@@ -24,10 +24,7 @@ describe GeozonesHelper do
select_options = geozone_select_options
expect(select_options.size).to eq 3
expect(select_options.first).to eq [g1.name, g1.id]
expect(select_options[1]).to eq [g2.name, g2.id]
expect(select_options.last).to eq [g3.name, g3.id]
expect(select_options).to eq [[g1.name, g1.id], [g2.name, g2.id], [g3.name, g3.id]]
end
end

View File

@@ -218,8 +218,7 @@ describe UserSegments do
create(:user, email: "last@email.com")
emails = UserSegments.user_segment_emails(:all_users)
expect(emails.first).to eq "first@email.com"
expect(emails.last).to eq "last@email.com"
expect(emails).to eq ["first@email.com", "last@email.com"]
end
end

View File

@@ -883,9 +883,7 @@ describe Budget::Investment do
most_voted = create(:budget_investment, cached_votes_up: 10)
some_votes = create(:budget_investment, cached_votes_up: 5)
expect(Budget::Investment.sort_by_confidence_score.first).to eq most_voted
expect(Budget::Investment.sort_by_confidence_score.second).to eq some_votes
expect(Budget::Investment.sort_by_confidence_score.third).to eq least_voted
expect(Budget::Investment.sort_by_confidence_score).to eq [most_voted, some_votes, least_voted]
end
it "orders by confidence_score and then by id" do

View File

@@ -578,8 +578,7 @@ describe Debate do
results = Debate.search("stop corruption")
expect(results.first).to eq(debate_title)
expect(results.second).to eq(debate_description)
expect(results).to eq [debate_title, debate_description]
end
it "orders by weight and then votes" do
@@ -590,10 +589,7 @@ describe Debate do
results = Debate.search("stop corruption")
expect(results.first).to eq(title_most_voted)
expect(results.second).to eq(title_some_votes)
expect(results.third).to eq(title_least_voted)
expect(results.fourth).to eq(description_most_voted)
expect(results).to eq [title_most_voted, title_some_votes, title_least_voted, description_most_voted]
end
it "gives much more weight to word matches than votes" do
@@ -602,8 +598,7 @@ describe Debate do
results = Debate.search("stop corruption")
expect(results.first).to eq(exact_title_few_votes)
expect(results.second).to eq(similar_title_many_votes)
expect(results).to eq [exact_title_few_votes, similar_title_many_votes]
end
end
@@ -621,15 +616,11 @@ describe Debate do
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)
expect(results).to eq [average_score, highest_score, 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)
expect(results).to eq [highest_score, average_score, lowest_score]
end
it "is able to reorder by confidence_score after searching" do
@@ -643,15 +634,11 @@ describe Debate do
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)
expect(results).to eq [average_score, highest_score, 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)
expect(results).to eq [highest_score, average_score, lowest_score]
end
it "is able to reorder by created_at after searching" do
@@ -661,15 +648,11 @@ describe Debate do
results = Debate.search("stop corruption")
expect(results.first).to eq(oldest)
expect(results.second).to eq(newest)
expect(results.third).to eq(recent)
expect(results).to eq [oldest, newest, 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)
expect(results).to eq [newest, recent, oldest]
end
it "is able to reorder by most commented after searching" do
@@ -679,15 +662,11 @@ describe Debate do
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)
expect(results).to eq [some_comments, most_commented, 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)
expect(results).to eq [most_commented, some_comments, least_commented]
end
end
@@ -772,11 +751,9 @@ describe Debate do
proposal = create(:proposal, tag_list: "Sport")
create(:follow, followable: proposal, user: user)
result = Debate.recommendations(user).sort_by_recommendations
results = Debate.recommendations(user).sort_by_recommendations
expect(result.first).to eq debate3
expect(result.second).to eq debate2
expect(result.third).to eq debate1
expect(results).to eq [debate3, debate2, debate1]
end
it "returns debates related with user interests" do

View File

@@ -75,9 +75,7 @@ describe Poll::Officer do
assigned_polls = officer.voting_days_assigned_polls
expect(assigned_polls.first).to eq(poll_2)
expect(assigned_polls.second).to eq(poll_1)
expect(assigned_polls.last).to eq(poll_3)
expect(assigned_polls).to eq [poll_2, poll_1, poll_3]
end
end
@@ -126,9 +124,7 @@ describe Poll::Officer do
assigned_polls = officer.final_days_assigned_polls
expect(assigned_polls.first).to eq(poll_2)
expect(assigned_polls.second).to eq(poll_1)
expect(assigned_polls.last).to eq(poll_3)
expect(assigned_polls).to eq [poll_2, poll_1, poll_3]
end
end

View File

@@ -120,10 +120,8 @@ describe Poll::PairAnswer do
describe "#answers" do
let(:pair_answer) { create(:poll_pair_answer) }
it "returns and array of answers" do
expect(pair_answer.answers).to be_a Array
expect(pair_answer.answers[0]).to eq(pair_answer.answer_left)
expect(pair_answer.answers[1]).to eq(pair_answer.answer_right)
it "returns an array of answers" do
expect(pair_answer.answers).to eq [pair_answer.answer_left, pair_answer.answer_right]
end
end

View File

@@ -613,9 +613,7 @@ describe Proposal do
results = Proposal.search("stop corruption")
expect(results.first).to eq(proposal_title)
expect(results.second).to eq(proposal_summary)
expect(results.third).to eq(proposal_description)
expect(results).to eq [proposal_title, proposal_summary, proposal_description]
end
it "orders by weight and then by votes" do
@@ -627,10 +625,7 @@ describe Proposal do
results = Proposal.search("stop corruption")
expect(results.first).to eq(title_most_voted)
expect(results.second).to eq(title_some_votes)
expect(results.third).to eq(title_least_voted)
expect(results.fourth).to eq(summary_most_voted)
expect(results).to eq [title_most_voted, title_some_votes, title_least_voted, summary_most_voted]
end
it "gives much more weight to word matches than votes" do
@@ -639,8 +634,7 @@ describe Proposal do
results = Proposal.search("stop corruption")
expect(results.first).to eq(exact_title_few_votes)
expect(results.second).to eq(similar_title_many_votes)
expect(results).to eq [exact_title_few_votes, similar_title_many_votes]
end
end
@@ -658,15 +652,11 @@ describe Proposal do
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)
expect(results).to eq [average_score, highest_score, 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)
expect(results).to eq [highest_score, average_score, lowest_score]
end
it "is able to reorder by confidence_score after searching" do
@@ -680,15 +670,11 @@ describe Proposal do
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)
expect(results).to eq [average_score, highest_score, 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)
expect(results).to eq [highest_score, average_score, lowest_score]
end
it "is able to reorder by created_at after searching" do
@@ -698,15 +684,11 @@ describe Proposal do
results = Proposal.search("stop corruption")
expect(results.first).to eq(oldest)
expect(results.second).to eq(newest)
expect(results.third).to eq(recent)
expect(results).to eq [oldest, newest, 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)
expect(results).to eq [newest, recent, oldest]
end
it "is able to reorder by most commented after searching" do
@@ -716,15 +698,11 @@ describe Proposal do
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)
expect(results).to eq [some_comments, most_commented, 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)
expect(results).to eq [most_commented, some_comments, least_commented]
end
end
@@ -824,15 +802,13 @@ describe Proposal do
it "orders proposals by votes" do
create(:tag, :category, name: "culture")
create(:proposal, tag_list: "culture").update_column(:confidence_score, 2)
create(:proposal, tag_list: "culture").update_column(:confidence_score, 2)
create(:proposal, tag_list: "culture").update_column(:confidence_score, 10)
create(:proposal, tag_list: "culture").update_column(:confidence_score, 5)
results = Proposal.for_summary.values.flatten
expect(results.first.confidence_score).to be(10)
expect(results.second.confidence_score).to be(5)
expect(results.third.confidence_score).to be(2)
expect(results.map(&:confidence_score)).to eq [10, 5, 2]
end
it "orders groups alphabetically" do
@@ -846,9 +822,7 @@ describe Proposal do
results = Proposal.for_summary.values.flatten
expect(results.first).to eq(culture_proposal)
expect(results.second).to eq(health_proposal)
expect(results.third).to eq(social_proposal)
expect(results).to eq [culture_proposal, health_proposal, social_proposal]
end
it "returns proposals grouped by tag" do
@@ -992,11 +966,9 @@ describe Proposal do
proposal4 = create(:proposal, tag_list: "Sport")
create(:follow, followable: proposal4, user: user)
result = Proposal.recommendations(user).sort_by_recommendations
results = Proposal.recommendations(user).sort_by_recommendations
expect(result.first).to eq proposal3
expect(result.second).to eq proposal2
expect(result.third).to eq proposal1
expect(results).to eq [proposal3, proposal2, proposal1]
end
it "returns proposals related with user interests" do

View File

@@ -97,8 +97,7 @@ describe TagCloud do
tag_cloud = TagCloud.new(Proposal)
expect(tag_names(tag_cloud).first).to eq "participation"
expect(tag_names(tag_cloud).second).to eq "corruption"
expect(tag_names(tag_cloud)).to eq ["participation", "corruption"]
end
it "orders tags by count and then by name" do
@@ -108,9 +107,7 @@ describe TagCloud do
tag_cloud = TagCloud.new(Proposal)
expect(tag_names(tag_cloud).first).to eq "health"
expect(tag_names(tag_cloud).second).to eq "participation"
expect(tag_names(tag_cloud).third).to eq "corruption"
expect(tag_names(tag_cloud)).to eq ["health", "participation", "corruption"]
end
it "returns a maximum of 10 tags" do

View File

@@ -37,9 +37,7 @@ describe Topic do
results = community.topics.sort_by_newest
expect(results.first).to eq(topic3)
expect(results.second).to eq(topic2)
expect(results.third).to eq(topic1)
expect(results).to eq [topic3, topic2, topic1]
end
it "orders by oldest" do
@@ -68,9 +66,7 @@ describe Topic do
results = community.topics.sort_by_most_commented
expect(results.first).to eq(topic1)
expect(results.second).to eq(topic2)
expect(results.third).to eq(topic3)
expect(results).to eq [topic1, topic2, topic3]
end
end