Use system specs instead of feature specs
We get rid of database cleaner, and JavaScript tests are faster because between tests we now rollback transactions instead of truncating the database.
This commit is contained in:
99
spec/system/admin/geozones_spec.rb
Normal file
99
spec/system/admin/geozones_spec.rb
Normal file
@@ -0,0 +1,99 @@
|
||||
require "rails_helper"
|
||||
|
||||
describe "Admin geozones" do
|
||||
before 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
|
||||
Reference in New Issue
Block a user