mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-01-25 20:46:48 +00:00
82 lines
2.5 KiB
Ruby
82 lines
2.5 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require 'system_helper'
|
|
|
|
RSpec.describe "States" do
|
|
include AuthenticationHelper
|
|
include WebHelper
|
|
|
|
let!(:country) { create(:country) }
|
|
|
|
before(:each) do
|
|
login_as_admin
|
|
@hungary = Spree::Country.create!(name: "Hungary", iso_name: "Hungary", iso: "HU")
|
|
|
|
allow(ENV).to receive(:[]).and_call_original
|
|
allow(ENV).to receive(:[]).with("DEFAULT_COUNTRY_CODE").and_return("HU")
|
|
end
|
|
|
|
# TODO: For whatever reason, rendering of the states page takes a non-trivial amount of time
|
|
# Therefore we navigate to it, and wait until what we see is visible
|
|
def go_to_states_page
|
|
visit spree.admin_country_states_path(country)
|
|
counter = 0
|
|
until page.has_css?("#new_state_link")
|
|
raise "Could not see new state link!" if counter >= 10
|
|
|
|
sleep(2)
|
|
counter += 1
|
|
end
|
|
end
|
|
|
|
context "admin visiting states listing" do
|
|
let!(:state) { Spree::State.create(name: 'Alabama', country:) }
|
|
|
|
it "should correctly display the states" do
|
|
visit spree.admin_country_states_path(country)
|
|
expect(page).to have_content(state.name)
|
|
end
|
|
end
|
|
|
|
context "creating and editing states" do
|
|
it "should allow an admin to edit existing states" do
|
|
go_to_states_page
|
|
select2_select country.name, from: "country"
|
|
|
|
click_link "new_state_link"
|
|
fill_in "state_name", with: "Calgary"
|
|
fill_in "Abbreviation", with: "CL"
|
|
click_button "Create"
|
|
expect(page).to have_content("successfully created!")
|
|
expect(page).to have_content("Calgary")
|
|
end
|
|
|
|
it "should allow an admin to create states for non default countries" do
|
|
go_to_states_page
|
|
select2_select @hungary.name, from: "country"
|
|
# Just so the change event actually gets triggered in this spec
|
|
# It is definitely triggered in the "real world"
|
|
page.execute_script("$('#country').trigger('change');")
|
|
|
|
click_link "new_state_link"
|
|
fill_in "state_name", with: "Pest megye"
|
|
fill_in "Abbreviation", with: "PE"
|
|
click_button "Create"
|
|
expect(page).to have_content("successfully created!")
|
|
expect(page).to have_content("Pest megye")
|
|
expect(find("#s2id_country span.select2-chosen").text).to eq("Hungary")
|
|
end
|
|
|
|
it "should show validation errors" do
|
|
go_to_states_page
|
|
select2_select country.name, from: "country"
|
|
click_link "new_state_link"
|
|
|
|
fill_in "state_name", with: ""
|
|
fill_in "Abbreviation", with: ""
|
|
click_button "Create"
|
|
expect(page).to have_content("Name can't be blank")
|
|
end
|
|
end
|
|
end
|