Simplify testing records exclusion

When we already have tests checking which records are included, in the
tests testing records are not included we can just generate records
which will not be included and test against an empty array.

We were already using this approach in some tests. This way we also
avoid useless assignments.
This commit is contained in:
Javi Martín
2019-09-26 22:27:32 +02:00
parent 35143ac43e
commit c2d7420107
2 changed files with 24 additions and 30 deletions

View File

@@ -748,7 +748,7 @@ describe Debate do
expect(Debate.recommendations(user)).to be_empty
end
it "returns debates ordered by cached_votes_total" do
it "returns debates related to the user's interests ordered by cached_votes_total" do
debate1 = create(:debate, cached_votes_total: 1, tag_list: "Sport")
debate2 = create(:debate, cached_votes_total: 5, tag_list: "Sport")
debate3 = create(:debate, cached_votes_total: 10, tag_list: "Sport")
@@ -760,26 +760,24 @@ describe Debate do
expect(results).to eq [debate3, debate2, debate1]
end
it "returns debates related with user interests" do
debate1 = create(:debate, tag_list: "Sport")
debate2 = create(:debate, tag_list: "Politics")
it "does not return debates unrelated to user interests" do
proposal1 = create(:proposal, tag_list: "Sport")
create(:follow, followable: proposal1, user: user)
debate2 = create(:debate, tag_list: "Politics")
result = Debate.recommendations(user)
results = Debate.recommendations(user)
expect(result).to eq [debate1]
expect(results).to be_empty
end
it "does not return debates when user is the author" do
debate1 = create(:debate, author: user, tag_list: "Sport")
debate2 = create(:debate, tag_list: "Sport")
proposal = create(:proposal, tag_list: "Sport")
create(:follow, followable: proposal, user: user)
debate1 = create(:debate, author: user, tag_list: "Sport")
result = Debate.recommendations(user)
results = Debate.recommendations(user)
expect(result).to eq [debate2]
expect(results).to be_empty
end
end

View File

@@ -962,7 +962,7 @@ describe Proposal do
expect(Proposal.recommendations(user)).to be_empty
end
it "returns proposals ordered by cached_votes_up" do
it "returns proposals related to the user's interests ordered by cached_votes_up" do
proposal1 = create(:proposal, cached_votes_up: 1, tag_list: "Sport")
proposal2 = create(:proposal, cached_votes_up: 5, tag_list: "Sport")
proposal3 = create(:proposal, cached_votes_up: 10, tag_list: "Sport")
@@ -974,58 +974,54 @@ describe Proposal do
expect(results).to eq [proposal3, proposal2, proposal1]
end
it "returns proposals related with user interests" do
it "does not return proposals unrelated to user interests" do
proposal1 = create(:proposal, tag_list: "Sport")
proposal2 = create(:proposal, tag_list: "Sport")
proposal3 = create(:proposal, tag_list: "Politics")
proposal2 = create(:proposal, tag_list: "Politics")
create(:follow, followable: proposal1, user: user)
result = Proposal.recommendations(user)
results = Proposal.recommendations(user)
expect(result).to eq [proposal2]
expect(results).to be_empty
end
it "does not return proposals when user is follower" do
proposal1 = create(:proposal, tag_list: "Sport")
create(:follow, followable: proposal1, user: user)
result = Proposal.recommendations(user)
results = Proposal.recommendations(user)
expect(result).to be_empty
expect(results).to be_empty
end
it "does not return proposals when user is the author" do
proposal1 = create(:proposal, author: user, tag_list: "Sport")
proposal2 = create(:proposal, tag_list: "Sport")
proposal3 = create(:proposal, tag_list: "Sport")
create(:follow, followable: proposal3, user: user)
proposal1 = create(:proposal, tag_list: "Sport")
proposal2 = create(:proposal, author: user, tag_list: "Sport")
create(:follow, followable: proposal1, user: user)
result = Proposal.recommendations(user)
results = Proposal.recommendations(user)
expect(result).to eq [proposal2]
expect(results).to be_empty
end
it "does not return archived proposals" do
proposal1 = create(:proposal, tag_list: "Sport")
proposal2 = create(:proposal, tag_list: "Sport")
archived_proposal = create(:proposal, :archived, tag_list: "Sport")
create(:follow, followable: proposal1, user: user)
result = Proposal.recommendations(user)
results = Proposal.recommendations(user)
expect(result).to eq([proposal2])
expect(results).to be_empty
end
it "does not return already supported proposals" do
proposal1 = create(:proposal, tag_list: "Health")
proposal2 = create(:proposal, tag_list: "Health")
proposal3 = create(:proposal, tag_list: "Health")
create(:vote, votable: proposal1, voter: user)
create(:follow, followable: proposal2, user: user)
result = Proposal.recommendations(user)
results = Proposal.recommendations(user)
expect(result).to eq([proposal3])
expect(results).to be_empty
end
end