Files
nairobi/spec/models/widget/card_spec.rb
Javi Martín 2926e4e375 Fix managing widget cards for homepage
The condition `params[:page_id] != 0` didn't work properly when editing
the homepage because in that case the parameter was `nil`, and the line
`SiteCustomization::Page.find(@card.site_customization_page_id)` raised
an exception because it couldn't find a page with a `nil` ID.

Fixing the issue while maintaining the check against `0` lead to complex
code, and so allowing `nil` in the database and assuming cards with no
`site_customization_page_id` belonged in the homepage seemed to be the
easiest solution.
2019-01-21 10:40:14 -05:00

53 lines
1.5 KiB
Ruby

require 'rails_helper'
describe Widget::Card do
let(:card) { build(:widget_card) }
context "validations" do
it "is valid" do
expect(card).to be_valid
end
end
describe "#header" do
it "returns the header card" do
header = create(:widget_card, header: true)
card = create(:widget_card, header: false)
expect(Widget::Card.header).to eq([header])
end
end
describe "#body" do
it "returns cards for the homepage body" do
header = create(:widget_card, header: true)
card1 = create(:widget_card, header: false)
card2 = create(:widget_card, header: false)
page_card = create(:widget_card, header: false, page: create(:site_customization_page))
expect(Widget::Card.body).to include(card1)
expect(Widget::Card.body).to include(card2)
expect(Widget::Card.body).not_to include(header)
expect(Widget::Card.body).not_to include(page_card)
end
end
describe "#custom page" do
it "return cards for the custom pages" do
header = create(:widget_card, header: true)
card = create(:widget_card, header: false)
card1 = create(:widget_card, header: false, title: "Card 1", site_customization_page_id: 1)
card2 = create(:widget_card, header: false, title: "Card 2", site_customization_page_id: 1)
card3 = create(:widget_card, header: false, title: "Card 3", site_customization_page_id: 1)
expect(Widget::Card.page(1)).to eq([card1, card2, card3])
end
end
end