mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-01-25 20:46:48 +00:00
101 lines
2.6 KiB
Ruby
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
|