From c2d742010743a09c9435a1b615b6c8b04e7933d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javi=20Mart=C3=ADn?= Date: Thu, 26 Sep 2019 22:27:32 +0200 Subject: [PATCH] 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. --- spec/models/debate_spec.rb | 18 ++++++++---------- spec/models/proposal_spec.rb | 36 ++++++++++++++++-------------------- 2 files changed, 24 insertions(+), 30 deletions(-) diff --git a/spec/models/debate_spec.rb b/spec/models/debate_spec.rb index 609facfde..f4ed41846 100644 --- a/spec/models/debate_spec.rb +++ b/spec/models/debate_spec.rb @@ -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 diff --git a/spec/models/proposal_spec.rb b/spec/models/proposal_spec.rb index b9fd07ad0..f37f6aad3 100644 --- a/spec/models/proposal_spec.rb +++ b/spec/models/proposal_spec.rb @@ -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