So now we test in depth at the model level, and can be a bit more relaxed about integration tests for translations. Note we're defining some extra factories to make sure all translatable attributes with presence validation rules are mandatory. This way we can simplify the way we obtain required fields, using `required_attribute?`. Otherwise, fields having an `unless` condition in their presence validation rules would count as mandatory even when they're not.
41 lines
1004 B
Ruby
41 lines
1004 B
Ruby
require "rails_helper"
|
|
|
|
describe Widget::Card do
|
|
let(:card) { build(:widget_card) }
|
|
|
|
it_behaves_like "globalizable", :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
|
|
end
|