Files
openfoodnetwork/spec/system/admin/configuration/states_spec.rb
2024-05-09 12:24:41 +10:00

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