We were very inconsistent regarding these rules. Personally I prefer no empty lines around blocks, clases, etc... as recommended by the Ruby style guide [1], and they're the default values in rubocop, so those are the settings I'm applying. The exception is the `private` access modifier, since we were leaving empty lines around it most of the time. That's the default rubocop rule as well. Personally I don't have a strong preference about this one. [1] https://rubystyle.guide/#empty-lines-around-bodies
76 lines
2.2 KiB
Ruby
76 lines
2.2 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
|
|
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
|