63 lines
2.0 KiB
Ruby
63 lines
2.0 KiB
Ruby
require "rails_helper"
|
|
|
|
describe SDG::Goals::IndexComponent do
|
|
let!(:goals) { SDG::Goal.all }
|
|
let!(:phases) { SDG::Phase.all }
|
|
let!(:component) { SDG::Goals::IndexComponent.new(goals, header: nil, phases: phases) }
|
|
|
|
before do
|
|
Setting["feature.sdg"] = true
|
|
end
|
|
|
|
describe "header" do
|
|
it "renders the default header when a custom one is not defined" do
|
|
render_inline component
|
|
|
|
expect(page).to have_css "h1", exact_text: "Sustainable Development Goals"
|
|
end
|
|
|
|
it "renders a custom header" do
|
|
sdg_web_section = WebSection.find_by!(name: "sdg")
|
|
header = create(:widget_card, cardable: sdg_web_section)
|
|
component = SDG::Goals::IndexComponent.new(goals, header: header, phases: phases)
|
|
|
|
render_inline component
|
|
|
|
expect(page).to have_content header.title
|
|
expect(page).not_to have_css "h1", exact_text: "Sustainable Development Goals"
|
|
end
|
|
end
|
|
|
|
it "renders phases" do
|
|
render_inline component
|
|
|
|
expect(page).to have_content "Sensitization"
|
|
expect(page).to have_content "Planning"
|
|
expect(page).to have_content "Monitoring"
|
|
end
|
|
|
|
describe "Cards are ordered" do
|
|
scenario "by order field" do
|
|
create(:widget_card, cardable: SDG::Phase["planning"], title: "Card One", order: 3)
|
|
create(:widget_card, cardable: SDG::Phase["planning"], title: "Card Two", order: 2)
|
|
create(:widget_card, cardable: SDG::Phase["planning"], title: "Card Three", order: 1)
|
|
|
|
render_inline component
|
|
|
|
expect("Card Three").to appear_before("Card Two")
|
|
expect("Card Two").to appear_before("Card One")
|
|
end
|
|
|
|
scenario "by created_at with cards have same order" do
|
|
create(:widget_card, cardable: SDG::Phase["planning"], title: "Card One", order: 1)
|
|
create(:widget_card, cardable: SDG::Phase["planning"], title: "Card Two", order: 1)
|
|
create(:widget_card, cardable: SDG::Phase["planning"], title: "Card Three", order: 1)
|
|
|
|
render_inline component
|
|
|
|
expect("Card One").to appear_before("Card Two")
|
|
expect("Card Two").to appear_before("Card Three")
|
|
end
|
|
end
|
|
end
|