Files
grecia/spec/system/sdg/goals_spec.rb
Javi Martín 92ddcb7aef Use JavaScript in system tests by default
JavaScript is used by about 98% of web users, so by testing without it
enabled, we're only testing that the application works for a very
reduced number of users.

We proceeded this way in the past because CONSUL started using Rails 4.2
and truncating the database between JavaScript tests with database
cleaner, which made these tests terribly slow.

When we upgraded to Rails 5.1 and introduced system tests, we started
using database transactions in JavaScript tests, making these tests much
faster. So now we can use JavaScript tests everywhere without critically
slowing down our test suite.
2021-04-07 14:41:06 +02:00

174 lines
5.7 KiB
Ruby

require "rails_helper"
describe "SDG Goals" 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