Files
nairobi/spec/models/widget/feed_spec.rb
taitus 7e826a9cb4 Do not show unpublished proposals on the homepage
The chances of an unpublished proposal appearing on the homepage was
very low because only the proposals with the most votes appear there and
unpublished proposals don't have any votes. However, it was technically
possible on new sites where only a few proposals had been created.
2021-09-08 12:38:54 +02:00

84 lines
2.4 KiB
Ruby

require "rails_helper"
describe Widget::Feed do
let(:feed) { build(:widget_feed) }
context "validations" do
it "is valid" do
expect(feed).to be_valid
end
end
context "kinds" do
describe "#proposals" do
it "returns the most active proposals" do
best_proposal = create(:proposal, title: "Best proposal")
best_proposal.update_column(:hot_score, 10)
worst_proposal = create(:proposal, title: "Worst proposal")
worst_proposal.update_column(:hot_score, 2)
even_worst_proposal = create(:proposal, title: "Worst proposal")
even_worst_proposal.update_column(:hot_score, 1)
medium_proposal = create(:proposal, title: "Medium proposal")
medium_proposal.update_column(:hot_score, 5)
feed = build(:widget_feed, kind: "proposals")
expect(feed.proposals).to eq([best_proposal, medium_proposal, worst_proposal])
end
it "does not return unpublished proposals" do
create(:proposal, :draft, title: "Draft proposal")
feed = build(:widget_feed, kind: "proposals")
expect(feed.proposals).to be_empty
end
end
describe "#debates" do
it "returns the most active debates" do
best_debate = create(:debate, title: "Best debate")
best_debate.update_column(:hot_score, 10)
worst_debate = create(:debate, title: "Worst debate")
worst_debate.update_column(:hot_score, 2)
even_worst_debate = create(:debate, title: "Worst debate")
even_worst_debate.update_column(:hot_score, 1)
medium_debate = create(:debate, title: "Medium debate")
medium_debate.update_column(:hot_score, 5)
feed = build(:widget_feed, kind: "debates")
expect(feed.debates).to eq([best_debate, medium_debate, worst_debate])
end
end
describe "#processes" do
let(:feed) { build(:widget_feed, kind: "processes", limit: 3) }
it "returns a maximum number of open published processes given by the limit" do
4.times { create(:legislation_process, :open, :published) }
expect(feed.processes.count).to be 3
end
it "does not return past processes" do
create(:legislation_process, :past)
expect(feed.processes).to be_empty
end
it "does not return unpublished processes" do
create(:legislation_process, :open, :not_published)
expect(feed.processes).to be_empty
end
end
end
end