101 lines
2.6 KiB
Ruby
101 lines
2.6 KiB
Ruby
require "rails_helper"
|
|
|
|
feature "Admin geozones" do
|
|
|
|
background do
|
|
login_as(create(:administrator).user)
|
|
end
|
|
|
|
scenario "Show list of geozones" do
|
|
chamberi = create(:geozone, name: "Chamberí")
|
|
retiro = create(:geozone, name: "Retiro")
|
|
|
|
visit admin_geozones_path
|
|
|
|
expect(page).to have_content(chamberi.name)
|
|
expect(page).to have_content(retiro.name)
|
|
end
|
|
|
|
scenario "Create new geozone" do
|
|
visit admin_root_path
|
|
|
|
within("#side_menu") { click_link "Manage geozones" }
|
|
|
|
click_link "Create geozone"
|
|
|
|
fill_in "geozone_name", with: "Fancy District"
|
|
fill_in "geozone_external_code", with: 123
|
|
fill_in "geozone_census_code", with: 44
|
|
|
|
click_button "Save changes"
|
|
|
|
expect(page).to have_content "Fancy District"
|
|
|
|
visit admin_geozones_path
|
|
|
|
expect(page).to have_content "Fancy District"
|
|
end
|
|
|
|
scenario "Edit geozone with no associated elements" do
|
|
geozone = create(:geozone, name: "Edit me!", census_code: "012")
|
|
|
|
visit admin_geozones_path
|
|
|
|
within("#geozone_#{geozone.id}") { click_link "Edit" }
|
|
|
|
fill_in "geozone_name", with: "New geozone name"
|
|
fill_in "geozone_census_code", with: "333"
|
|
|
|
click_button "Save changes"
|
|
|
|
within("#geozone_#{geozone.id}") do
|
|
expect(page).to have_content "New geozone name"
|
|
expect(page).to have_content "333"
|
|
end
|
|
end
|
|
|
|
scenario "Edit geozone with associated elements" do
|
|
geozone = create(:geozone, name: "Edit me!")
|
|
create(:proposal, title: "Proposal with geozone", geozone: geozone)
|
|
|
|
visit admin_geozones_path
|
|
|
|
within("#geozone_#{geozone.id}") { click_link "Edit" }
|
|
|
|
fill_in "geozone_name", with: "New geozone name"
|
|
|
|
click_button "Save changes"
|
|
|
|
within("#geozone_#{geozone.id}") do
|
|
expect(page).to have_content "New geozone name"
|
|
end
|
|
end
|
|
|
|
scenario "Delete geozone with no associated elements" do
|
|
geozone = create(:geozone, name: "Delete me!")
|
|
|
|
visit admin_geozones_path
|
|
|
|
within("#geozone_#{geozone.id}") { click_link "Delete" }
|
|
|
|
expect(page).to have_content "Geozone successfully deleted"
|
|
expect(page).not_to have_content("Delete me!")
|
|
expect(Geozone.where(id: geozone.id)).to be_empty
|
|
end
|
|
|
|
scenario "Delete geozone with associated element" do
|
|
geozone = create(:geozone, name: "Delete me!")
|
|
create(:proposal, geozone: geozone)
|
|
|
|
visit admin_geozones_path
|
|
|
|
within("#geozone_#{geozone.id}") { click_link "Delete" }
|
|
|
|
expect(page).to have_content "This geozone can't be deleted since there are elements attached to it"
|
|
|
|
within("#geozone_#{geozone.id}") do
|
|
expect(page).to have_content "Delete me!"
|
|
end
|
|
end
|
|
end
|