Files
nairobi/spec/system/sdg/goals_spec.rb
Javi Martín 6ea9383743 Allow toggling elements with the keyboard
Using `<a>` tags with no `href` means these elements cannot be activated
by keyboard users, so we're replacing them with buttons.

In the future we probably want to add more consistency so all toggle
buttons use the same code. We might also add styles depending on the
`aria-expanded` property.
2021-03-31 13:38:38 +02:00

174 lines
5.7 KiB
Ruby

require "rails_helper"
describe "SDG Goals", :js do
before do
Setting["feature.sdg"] = true
Setting["sdg.process.debates"] = true
Setting["sdg.process.proposals"] = true
end
describe "SDG navigation link" do
scenario "is not present when the feature is disabled" do
Setting["feature.sdg"] = false
visit root_path
within("#navigation_bar") { expect(page).not_to have_link "SDG" }
end
scenario "routes to the goals index" do
visit root_path
within("#navigation_bar") { click_link "SDG" }
expect(page).to have_current_path sdg_goals_path
end
end
describe "Index" do
scenario "has links to SDGs" do
visit sdg_goals_path
click_link "7. Affordable and Clean Energy"
expect(page).to have_current_path sdg_goal_path(7)
end
scenario "has cards for phases" do
create(:widget_card, cardable: SDG::Phase["planning"], title: "Planning card")
visit sdg_goals_path
within "#sdg_phase_planning" do
expect(page).to have_css "header", exact_text: "Planning"
expect(page).to have_content "PLANNING CARD"
end
end
end
describe "Show" do
before do
goal = SDG::Goal[15]
create(:debate, title: "Solar panels", sdg_goals: [SDG::Goal[7]])
create(:debate, title: "Hunting ground", sdg_goals: [goal])
create(:proposal, title: "Animal farm", sdg_goals: [goal])
create(:proposal, title: "Sea farm", sdg_goals: [SDG::Goal[14]])
create(:legislation_process, title: "Bullfighting regulations", sdg_goals: [goal])
create(:legislation_process, title: "Tax regulations", sdg_goals: [SDG::Goal[10]])
end
scenario "shows the SDG and its related content" do
visit sdg_goal_path(15)
within(".sdg-goal header") { expect(page).to have_content "15\nLIFE ON\nLAND" }
within ".feed-proposals" do
expect(page).to have_content "Animal farm"
expect(page).not_to have_content "Sea farm"
end
within ".feed-debates" do
expect(page).to have_content "Hunting ground"
expect(page).not_to have_content "Solar panels"
end
within ".feed-processes" do
expect(page).to have_content "BULLFIGHTING REGULATIONS"
expect(page).not_to have_content "TAX REGULATIONS"
end
end
scenario "has links to debates and proposals filtered by goal" do
visit sdg_goal_path(15)
click_link "See all debates"
within "#debates" do
expect(page).to have_content "Hunting ground"
expect(page).not_to have_content "Solar panels"
end
within "#advanced_search_form" do
expect(page).to have_select "By SDG", selected: "15. Life on Land"
end
go_back
click_link "See all proposals"
within "#proposals" do
expect(page).to have_content "Animal farm"
expect(page).not_to have_content "Sea farm"
end
within "#advanced_search_form" do
expect(page).to have_select "By SDG", selected: "15. Life on Land"
end
end
scenario "has buttons to read more and read less for long description" do
visit sdg_goal_path(15)
expect(page).to have_button "Read more about Life on Land"
expect(page).to have_button "Read less about Life on Land", visible: :hidden
click_button "Read more about Life on Land"
expect(page).to have_button "Read more about Life on Land", visible: :hidden
expect(page).to have_button "Read less about Life on Land"
end
scenario "has tab target section" do
create(:sdg_local_target, code: "15.1.1", title: "SDG local target sample text")
visit sdg_goal_path(15)
within ".sdg-goal-targets" do
expect(page).to have_content "Targets"
expect(page).to have_content "Local targets"
end
within ".tabs-content" do
expect(page).to have_content "15.1 By 2020, ensure the conservation, restoration and sustainable"
expect(page).not_to have_content "15.1.1 SDG local target sample text"
end
click_link "Local targets"
within ".tabs-content" do
expect(page).to have_content "15.1.1 SDG local target sample text"
expect(page).not_to have_content "15.1 By 2020, ensure the conservation, restoration and sustainable"
end
end
end
describe "Help" do
scenario "shows all SDGs targets" do
create(:sdg_local_target, code: "15.1.1", title: "SDG local target sample text")
visit sdg_help_path
expect(page).to have_content "You can align your contributions to the community"
expect(page).to have_css "h2", exact_text: "1. No Poverty"
expect(page).to have_content "End poverty in all its forms, everywhere."
expect(page).to have_content "1.1 By 2030, eradicate extreme poverty for all people everywhere"
click_link "7. Affordable and Clean Energy"
expect(page).not_to have_css "h2", exact_text: "1. No Poverty"
expect(page).to have_css "h2", exact_text: "7. Affordable and Clean Energy"
expect(page).to have_content "Ensure access to affordable, reliable, sustainable and modern energy."
expect(page).to have_content "7.1 By 2030, ensure universal access to affordable"
click_link "15. Life on Land"
expect(page).to have_css "h2", exact_text: "15. Life on Land"
expect(page).to have_content "Sustainably manage forests, combat desertification, halt and reverse"
expect(page).to have_content "15.1 By 2020, ensure the conservation, restoration and sustainable use"
click_link "Local targets"
expect(page).not_to have_content "15.1 By 2020, ensure the conservation, restoration and sustainable use"
expect(page).to have_content "SDG local target sample text"
end
end
end