Files
openfoodnetwork/spec/system/admin/configuration/zones_spec.rb
2025-04-23 19:45:06 +01:00

101 lines
2.6 KiB
Ruby

# frozen_string_literal: true
require 'system_helper'
RSpec.describe "Zones" do
include AuthenticationHelper
include WebHelper
before do
Spree::Zone.delete_all
end
it "list existing zones" do
login_as_admin
visit spree.edit_admin_general_settings_path
create(:zone, name: "northern", description: "middle position alphabetically")
create(:zone, name: "eastern", description: "zone is eastern")
create(:zone, name: "western", description: "cool san fran")
click_link "Zones"
within_row(1) { expect(page).to have_content("eastern") }
within_row(2) { expect(page).to have_content("northern") }
within_row(3) { expect(page).to have_content("western") }
click_link "zones_order_by_description_title"
within_row(1) { expect(page).to have_content("western") }
within_row(2) { expect(page).to have_content("northern") }
within_row(3) { expect(page).to have_content("eastern") }
end
it "create a new zone" do
login_as_admin
visit spree.admin_zones_path
click_link "admin_new_zone_link"
expect(page).to have_content("New Zone")
fill_in "zone_name", with: "japan"
fill_in "zone_description", with: "japanese time zone"
choose "Country Based"
click_link "Add country"
find('.select2').find(:xpath, 'option[2]').select_option
click_button "Create"
expect(page).to have_content("successfully created!")
end
it "edit existing zone" do
zone = create(:zone_with_member)
login_as_admin
visit spree.edit_admin_zone_path(zone.id)
expect(page).to have_checked_field "country_based"
# Toggle to state based zone
choose "State Based"
# click Add State
page.find("#nested-state").click
# select first state available
find('.select2').find(:xpath, 'option[2]').select_option
click_button "Update"
expect(page).to have_content("successfully updated!")
end
context "pagination" do
before do
login_as_admin
# creates 16 zones
16.times { create(:zone) }
visit spree.admin_zones_path
end
it "displays pagination" do
# table displays 15 entries
within('tbody') do
expect(page).to have_css('tr', count: 15)
end
within ".pagination" do
expect(page).not_to have_content "Previous"
expect(page).to have_content "Next"
click_on "2"
end
# table displays 1 entry
within('tbody') do
expect(page).to have_css('tr', count: 1)
end
within ".pagination" do
expect(page).to have_content "Previous"
expect(page).not_to have_content "Next"
end
end
end
end