spec/models/widget/feed_spec.rb

Summary

Maintainability
A
3 hrs
Test Coverage
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

      it "returns open and published processes" do
        open_process1 = create(:legislation_process, :open, :published, title: "Open process 1")
        open_process2 = create(:legislation_process, :open, :published, title: "Open process 2")
        open_process3 = create(:legislation_process, :open, :published, title: "Open process 3")
        open_process4 = create(:legislation_process, :open, :published, title: "Open process 4")
        open_process5 = create(:legislation_process, :open, :not_published, title: "Open process 5")
        past_process = create(:legislation_process, :past, title: "Past process")

        feed = build(:widget_feed, kind: "processes")

        expect(feed.processes).to eq([open_process4, open_process3, open_process2])
      end

    end

  end

end