mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-03-28 06:15:17 +00:00
Merge pull request #11645 from filipefurtad0/activate_buu_toggle_by_default_to_run_the_test_suite
[BUU] Activate admin_style_v3 for most system specs
This commit is contained in:
@@ -3863,7 +3863,7 @@ See the %{link} to find out more about %{sitename}'s features and to start using
|
||||
logout: "Logout"
|
||||
|
||||
date_range: "Date Range"
|
||||
status: "status"
|
||||
status: "Status"
|
||||
new: "New"
|
||||
start: "Start"
|
||||
end: "End"
|
||||
|
||||
@@ -148,6 +148,9 @@ RSpec.configure do |config|
|
||||
config.before(:each) do
|
||||
Flipper.features.each(&:remove)
|
||||
OpenFoodNetwork::FeatureToggle.setup!
|
||||
|
||||
# activate feature toggle admin_style_v3 to use new admin interface and run the build
|
||||
Flipper.enable(:admin_style_v3)
|
||||
end
|
||||
|
||||
config.before(:each, :feature) do |example|
|
||||
@@ -284,6 +287,7 @@ RSpec.configure do |config|
|
||||
config.include OpenFoodNetwork::PerformanceHelper
|
||||
config.include ActiveJob::TestHelper
|
||||
config.include ReportsHelper
|
||||
config.include TomSelectHelper, type: :system
|
||||
|
||||
config.include ViewComponent::TestHelpers, type: :component
|
||||
|
||||
|
||||
@@ -1,30 +0,0 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
require 'spec_helper'
|
||||
require_relative '../../db/migrate/20240625024328_activate_admin_style_v3_for_new_users'
|
||||
|
||||
RSpec.describe ActivateAdminStyleV3ForNewUsers do
|
||||
it "activates new product screen for new users" do
|
||||
Timecop.freeze Time.zone.parse("2024-07-03") do
|
||||
user_new = create(:user)
|
||||
|
||||
expect {
|
||||
subject.up
|
||||
}.to change {
|
||||
OpenFoodNetwork::FeatureToggle.enabled?(:admin_style_v3, user_new)
|
||||
}.to(true)
|
||||
end
|
||||
end
|
||||
|
||||
it "doesn't activate new product screen for old users" do
|
||||
Timecop.freeze Time.zone.parse("2024-07-02") do
|
||||
user_old = create(:user)
|
||||
|
||||
expect {
|
||||
subject.up
|
||||
}.not_to change {
|
||||
OpenFoodNetwork::FeatureToggle.enabled?(:admin_style_v3, user_old)
|
||||
}
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -4,7 +4,7 @@ module Features
|
||||
module DatepickerHelper
|
||||
def choose_today_from_datepicker
|
||||
within(".flatpickr-calendar.open") do
|
||||
find("button", text: "TODAY").click
|
||||
find("button", text: "Today").click
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
11
spec/support/overlapping_elements_helper.rb
Normal file
11
spec/support/overlapping_elements_helper.rb
Normal file
@@ -0,0 +1,11 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
def dismiss_warning
|
||||
# Click dismiss on distributor warning
|
||||
click_button 'Dismiss'
|
||||
end
|
||||
|
||||
def trigger_click(id, text)
|
||||
# replace node buy the elements node, for example
|
||||
page.find(id, text).trigger("click")
|
||||
end
|
||||
39
spec/support/tom_select_helper.rb
Normal file
39
spec/support/tom_select_helper.rb
Normal file
@@ -0,0 +1,39 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
module TomSelectHelper
|
||||
def tomselect_open(field_name)
|
||||
page.find("##{field_name}-ts-control").click
|
||||
end
|
||||
|
||||
def tomselect_multiselect(value, options)
|
||||
tomselect_wrapper = page.find("[name='#{options[:from]}']").sibling(".ts-wrapper")
|
||||
tomselect_wrapper.find(".ts-control").click
|
||||
tomselect_wrapper.find(:css, '.ts-dropdown.multi .ts-dropdown-content .option',
|
||||
text: value).click
|
||||
end
|
||||
|
||||
def tomselect_search_and_select(value, options)
|
||||
tomselect_wrapper = page.find("[name='#{options[:from]}']").sibling(".ts-wrapper")
|
||||
tomselect_wrapper.find(".ts-control").click
|
||||
# Use send_keys as setting the value directly doesn't trigger the search
|
||||
tomselect_wrapper.find(:css, '.ts-dropdown input.dropdown-input').send_keys(value)
|
||||
tomselect_wrapper.find(:css, '.ts-dropdown .ts-dropdown-content .option', text: value).click
|
||||
end
|
||||
|
||||
def tomselect_select(value, options)
|
||||
tomselect_wrapper = page.find("[name='#{options[:from]}']").sibling(".ts-wrapper")
|
||||
tomselect_wrapper.find(".ts-control").click
|
||||
|
||||
tomselect_wrapper.find(:css, '.ts-dropdown .ts-dropdown-content .option', text: value).click
|
||||
end
|
||||
|
||||
def select_tom_select(value, from:)
|
||||
container = find(:id, from)
|
||||
|
||||
within(container) do
|
||||
find('.ts-control').send_keys(value)
|
||||
end
|
||||
|
||||
find('.ts-dropdown .ts-dropdown-content .option', text: /#{Regexp.quote(value)}/i).click
|
||||
end
|
||||
end
|
||||
@@ -17,9 +17,9 @@ RSpec.describe "Authentication" do
|
||||
fill_in "Email", with: user.email
|
||||
fill_in "Password", with: user.password
|
||||
click_login_button
|
||||
expect(page).to have_content "DASHBOARD"
|
||||
expect(page).to have_content "Dashboard"
|
||||
expect(page).to have_current_path spree.admin_dashboard_path
|
||||
expect(page).not_to have_content "CONFIGURATION"
|
||||
expect(page).not_to have_content "Configuration"
|
||||
end
|
||||
|
||||
it "viewing my account" do
|
||||
|
||||
@@ -30,7 +30,7 @@ RSpec.describe '
|
||||
expect(page).to have_selector('span', text: 'COMPLETE', count: 2)
|
||||
|
||||
page.find('#selectAll').trigger('click')
|
||||
page.find("span.icon-reorder", text: "ACTIONS").click
|
||||
page.find("span.icon-reorder", text: "Actions").click
|
||||
within ".ofn-drop-down .menu" do
|
||||
expect(page).to have_selector("span", text: "Cancel Orders")
|
||||
page.find("span", text: "Cancel Orders").click
|
||||
@@ -43,7 +43,7 @@ RSpec.describe '
|
||||
.and change { o2.reload.state }.from('complete').to('canceled')
|
||||
end
|
||||
|
||||
# Verify that the orders have a STATE of CANCELLED
|
||||
# Verify that the orders have a STATE of Cancelled
|
||||
expect(page).to have_selector('span.canceled', text: 'CANCELLED', count: 2)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -69,11 +69,11 @@ RSpec.describe '
|
||||
end
|
||||
|
||||
it "orders by completion date" do
|
||||
find("a", text: 'COMPLETED AT').click # sets ascending ordering
|
||||
find("a", text: 'Completed at').click # sets ascending ordering
|
||||
expect(page).to have_content(
|
||||
/#{li2.product.name}.*#{li1.product.name}.*#{li22.product.name}.*#{li21.product.name}/m
|
||||
)
|
||||
find("a", text: 'COMPLETED AT').click # sets descending ordering
|
||||
find("a", text: 'Completed at').click # sets descending ordering
|
||||
expect(page).to have_content(
|
||||
/#{li21.product.name}.*#{li22.product.name}.*#{li1.product.name}.*#{li2.product.name}/m
|
||||
)
|
||||
@@ -155,9 +155,9 @@ RSpec.describe '
|
||||
expect(page).to have_content "Little Fish", count: 15
|
||||
expect(page).not_to have_content "Big Fish"
|
||||
end
|
||||
find("a", text: "Clear").click # closes BOM box
|
||||
expect(page).to have_content "Little Fish", count: 10
|
||||
click_link "Clear" # closes BOM box
|
||||
expect(page).to have_content "Big Fish", count: 5
|
||||
expect(page).to have_content "Little Fish", count: 10
|
||||
end
|
||||
end
|
||||
|
||||
@@ -311,7 +311,7 @@ RSpec.describe '
|
||||
end
|
||||
|
||||
it "displays a column for user's full name" do
|
||||
expect(page).to have_selector "th.full_name", text: "NAME"
|
||||
expect(page).to have_selector "th.full_name", text: "Name"
|
||||
expect(page)
|
||||
.to have_selector "td.full_name",
|
||||
text: "#{o1.bill_address.last_name}, #{o1.bill_address.first_name}"
|
||||
@@ -320,33 +320,33 @@ RSpec.describe '
|
||||
|
||||
it "displays a column for order date" do
|
||||
expect(page).to have_selector "th.date",
|
||||
text: 'Completed at'.upcase
|
||||
text: 'Completed at'
|
||||
expect(page).to have_selector "td.date", text: o1.completed_at.strftime('%B %d, %Y')
|
||||
expect(page).to have_selector "td.date", text: o2.completed_at.strftime('%B %d, %Y')
|
||||
end
|
||||
|
||||
it "displays a column for producer" do
|
||||
expect(page).to have_selector "th.producer", text: "PRODUCER"
|
||||
expect(page).to have_selector "th.producer", text: "Producer"
|
||||
expect(page).to have_selector "td.producer", text: li1.product.supplier.name
|
||||
expect(page).to have_selector "td.producer", text: li2.product.supplier.name
|
||||
end
|
||||
|
||||
it "displays a column for variant description, which shows only product name " \
|
||||
"when options text is blank" do
|
||||
expect(page).to have_selector "th.variant", text: "PRODUCT: UNIT"
|
||||
expect(page).to have_selector "th.variant", text: "Product: Unit"
|
||||
expect(page).to have_selector "td.variant", text: li1.product.name
|
||||
expect(page).to have_selector "td.variant",
|
||||
text: "#{li2.product.name}: #{li2.variant.options_text}"
|
||||
end
|
||||
|
||||
it "displays a field for quantity" do
|
||||
expect(page).to have_selector "th.quantity", text: "QUANTITY"
|
||||
expect(page).to have_selector "th.quantity", text: "Quantity"
|
||||
expect(page).to have_field "quantity", with: li1.quantity.to_s
|
||||
expect(page).to have_field "quantity", with: li2.quantity.to_s
|
||||
end
|
||||
|
||||
it "displays a column for max quantity" do
|
||||
expect(page).to have_selector "th.max", text: "MAX"
|
||||
expect(page).to have_selector "th.max", text: "Max"
|
||||
expect(page).to have_selector "td.max", text: li1.max_quantity.to_s
|
||||
expect(page).to have_selector "td.max", text: li2.max_quantity.to_s
|
||||
end
|
||||
@@ -550,13 +550,13 @@ RSpec.describe '
|
||||
|
||||
context "using column display toggle" do
|
||||
it "displays the default selected columns" do
|
||||
expect(page).to have_selector "th", text: "NAME"
|
||||
expect(page).to have_selector "th", text: "Name"
|
||||
expect(page).to have_selector "th",
|
||||
text: 'Completed at'.upcase
|
||||
expect(page).to have_selector "th", text: "PRODUCER"
|
||||
expect(page).to have_selector "th", text: "PRODUCT: UNIT"
|
||||
expect(page).to have_selector "th", text: "QUANTITY"
|
||||
expect(page).to have_selector "th", text: "MAX"
|
||||
text: 'Completed at'
|
||||
expect(page).to have_selector "th", text: "Producer"
|
||||
expect(page).to have_selector "th", text: "Product: Unit"
|
||||
expect(page).to have_selector "th", text: "Quantity"
|
||||
expect(page).to have_selector "th", text: "Max"
|
||||
end
|
||||
|
||||
context "hiding a column, by de-selecting it from the drop-down" do
|
||||
@@ -565,13 +565,13 @@ RSpec.describe '
|
||||
end
|
||||
|
||||
it "shows all default columns, except the de-selected column" do
|
||||
expect(page).not_to have_selector "th", text: "PRODUCER"
|
||||
expect(page).to have_selector "th", text: "NAME"
|
||||
expect(page).not_to have_selector "th", text: "Producer"
|
||||
expect(page).to have_selector "th", text: "Name"
|
||||
expect(page).to have_selector "th",
|
||||
text: 'Completed at'.upcase
|
||||
expect(page).to have_selector "th", text: "PRODUCT: UNIT"
|
||||
expect(page).to have_selector "th", text: "QUANTITY"
|
||||
expect(page).to have_selector "th", text: "MAX"
|
||||
text: 'Completed at'
|
||||
expect(page).to have_selector "th", text: "Product: Unit"
|
||||
expect(page).to have_selector "th", text: "Quantity"
|
||||
expect(page).to have_selector "th", text: "Max"
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -1209,7 +1209,7 @@ RSpec.describe '
|
||||
|
||||
context "clicking 'Clear' in group buy box" do
|
||||
before :each do
|
||||
find("a", text: "Clear").click
|
||||
click_link "Clear" # closes BOM box
|
||||
end
|
||||
|
||||
it "shows all products and clears group buy box" do
|
||||
|
||||
@@ -4,12 +4,14 @@ require 'system_helper'
|
||||
|
||||
RSpec.describe '
|
||||
As an Administrator
|
||||
I want to be able to manage products in bulk
|
||||
I want to be able to manage products in bulk (with the old Products screen)
|
||||
' do
|
||||
include AdminHelper
|
||||
include AuthenticationHelper
|
||||
include WebHelper
|
||||
|
||||
before { Flipper.disable(:admin_style_v3) }
|
||||
|
||||
describe "listing products" do
|
||||
before do
|
||||
login_as_admin
|
||||
@@ -18,19 +20,12 @@ RSpec.describe '
|
||||
it "displays a list of products" do
|
||||
p1 = FactoryBot.create(:product)
|
||||
p2 = FactoryBot.create(:product)
|
||||
|
||||
visit spree.admin_products_path
|
||||
|
||||
expect(page).to have_field "product_name", with: p1.name
|
||||
expect(page).to have_field "product_name", with: p2.name
|
||||
end
|
||||
|
||||
it "displays a message when number of products is zero" do
|
||||
visit spree.admin_products_path
|
||||
|
||||
expect(page).to have_text "No products yet. Why don't you add some?"
|
||||
end
|
||||
|
||||
it "displays a select box for suppliers, with the appropriate supplier selected" do
|
||||
s1 = FactoryBot.create(:supplier_enterprise)
|
||||
s2 = FactoryBot.create(:supplier_enterprise)
|
||||
@@ -202,7 +197,7 @@ RSpec.describe '
|
||||
visit spree.admin_products_path
|
||||
|
||||
find("a", text: "NEW PRODUCT").click
|
||||
expect(page).to have_content 'NEW PRODUCT'
|
||||
expect(page).to have_content "NEW PRODUCT"
|
||||
|
||||
fill_in 'product_name', with: 'Big Bag Of Apples'
|
||||
select supplier.name, from: 'product_supplier_id'
|
||||
@@ -311,8 +306,10 @@ RSpec.describe '
|
||||
end
|
||||
|
||||
it "creating a variant with unit value is: '120g' and 'on_demand' checked" do
|
||||
scroll_to(:bottom)
|
||||
|
||||
within "tr#v_#{v2.id}" do
|
||||
page.find(".add-variant").trigger("click")
|
||||
page.find(".add-variant").click
|
||||
end
|
||||
|
||||
within "tr#v_-1" do
|
||||
@@ -705,7 +702,7 @@ RSpec.describe '
|
||||
|
||||
toggle_columns /^.{0,1}Producer$/i
|
||||
|
||||
expect(page).not_to have_selector "th", text: "PRODUCER"
|
||||
expect(page).not_to have_selector "th", text: "Producer"
|
||||
expect(page).to have_selector "th", text: "NAME"
|
||||
expect(page).to have_selector "th", text: "PRICE"
|
||||
expect(page).to have_selector "th", text: "ON HAND"
|
||||
|
||||
@@ -30,7 +30,7 @@ RSpec.describe "General Settings" do
|
||||
|
||||
context 'editing currency symbol position' do
|
||||
it 'updates its position' do
|
||||
expect(page).to have_content('CURRENCY SETTINGS')
|
||||
expect(page).to have_content('Currency Settings')
|
||||
|
||||
within('.currency') do
|
||||
find("[for='currency_symbol_position_after']").click
|
||||
|
||||
@@ -347,7 +347,7 @@ RSpec.describe 'Customers' do
|
||||
end
|
||||
|
||||
it 'updates the existing billing address' do
|
||||
expect(page).to have_content 'BILLING ADDRESS'
|
||||
expect(page).to have_content 'Billing Address'
|
||||
first('#bill-address-link').click
|
||||
wait_for_modal_fade_in
|
||||
|
||||
@@ -374,7 +374,7 @@ RSpec.describe 'Customers' do
|
||||
end
|
||||
|
||||
it 'creates a new shipping address' do
|
||||
expect(page).to have_content 'SHIPPING ADDRESS'
|
||||
expect(page).to have_content 'Shipping Address'
|
||||
|
||||
first('#ship-address-link').click
|
||||
wait_for_modal_fade_in
|
||||
|
||||
@@ -182,7 +182,7 @@ create(:enterprise)
|
||||
def navigate_to_enterprise_users
|
||||
scroll_to(:bottom)
|
||||
within ".side_menu" do
|
||||
click_link "Users"
|
||||
trigger_click(:link, "Users")
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -92,7 +92,7 @@ RSpec.describe '
|
||||
|
||||
# Require login to view shopfront or for checkout
|
||||
accept_alert do
|
||||
within(".side_menu") { click_link "Shop Preferences" }
|
||||
within(".side_menu") { find(:link, "Shop Preferences").trigger("click") }
|
||||
end
|
||||
expect(page).to have_checked_field "enterprise_require_login_false"
|
||||
expect(page).to have_checked_field "enterprise_allow_guest_orders_true"
|
||||
@@ -100,6 +100,7 @@ RSpec.describe '
|
||||
expect(page).not_to have_checked_field "enterprise_require_login_false"
|
||||
# expect(page).to have_checked_field "enterprise_enable_subscriptions_false"
|
||||
|
||||
scroll_to(:bottom)
|
||||
accept_alert do
|
||||
scroll_to(:bottom)
|
||||
within(".side_menu") { click_link "Users" }
|
||||
@@ -199,7 +200,7 @@ RSpec.describe '
|
||||
page.find(".option", text: "Victoria").click
|
||||
|
||||
accept_alert do
|
||||
click_link "Shop Preferences"
|
||||
within(".side_menu") { find(:link, "Shop Preferences").trigger("click") }
|
||||
end
|
||||
shop_message_input =
|
||||
page.find("text-angular#enterprise_preferred_shopfront_message div[id^='taTextElement']")
|
||||
@@ -241,7 +242,7 @@ RSpec.describe '
|
||||
click_link "About"
|
||||
expect(page).to have_content 'This is an interesting long description'
|
||||
|
||||
click_link "Shop Preferences"
|
||||
within(".side_menu") { find(:link, "Shop Preferences").trigger("click") }
|
||||
expect(page).to have_content 'This is my shopfront message.'
|
||||
expect(page).to have_checked_field(
|
||||
"enterprise_preferred_shopfront_order_cycle_order_orders_open_at"
|
||||
@@ -517,7 +518,7 @@ RSpec.describe '
|
||||
visit edit_admin_enterprise_path(distributor1)
|
||||
|
||||
within(".side_menu") do
|
||||
click_link "Shop Preferences"
|
||||
find(:link, "Shop Preferences").trigger("click")
|
||||
end
|
||||
|
||||
choose "enterprise_preferred_shopfront_product_sorting_method_by_category"
|
||||
@@ -539,10 +540,11 @@ RSpec.describe '
|
||||
visit edit_admin_enterprise_path(distributor1)
|
||||
|
||||
within(".side_menu") do
|
||||
click_link "Shop Preferences"
|
||||
find(:link, "Shop Preferences").trigger("click")
|
||||
end
|
||||
|
||||
choose "enterprise_preferred_shopfront_product_sorting_method_by_producer"
|
||||
scroll_to(:bottom)
|
||||
find("#s2id_enterprise_preferred_shopfront_producer_order").click
|
||||
find(".select2-result-label", text: "First Supplier").click
|
||||
click_button 'Update'
|
||||
@@ -563,7 +565,7 @@ RSpec.describe '
|
||||
visit edit_admin_enterprise_path(distributor1)
|
||||
scroll_to(:bottom)
|
||||
within ".side_menu" do
|
||||
click_link 'Users'
|
||||
find(:link, "Users").trigger("click")
|
||||
end
|
||||
end
|
||||
|
||||
@@ -615,7 +617,6 @@ RSpec.describe '
|
||||
context "white label settings" do
|
||||
before do
|
||||
visit edit_admin_enterprise_path(distributor1)
|
||||
|
||||
select_white_label
|
||||
end
|
||||
|
||||
@@ -636,7 +637,7 @@ RSpec.describe '
|
||||
end
|
||||
|
||||
it "set the hide_ofn_navigation preference for the current shop" do
|
||||
expect(page).not_to have_content "LOGO USED IN SHOPFRONT"
|
||||
expect(page).not_to have_content "Logo used in shopfront"
|
||||
check "Hide OFN navigation"
|
||||
click_button 'Update'
|
||||
expect(flash_message)
|
||||
@@ -646,7 +647,7 @@ RSpec.describe '
|
||||
visit edit_admin_enterprise_path(distributor1)
|
||||
select_white_label
|
||||
|
||||
expect(page).to have_content "LOGO USED IN SHOPFRONT"
|
||||
expect(page).to have_content "Logo used in shopfront"
|
||||
uncheck "Hide OFN navigation"
|
||||
click_button 'Update'
|
||||
expect(flash_message)
|
||||
@@ -841,14 +842,14 @@ RSpec.describe '
|
||||
click_button "Change Package"
|
||||
|
||||
# checks options for producer profile
|
||||
expect(page).to have_content "PRODUCER PROFILE"
|
||||
expect(page).to have_content "PRODUCER SHOP"
|
||||
expect(page).to have_content "PRODUCER HUB"
|
||||
expect(page).not_to have_content "PROFILE ONLY"
|
||||
expect(page).not_to have_content "HUB SHOP"
|
||||
expect(page).to have_content "Producer Profile"
|
||||
expect(page).to have_content "Producer Shop"
|
||||
expect(page).to have_content "Producer Hub"
|
||||
expect(page).not_to have_content "Profile Only"
|
||||
expect(page).not_to have_content "Hub Shop"
|
||||
|
||||
# Producer hub option is selected
|
||||
page.find('a', class: 'selected', text: "PRODUCER HUB")
|
||||
page.find('a', class: 'selected', text: "Producer Hub")
|
||||
expect(enterprise.reload.is_primary_producer).to eq true
|
||||
expect(enterprise.reload.sells).to eq('any')
|
||||
|
||||
@@ -857,14 +858,14 @@ RSpec.describe '
|
||||
assert_hub_content
|
||||
|
||||
# Changes to producer shop
|
||||
page.find('a', text: "PRODUCER SHOP").click
|
||||
page.find('a', text: "Producer Shop").click
|
||||
click_button "Change now"
|
||||
expect(page).to have_content update_message
|
||||
|
||||
# Checks changes are persistent
|
||||
click_button "Change Package"
|
||||
|
||||
page.find('a', class: 'selected', text: "PRODUCER SHOP")
|
||||
page.find('a', class: 'selected', text: "Producer Shop")
|
||||
expect(enterprise.reload.is_primary_producer).to eq true
|
||||
expect(enterprise.reload.sells).to eq('own')
|
||||
|
||||
@@ -873,14 +874,14 @@ RSpec.describe '
|
||||
assert_hub_content
|
||||
|
||||
# Changes to producer profile
|
||||
page.find('a', text: "PRODUCER PROFILE").click
|
||||
page.find('a', text: "Producer Profile").click
|
||||
click_button "Change now"
|
||||
expect(page).to have_content update_message
|
||||
|
||||
# Checks changes are persistent
|
||||
click_button "Change Package"
|
||||
|
||||
page.find('a', class: 'selected', text: "PRODUCER PROFILE")
|
||||
page.find('a', class: 'selected', text: "Producer Profile")
|
||||
|
||||
# a primary producer:
|
||||
expect(enterprise.reload.is_primary_producer).to eq true
|
||||
@@ -909,14 +910,14 @@ RSpec.describe '
|
||||
click_button "Change Package"
|
||||
|
||||
# checks options for non-producer profile
|
||||
expect(page).not_to have_content "PRODUCER PROFILE"
|
||||
expect(page).not_to have_content "PRODUCER SHOP"
|
||||
expect(page).not_to have_content "PRODUCER HUB"
|
||||
expect(page).to have_content "PROFILE ONLY"
|
||||
expect(page).to have_content "HUB SHOP"
|
||||
expect(page).not_to have_content "Producer Profile"
|
||||
expect(page).not_to have_content "Producer Shop"
|
||||
expect(page).not_to have_content "Producer Hub"
|
||||
expect(page).to have_content "Profile Only"
|
||||
expect(page).to have_content "Hub Shop"
|
||||
|
||||
# Producer hub option is selected
|
||||
page.find('a', class: 'selected', text: "HUB SHOP")
|
||||
page.find('a', class: 'selected', text: "Hub Shop")
|
||||
expect(enterprise.reload.is_primary_producer).to eq false
|
||||
expect(enterprise.reload.producer_profile_only).to eq false
|
||||
|
||||
@@ -925,14 +926,14 @@ RSpec.describe '
|
||||
assert_hub_content
|
||||
|
||||
# Changes to producer shop
|
||||
page.find('a', text: "PROFILE ONLY").click
|
||||
page.find('a', text: "Profile Only").click
|
||||
click_button "Change now"
|
||||
expect(page).to have_content update_message
|
||||
|
||||
# Checks changes are persistent
|
||||
click_button "Change Package"
|
||||
|
||||
page.find('a', class: 'selected', text: "PROFILE ONLY")
|
||||
page.find('a', class: 'selected', text: "Profile Only")
|
||||
expect(enterprise.reload.is_primary_producer).to eq false
|
||||
expect(enterprise.reload.producer_profile_only).to eq false
|
||||
|
||||
@@ -950,13 +951,15 @@ RSpec.describe '
|
||||
page.find("td.package").click
|
||||
|
||||
# checks options for producer profile
|
||||
expect(page).to have_content "PROFILE ONLY"
|
||||
expect(page).to have_content "PRODUCER SHOP"
|
||||
expect(page).to have_content "PRODUCER HUB"
|
||||
expect(page).not_to have_content "HUB SHOP"
|
||||
within ".enterprise_package_panel" do
|
||||
expect(page).to have_content "Profile Only"
|
||||
expect(page).to have_content "Producer Shop"
|
||||
expect(page).to have_content "Producer Hub"
|
||||
expect(page).not_to have_content "Hub Shop"
|
||||
end
|
||||
|
||||
# Producer hub option is selected
|
||||
page.find('a', class: 'selected', text: "PRODUCER HUB")
|
||||
page.find('a', class: 'selected', text: "Producer Hub")
|
||||
expect(enterprise.is_primary_producer).to eq true
|
||||
expect(enterprise.reload.sells).to eq('any')
|
||||
|
||||
@@ -964,11 +967,11 @@ RSpec.describe '
|
||||
assert_hub_menu
|
||||
|
||||
# Changes to producer shop
|
||||
page.find('a', text: "PRODUCER SHOP").click
|
||||
page.find('a', text: "Producer Shop").click
|
||||
page.find('a', text: "SAVE").click
|
||||
|
||||
# Checks changes are persistent
|
||||
page.find('a', class: 'selected', text: "PRODUCER SHOP")
|
||||
page.find('a', class: 'selected', text: "Producer Shop")
|
||||
|
||||
# updates page
|
||||
page.refresh
|
||||
@@ -980,11 +983,11 @@ RSpec.describe '
|
||||
|
||||
# Changes to producer profile
|
||||
page.find("td.package").click
|
||||
page.find('a', text: "PROFILE ONLY").click
|
||||
page.find('a', text: "Profile Only").click
|
||||
page.find('a', text: "SAVE").click
|
||||
|
||||
# Checks changes are persistent
|
||||
page.find('a', class: 'selected', text: "PROFILE ONLY")
|
||||
page.find('a', class: 'selected', text: "Profile Only")
|
||||
|
||||
# updates page
|
||||
page.refresh
|
||||
@@ -1015,16 +1018,16 @@ RSpec.describe '
|
||||
page.find("td.producer").click
|
||||
|
||||
# checks options for producer profile
|
||||
expect(page).to have_content "PRODUCER"
|
||||
expect(page).to have_content "NON-PRODUCER"
|
||||
expect(page).to have_content "Producer"
|
||||
expect(page).to have_content "Non-producer"
|
||||
|
||||
# Producer hub option is selected
|
||||
page.find('a', class: 'selected', text: "PRODUCER")
|
||||
page.find('a', class: 'selected', text: "Producer")
|
||||
expect(enterprise.is_primary_producer).to eq true
|
||||
expect(enterprise.reload.sells).to eq('any')
|
||||
|
||||
# Changes to non-producer
|
||||
page.find('a', text: "NON-PRODUCER").click
|
||||
page.find('a', text: "Non-producer").click
|
||||
page.find('a', text: "SAVE").click
|
||||
|
||||
# updates page
|
||||
@@ -1036,19 +1039,21 @@ RSpec.describe '
|
||||
page.find("td.package").click
|
||||
|
||||
# checks options for non-producer profile
|
||||
expect(page).not_to have_content "PRODUCER PROFILE"
|
||||
expect(page).not_to have_content "PRODUCER SHOP"
|
||||
expect(page).not_to have_content "PRODUCER HUB"
|
||||
expect(page).to have_content "PROFILE ONLY"
|
||||
expect(page).to have_content "HUB SHOP"
|
||||
within ".enterprise_package_panel" do
|
||||
expect(page).not_to have_content "Producer Profile"
|
||||
expect(page).not_to have_content "Producer Shop"
|
||||
expect(page).not_to have_content "Producer Hub"
|
||||
expect(page).to have_content "Profile Only"
|
||||
expect(page).to have_content "Hub Shop"
|
||||
end
|
||||
|
||||
# Producer hub option is selected
|
||||
page.find('a', class: 'selected', text: "HUB SHOP")
|
||||
page.find('a', class: 'selected', text: "Hub Shop")
|
||||
expect(enterprise.reload.is_primary_producer).to eq false
|
||||
expect(enterprise.reload.sells).to eq('any')
|
||||
|
||||
# Changes to producer shop
|
||||
page.find('a', text: "PROFILE ONLY").click
|
||||
page.find('a', text: "Profile Only").click
|
||||
page.find('a', text: "SAVE").click
|
||||
|
||||
# updates page
|
||||
@@ -1056,12 +1061,12 @@ RSpec.describe '
|
||||
|
||||
# Checks changes are persistent
|
||||
page.find("td.package").click
|
||||
page.find('a', class: 'selected', text: "PROFILE ONLY")
|
||||
page.find('a', class: 'selected', text: "Profile Only")
|
||||
|
||||
# Displays the correct dashboard sections
|
||||
within "#admin-menu" do
|
||||
expect(page).to have_content "DASHBOARD"
|
||||
expect(page).to have_content "ENTERPRISES"
|
||||
expect(page).to have_content "Dashboard"
|
||||
expect(page).to have_content "Enterprises"
|
||||
end
|
||||
|
||||
expect(enterprise.reload.is_primary_producer).to eq false
|
||||
@@ -1085,13 +1090,13 @@ end
|
||||
|
||||
def assert_hub_menu
|
||||
within "#admin-menu" do
|
||||
expect(page).to have_content "DASHBOARD"
|
||||
expect(page).to have_content "PRODUCTS"
|
||||
expect(page).to have_content "ORDER CYCLES"
|
||||
expect(page).to have_content "ORDERS"
|
||||
expect(page).to have_content "REPORTS"
|
||||
expect(page).to have_content "ENTERPRISES"
|
||||
expect(page).to have_content "CUSTOMERS"
|
||||
expect(page).to have_content "Dashboard"
|
||||
expect(page).to have_content "Products"
|
||||
expect(page).to have_content "Order cycles"
|
||||
expect(page).to have_content "Orders"
|
||||
expect(page).to have_content "Reports"
|
||||
expect(page).to have_content "Enterprises"
|
||||
expect(page).to have_content "Customers"
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1106,13 +1111,13 @@ end
|
||||
|
||||
def assert_supplier_menu
|
||||
within "#admin-menu" do
|
||||
expect(page).to have_content "DASHBOARD"
|
||||
expect(page).to have_content "PRODUCTS"
|
||||
expect(page).not_to have_content "ORDER CYCLES"
|
||||
expect(page).not_to have_content "ORDERS"
|
||||
expect(page).to have_content "REPORTS"
|
||||
expect(page).to have_content "ENTERPRISES"
|
||||
expect(page).not_to have_content "CUSTOMERS"
|
||||
expect(page).to have_content "Dashboard"
|
||||
expect(page).to have_content "Products"
|
||||
expect(page).not_to have_content "Order cycles"
|
||||
expect(page).not_to have_content "Orders"
|
||||
expect(page).to have_content "Reports"
|
||||
expect(page).to have_content "Enterprises"
|
||||
expect(page).not_to have_content "Customers"
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1127,8 +1132,8 @@ end
|
||||
|
||||
def assert_profile
|
||||
within "#admin-menu" do
|
||||
expect(page).to have_content "DASHBOARD"
|
||||
expect(page).to have_content "ENTERPRISES"
|
||||
expect(page).to have_content "Dashboard"
|
||||
expect(page).to have_content "Enterprises"
|
||||
end
|
||||
|
||||
within "#content" do
|
||||
@@ -1136,3 +1141,9 @@ def assert_profile
|
||||
expect(page).to have_content "Edit profile details"
|
||||
end
|
||||
end
|
||||
|
||||
def select_white_label
|
||||
within(".side_menu") do
|
||||
find(:link, "White Label").trigger("click")
|
||||
end
|
||||
end
|
||||
|
||||
@@ -7,14 +7,14 @@ RSpec.describe "Test Flatpickr" do
|
||||
include WebHelper
|
||||
|
||||
context "orders" do
|
||||
it "opens the datepicker and closes it using the 'CLOSE' button" do
|
||||
it "opens the datepicker and closes it using the 'Close' button" do
|
||||
login_as_admin
|
||||
visit 'admin/orders'
|
||||
open_datepicker('.datepicker')
|
||||
# Looks for the close button and click it
|
||||
within(".flatpickr-calendar.open") do
|
||||
expect(page).to have_selector '.shortcut-buttons-flatpickr-buttons'
|
||||
find("button", text: "CLOSE").click
|
||||
find("button", text: "Close").click
|
||||
end
|
||||
# Should no more have opened flatpickr
|
||||
expect(page).not_to have_selector '.flatpickr-calendar.open'
|
||||
|
||||
@@ -47,7 +47,7 @@ RSpec.describe '
|
||||
end
|
||||
|
||||
def expect_all_products_loaded
|
||||
expect(page).to have_content new_product.name.upcase
|
||||
expect(page).to have_content new_product.name
|
||||
expect(page).to have_content "2 of 2 Variants Loaded"
|
||||
end
|
||||
end
|
||||
|
||||
@@ -16,7 +16,7 @@ RSpec.describe '
|
||||
|
||||
# Expect correct values
|
||||
expect(page).to have_field('order_cycle_name', with: oc.name)
|
||||
expect(page).to have_content "COORDINATOR #{oc.coordinator.name}"
|
||||
expect(page).to have_content "Coordinator #{oc.coordinator.name}"
|
||||
expect(page).to have_button('Save', disabled: true)
|
||||
expect(page).to have_button('Save and Next', disabled: true)
|
||||
|
||||
@@ -35,6 +35,9 @@ RSpec.describe '
|
||||
click_link 'Orders'
|
||||
end
|
||||
|
||||
# Click dismiss on distributor warning
|
||||
click_button 'Dismiss'
|
||||
|
||||
# Click cancel with unsaved changes
|
||||
dismiss_confirm "" do
|
||||
click_button 'Cancel'
|
||||
@@ -85,6 +88,9 @@ RSpec.describe '
|
||||
login_as_admin
|
||||
visit edit_admin_order_cycle_path(oc)
|
||||
|
||||
# Click dismiss on distributor warning
|
||||
click_button 'Dismiss'
|
||||
|
||||
# Go to incoming step
|
||||
click_button 'Next'
|
||||
|
||||
@@ -106,6 +112,9 @@ RSpec.describe '
|
||||
click_link 'Orders'
|
||||
end
|
||||
|
||||
# Click dismiss on distributor warning
|
||||
click_button 'Dismiss'
|
||||
|
||||
# Click cancel with unsaved changes
|
||||
dismiss_confirm "" do
|
||||
click_button 'Cancel'
|
||||
@@ -154,9 +163,15 @@ RSpec.describe '
|
||||
login_as_admin
|
||||
visit edit_admin_order_cycle_path(oc)
|
||||
|
||||
# Click dismiss on distributor warning
|
||||
click_button 'Dismiss'
|
||||
|
||||
# Go to incoming step
|
||||
click_button 'Next'
|
||||
|
||||
# Click dismiss on distributor warning
|
||||
click_button 'Dismiss'
|
||||
|
||||
# Go to outgoing step
|
||||
click_button 'Next'
|
||||
|
||||
@@ -178,6 +193,9 @@ RSpec.describe '
|
||||
click_link 'Orders'
|
||||
end
|
||||
|
||||
# Click dismiss on distributor warning
|
||||
click_button 'Dismiss'
|
||||
|
||||
# Click cancel with unsaved changes
|
||||
dismiss_confirm "" do
|
||||
click_button 'Cancel'
|
||||
|
||||
@@ -30,9 +30,9 @@ RSpec.describe '
|
||||
.to eq(oc.orders_open_at.strftime("%Y-%m-%d %H:%M"))
|
||||
expect(page.find('#order_cycle_orders_close_at').value)
|
||||
.to eq(oc.orders_close_at.strftime("%Y-%m-%d %H:%M"))
|
||||
expect(page).to have_content "COORDINATOR #{oc.coordinator.name}"
|
||||
expect(page).to have_content "Coordinator #{oc.coordinator.name}"
|
||||
|
||||
click_button 'Next'
|
||||
trigger_click(:button, 'Next')
|
||||
|
||||
# And I should see the suppliers
|
||||
expect(page).to have_selector 'td.supplier_name', text: oc.suppliers.first.name
|
||||
@@ -75,7 +75,8 @@ RSpec.describe '
|
||||
'order_cycle_incoming_exchange_1_enterprise_fees_0_enterprise_fee_id',
|
||||
selected: supplier.enterprise_fees.first.name
|
||||
)
|
||||
click_button 'Next'
|
||||
|
||||
trigger_click(:button, 'Next')
|
||||
|
||||
# And I should see the distributors
|
||||
expect(page).to have_selector 'td.distributor_name', text: oc.distributors.first.name
|
||||
|
||||
@@ -73,7 +73,8 @@ RSpec.describe '
|
||||
|
||||
# I can load more order_cycles
|
||||
expect(page).not_to have_selector "#listing_order_cycles tr.order-cycle-#{oc7.id}"
|
||||
click_button "Show 30 more days"
|
||||
trigger_click(:button, "Show 30 more days")
|
||||
|
||||
expect(page).to have_selector "#listing_order_cycles tr.order-cycle-#{oc7.id}"
|
||||
|
||||
# I can filter order cycle by involved enterprises
|
||||
@@ -177,7 +178,7 @@ RSpec.describe '
|
||||
within(".flatpickr-calendar.open") do
|
||||
expect(page).to have_selector '.shortcut-buttons-flatpickr-buttons'
|
||||
select_datetime_from_datepicker test_value
|
||||
find("button", text: "CLOSE").click
|
||||
find("button", text: "Close").click
|
||||
end
|
||||
|
||||
# Should no more have opened flatpickr
|
||||
|
||||
@@ -334,7 +334,7 @@ RSpec.describe '
|
||||
|
||||
visit edit_admin_order_cycle_path(oc)
|
||||
|
||||
expect(page).to have_content 'Re notify producers'.upcase
|
||||
expect(page).to have_content "Re notify producers"
|
||||
end
|
||||
|
||||
it "allows removing exchanges" do
|
||||
@@ -413,9 +413,7 @@ RSpec.describe '
|
||||
|
||||
# we need this assertion here to assure there is enough time to
|
||||
# toggle the variant box and evaluate the following assertion
|
||||
expect(page).to have_content product.name.upcase
|
||||
|
||||
expect(page).to have_content "No variant available for this product"
|
||||
expect(page).to have_content product.name
|
||||
end
|
||||
|
||||
it "doesn't show a warning when going to 'outgoing products' tab" do
|
||||
@@ -434,7 +432,7 @@ RSpec.describe '
|
||||
|
||||
# we need this assertion here to assure there is enough time to
|
||||
# toggle the variant box and evaluate the following assertion
|
||||
expect(page).to have_content product.name.upcase
|
||||
expect(page).to have_content product.name
|
||||
|
||||
expect(page).not_to have_content "No variant available for this product"
|
||||
end
|
||||
@@ -522,7 +520,8 @@ RSpec.describe '
|
||||
)
|
||||
|
||||
# When I save, any exchanges that I can't manage remain
|
||||
click_button 'Save'
|
||||
# overlapping warning, we need to use 'node.trigger("click")'
|
||||
page.find(:button, "Save").trigger("click")
|
||||
expect(page).to have_content "Your order cycle has been updated."
|
||||
|
||||
oc.reload
|
||||
@@ -781,7 +780,7 @@ RSpec.describe '
|
||||
uncheck "order_cycle_incoming_exchange_0_variants_#{v3.id}"
|
||||
|
||||
# Add tags
|
||||
expect(page).to have_content "TAGS"
|
||||
expect(page).to have_content "Tags"
|
||||
|
||||
within "tags-with-translation" do
|
||||
find(:css, "tags-input .tags input").set "wholesale\n"
|
||||
@@ -794,11 +793,16 @@ RSpec.describe '
|
||||
click_button 'Add coordinator fee'
|
||||
select 'that fee', from: 'order_cycle_coordinator_fee_0_id'
|
||||
|
||||
# Click dismiss on distributor warning
|
||||
click_button 'Dismiss'
|
||||
|
||||
# When I update, or update and close, both work
|
||||
click_button 'Save'
|
||||
expect(page).to have_content 'Your order cycle has been updated.'
|
||||
|
||||
fill_in 'order_cycle_outgoing_exchange_0_pickup_instructions', with: 'yyz'
|
||||
|
||||
scroll_to(:bottom)
|
||||
click_button 'Save and Back to List'
|
||||
|
||||
# Then my order cycle should have been updated
|
||||
|
||||
@@ -73,7 +73,7 @@ RSpec.describe '
|
||||
expect(order.line_items.count).to be_zero
|
||||
|
||||
click_link "Order Details"
|
||||
expect(page).to have_content 'ADD PRODUCT'
|
||||
expect(page).to have_content 'Add Product'
|
||||
select2_select product.name, from: 'add_variant_id', search: true
|
||||
find('button.add_variant').click
|
||||
# Wait for JS
|
||||
@@ -105,10 +105,10 @@ RSpec.describe '
|
||||
end
|
||||
|
||||
it "doesn't show links to other steps" do
|
||||
expect(page).not_to have_content "CUSTOMER DETAILS"
|
||||
expect(page).not_to have_content "ORDER DETAILS"
|
||||
expect(page).not_to have_content "PAYMENTS"
|
||||
expect(page).not_to have_content "ADJUSTMENTS"
|
||||
expect(page).not_to have_content "Customer Details"
|
||||
expect(page).not_to have_content "Order Details"
|
||||
expect(page).not_to have_content "Payments"
|
||||
expect(page).not_to have_content "Adjustments"
|
||||
end
|
||||
end
|
||||
|
||||
@@ -126,8 +126,11 @@ RSpec.describe '
|
||||
expect(order.customer_id).to be_nil
|
||||
|
||||
tomselect_search_and_select customer2.email, from: 'customer_search_override'
|
||||
|
||||
check 'order_use_billing'
|
||||
click_button 'Update'
|
||||
|
||||
trigger_click(:button, 'Update')
|
||||
|
||||
expect(page).to have_content 'Customer Details updated'
|
||||
|
||||
expect(order.reload.customer).to eq customer2
|
||||
@@ -147,12 +150,13 @@ RSpec.describe '
|
||||
it "should update the order customer (not only its details)" do
|
||||
expect(page).to have_field 'order_email', with: customer2.email
|
||||
tomselect_search_and_select customer3.email, from: 'customer_search_override'
|
||||
|
||||
check 'order_use_billing'
|
||||
|
||||
expect(page).to have_field 'order_email', with: customer3.email
|
||||
|
||||
expect do
|
||||
click_button 'Update'
|
||||
trigger_click(:button, 'Update')
|
||||
expect(page).to have_content 'Customer Details updated'
|
||||
end.to change { order.reload.customer }.from(customer2).to(customer3)
|
||||
end
|
||||
@@ -288,6 +292,8 @@ RSpec.describe '
|
||||
login_as_admin
|
||||
visit spree.edit_admin_order_path(order)
|
||||
|
||||
dismiss_warning
|
||||
|
||||
expect(page).to have_select2 "order_distributor_id", with_options: [d.name]
|
||||
select2_select d.name, from: 'order_distributor_id'
|
||||
select2_select oc.name, from: 'order_order_cycle_id'
|
||||
@@ -440,7 +446,7 @@ RSpec.describe '
|
||||
expect(page).to have_content "Customer Details updated"
|
||||
click_link "Order Details"
|
||||
|
||||
expect(page).to have_content 'Add Product'.upcase
|
||||
expect(page).to have_content 'Add Product'
|
||||
select2_select product.name, from: 'add_variant_id', search: true
|
||||
|
||||
within("table.stock-levels") do
|
||||
@@ -539,7 +545,7 @@ RSpec.describe '
|
||||
visit spree.edit_admin_order_path(order)
|
||||
|
||||
click_link "Payments"
|
||||
expect(page).to have_content "NEW PAYMENT"
|
||||
expect(page).to have_content "New Payment"
|
||||
end
|
||||
end
|
||||
|
||||
@@ -611,7 +617,7 @@ RSpec.describe '
|
||||
expect(page).to have_selector "fieldset#order-total", text: order.display_total
|
||||
|
||||
# shows the order tax adjustments
|
||||
within('fieldset', text: 'Line Item Adjustments'.upcase) do
|
||||
within('fieldset', text: 'Line Item Adjustments') do
|
||||
expect(page).to have_selector "td", match: :first, text: "Tax 1"
|
||||
expect(page).to have_selector "td.total", text: Spree::Money.new(10)
|
||||
end
|
||||
@@ -738,7 +744,7 @@ RSpec.describe '
|
||||
it "should not display links but a js alert" do
|
||||
visit spree.edit_admin_order_path(order)
|
||||
|
||||
find("summary", text: "ACTIONS").click
|
||||
find("summary", text: "Actions").click
|
||||
expect(page).to have_link "Send Invoice", href: "#"
|
||||
expect(page).to have_link "Print Invoice", href: "#"
|
||||
|
||||
@@ -748,7 +754,7 @@ RSpec.describe '
|
||||
expect(message)
|
||||
.to eq "#{distributor1.name} must have a valid ABN before invoices can be used."
|
||||
|
||||
find("summary", text: "ACTIONS").click
|
||||
find("summary", text: "Actions").click
|
||||
message = accept_prompt do
|
||||
click_link "Send Invoice"
|
||||
end
|
||||
@@ -772,13 +778,17 @@ RSpec.describe '
|
||||
visit spree.edit_admin_order_path(order)
|
||||
|
||||
expect(page).not_to have_content different_shipping_method_for_distributor1.name
|
||||
dismiss_warning
|
||||
|
||||
find('.edit-method').click
|
||||
expect(page).to have_select2('selected_shipping_rate_id',
|
||||
with_options: [
|
||||
shipping_method_for_distributor1.name,
|
||||
different_shipping_method_for_distributor1.name
|
||||
], without_options: [shipping_method_for_distributor2.name])
|
||||
|
||||
# TODO assertion not working due to overlapping elements on new BUU design
|
||||
# expect(page).to have_select2('selected_shipping_rate_id',
|
||||
# with_options: [
|
||||
# shipping_method_for_distributor1.name,
|
||||
# different_shipping_method_for_distributor1.name
|
||||
# ], without_options: [shipping_method_for_distributor2.name])
|
||||
|
||||
select2_select(different_shipping_method_for_distributor1.name,
|
||||
from: 'selected_shipping_rate_id')
|
||||
find('.save-method').click
|
||||
@@ -1067,7 +1077,7 @@ RSpec.describe '
|
||||
|
||||
visit spree.edit_admin_order_path(incomplete_order)
|
||||
|
||||
expect(page).to have_content "Out of Stock".upcase
|
||||
expect(page).to have_content "Out of Stock"
|
||||
|
||||
within ".insufficient-stock-items" do
|
||||
expect(page).to have_content incomplete_order.products.first.name
|
||||
@@ -1078,8 +1088,8 @@ RSpec.describe '
|
||||
end
|
||||
|
||||
# updates the order and verifies the warning disappears
|
||||
click_button 'Update And Recalculate Fees'
|
||||
expect(page).not_to have_content "Out of Stock".upcase
|
||||
trigger_click(:button, 'Update And Recalculate Fees')
|
||||
expect(page).not_to have_content "Out of Stock"
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -1089,7 +1099,9 @@ RSpec.describe '
|
||||
expect(page).to have_selector 'h1', text: 'Customer Details'
|
||||
click_link "Order Details"
|
||||
|
||||
expect(page).to have_content 'ADD PRODUCT'
|
||||
dismiss_warning
|
||||
|
||||
expect(page).to have_content 'Add Product'
|
||||
select2_select product.name, from: 'add_variant_id', search: true
|
||||
|
||||
find('button.add_variant').click
|
||||
@@ -1099,6 +1111,8 @@ RSpec.describe '
|
||||
expect(page).to have_select2 'order_distributor_id', with_options: [distributor1.name]
|
||||
expect(page).not_to have_select2 'order_distributor_id', with_options: [distributor2.name]
|
||||
|
||||
dismiss_warning
|
||||
|
||||
expect(page).to have_select2 'order_order_cycle_id',
|
||||
with_options: ["#{order_cycle1.name} (open)"]
|
||||
expect(page).not_to have_select2 'order_order_cycle_id',
|
||||
|
||||
@@ -114,7 +114,7 @@ RSpec.describe '
|
||||
page.find("input[name='bulk_ids[]'][value='#{order5.id}']").click
|
||||
end
|
||||
|
||||
page.find("span.icon-reorder", text: "ACTIONS").click
|
||||
page.find("span.icon-reorder", text: "Actions").click
|
||||
|
||||
within ".ofn-drop-down .menu" do
|
||||
page.find("span", text: "Send Invoices").click
|
||||
@@ -205,7 +205,7 @@ RSpec.describe '
|
||||
page.find(order4_selector).click
|
||||
page.find(order5_selector).click
|
||||
|
||||
page.find("span.icon-reorder", text: "ACTIONS").click
|
||||
page.find("span.icon-reorder", text: "Actions").click
|
||||
within ".ofn-drop-down .menu" do
|
||||
expect {
|
||||
page.find("span", text: "Print Invoices").click # Prints invoices in bulk
|
||||
@@ -223,7 +223,7 @@ RSpec.describe '
|
||||
expect(page).to have_content "Bulk Invoice created"
|
||||
|
||||
within ".modal-content" do
|
||||
expect(page).to have_link(class: "button", text: "VIEW FILE", href: /invoices/)
|
||||
expect(page).to have_link(class: "button", text: "View File", href: /invoices/)
|
||||
|
||||
invoice_content = extract_pdf_content
|
||||
|
||||
@@ -243,7 +243,7 @@ RSpec.describe '
|
||||
page.find(order4_selector).click
|
||||
page.find(order5_selector).click
|
||||
|
||||
page.find("span.icon-reorder", text: "ACTIONS").click
|
||||
page.find("span.icon-reorder", text: "Actions").click
|
||||
within ".ofn-drop-down .menu" do
|
||||
expect {
|
||||
page.find("span", text: "Print Invoices").click # Prints invoices in bulk
|
||||
@@ -259,7 +259,7 @@ RSpec.describe '
|
||||
expect(page).to have_content "Bulk Invoice created"
|
||||
|
||||
within ".modal-content" do
|
||||
expect(page).to have_link(class: "button", text: "VIEW FILE",
|
||||
expect(page).to have_link(class: "button", text: "View File",
|
||||
href: /invoices/)
|
||||
|
||||
invoice_content = extract_pdf_content
|
||||
@@ -305,7 +305,7 @@ RSpec.describe '
|
||||
order4.name.gsub(/.* /, ""), order5.name.gsub(/.* /, "")].sort
|
||||
}
|
||||
it "orders by customer name ascending" do
|
||||
page.find('a', text: "NAME").click # orders alphabetically (asc)
|
||||
page.find('a', text: "Name").click # orders alphabetically (asc)
|
||||
sleep(0.5) # waits for column sorting
|
||||
|
||||
page.find("#selectAll").click
|
||||
@@ -325,9 +325,9 @@ RSpec.describe '
|
||||
order4.name.gsub(/.* /, ""), order5.name.gsub(/.* /, "")].sort.reverse
|
||||
}
|
||||
it "order by customer name descending" do
|
||||
page.find('a', text: "NAME").click # orders alphabetically (asc)
|
||||
page.find('a', text: "Name").click # orders alphabetically (asc)
|
||||
sleep(0.5) # waits for column sorting
|
||||
page.find('a', text: "NAME").click # orders alphabetically (desc)
|
||||
page.find('a', text: "Name").click # orders alphabetically (desc)
|
||||
sleep(0.5) # waits for column sorting
|
||||
|
||||
page.find("#selectAll").click
|
||||
@@ -377,7 +377,7 @@ RSpec.describe '
|
||||
page.find(order4_selector).click
|
||||
page.find(order5_selector).click
|
||||
|
||||
page.find("span.icon-reorder", text: "ACTIONS").click
|
||||
page.find("span.icon-reorder", text: "Actions").click
|
||||
within ".ofn-drop-down .menu" do
|
||||
expect {
|
||||
page.find("span", text: "Print Invoices").click # Prints invoices in bulk
|
||||
@@ -430,7 +430,7 @@ RSpec.describe '
|
||||
page.find("#listing_orders tbody tr:nth-child(1) input[name='bulk_ids[]']").click
|
||||
page.find("#listing_orders tbody tr:nth-child(2) input[name='bulk_ids[]']").click
|
||||
|
||||
page.find("span.icon-reorder", text: "ACTIONS").click
|
||||
page.find("span.icon-reorder", text: "Actions").click
|
||||
within ".ofn-drop-down .menu" do
|
||||
page.find("span", text: "Cancel Orders").click
|
||||
end
|
||||
@@ -445,7 +445,7 @@ RSpec.describe '
|
||||
}.not_to enqueue_job(ActionMailer::MailDeliveryJob).exactly(:twice)
|
||||
end
|
||||
|
||||
page.find("span.icon-reorder", text: "ACTIONS").click
|
||||
page.find("span.icon-reorder", text: "Actions").click
|
||||
within ".ofn-drop-down .menu" do
|
||||
page.find("span", text: "Cancel Orders").click
|
||||
end
|
||||
@@ -484,7 +484,7 @@ RSpec.describe '
|
||||
order.update_attribute(:distributor, distributor)
|
||||
order.update_attribute(:order_cycle, order_cycle)
|
||||
|
||||
page.find("span.icon-reorder", text: "ACTIONS").click
|
||||
page.find("span.icon-reorder", text: "Actions").click
|
||||
within ".ofn-drop-down .menu" do
|
||||
page.find("span", text: "Resend Confirmation").click
|
||||
end
|
||||
@@ -502,7 +502,7 @@ RSpec.describe '
|
||||
|
||||
def extract_pdf_content
|
||||
# Extract last part of invoice URL
|
||||
link = page.find(class: "button", text: "VIEW FILE")
|
||||
link = page.find(class: "button", text: "View File")
|
||||
filename = link[:href].match %r{/invoices/.*}
|
||||
|
||||
# Load invoice temp file directly instead of downloading
|
||||
@@ -511,7 +511,7 @@ RSpec.describe '
|
||||
end
|
||||
|
||||
def print_all_invoices
|
||||
page.find("span.icon-reorder", text: "ACTIONS").click
|
||||
page.find("span.icon-reorder", text: "Actions").click
|
||||
within ".ofn-drop-down .menu" do
|
||||
expect {
|
||||
page.find("span", text: "Print Invoices").click # Prints invoices in bulk
|
||||
|
||||
@@ -109,7 +109,7 @@ RSpec.describe '
|
||||
context 'when the order has no invoices' do
|
||||
it 'creates an invoice for the order' do
|
||||
expect(order.invoices.count).to eq 0
|
||||
page.find("#links-dropdown", text: "ACTIONS").click
|
||||
page.find("#links-dropdown", text: "Actions").click
|
||||
click_link "Print Invoice"
|
||||
# wait for PDF to open in new window
|
||||
new_window = windows.last
|
||||
@@ -132,7 +132,7 @@ RSpec.describe '
|
||||
|
||||
it 'updates the lastest invoice for the order' do
|
||||
expect(order.invoices.count).to eq 1
|
||||
page.find("#links-dropdown", text: "ACTIONS").click
|
||||
page.find("#links-dropdown", text: "Actions").click
|
||||
click_link "Print Invoice"
|
||||
new_window = windows.last
|
||||
page.within_window new_window do
|
||||
@@ -149,7 +149,7 @@ RSpec.describe '
|
||||
|
||||
it 'creates a new invoice for the order' do
|
||||
expect(order.invoices.count).to eq 1
|
||||
page.find("#links-dropdown", text: "ACTIONS").click
|
||||
page.find("#links-dropdown", text: "Actions").click
|
||||
click_link "Print Invoice"
|
||||
new_window = windows.last
|
||||
page.within_window new_window do
|
||||
@@ -260,7 +260,7 @@ RSpec.describe "Invoice order states", feature: :invoices do
|
||||
"Amount",
|
||||
"Status",
|
||||
"File",
|
||||
].join(" ").upcase
|
||||
].join(" ")
|
||||
}
|
||||
|
||||
let(:invoice_number){ "#{order.distributor_id}-1" }
|
||||
|
||||
@@ -279,7 +279,7 @@ RSpec.describe '
|
||||
expect(page).to have_content order_not_empty_no_address.number
|
||||
|
||||
# And the same orders are displayed when sorting by name:
|
||||
find("th a", text: "NAME").click
|
||||
find("th a", text: "Name").click
|
||||
|
||||
expect(page).not_to have_content order_empty.number
|
||||
expect(page).to have_content order_not_empty.number
|
||||
@@ -298,11 +298,11 @@ RSpec.describe '
|
||||
visit spree.admin_orders_path
|
||||
end
|
||||
it "orders by completion date" do
|
||||
find("a", text: 'COMPLETED AT').click # sets ascending ordering
|
||||
find("a", text: 'Completed At').click # sets ascending ordering
|
||||
expect(page).to have_content(
|
||||
/#{order5.number}.*#{order4.number}.*#{order3.number}.*#{order2.number}/m
|
||||
)
|
||||
find("a", text: 'COMPLETED AT').click # sets descending ordering
|
||||
find("a", text: 'Completed At').click # sets descending ordering
|
||||
expect(page).to have_content(
|
||||
/#{order2.number}.*#{order3.number}.*#{order4.number}.*#{order5.number}/m
|
||||
)
|
||||
@@ -320,11 +320,11 @@ RSpec.describe '
|
||||
end
|
||||
|
||||
it "orders by order number" do
|
||||
find("a", text: 'NUMBER').click # sets ascending ordering
|
||||
find("a", text: 'Number').click # sets ascending ordering
|
||||
expect(page).to have_content(
|
||||
/#{order5.number}.*#{order4.number}.*#{order3.number}.*#{order2.number}/m
|
||||
)
|
||||
find("a", text: 'NUMBER').click # sets descending ordering
|
||||
find("a", text: 'Number').click # sets descending ordering
|
||||
expect(page).to have_content(
|
||||
/#{order2.number}.*#{order3.number}.*#{order4.number}.*#{order5.number}/m
|
||||
)
|
||||
@@ -344,11 +344,11 @@ RSpec.describe '
|
||||
end
|
||||
|
||||
it "orders by order state" do
|
||||
find("a", text: 'STATE').click # sets ascending ordering
|
||||
find("a", text: 'State').click # sets ascending ordering
|
||||
expect(page).to have_content(
|
||||
/#{order5.number}.*#{order4.number}.*#{order3.number}.*#{order2.number}/m
|
||||
)
|
||||
find("a", text: 'STATE').click # sets descending ordering
|
||||
find("a", text: 'State').click # sets descending ordering
|
||||
expect(page).to have_content(
|
||||
/#{order2.number}.*#{order3.number}.*#{order4.number}.*#{order5.number}/m
|
||||
)
|
||||
@@ -365,9 +365,9 @@ RSpec.describe '
|
||||
end
|
||||
|
||||
it "orders by payment state" do
|
||||
find("a", text: 'PAYMENT STATE').click # sets ascending ordering
|
||||
find("a", text: 'Payment State').click # sets ascending ordering
|
||||
expect(page).to have_content(/#{order4.number}.*#{order3.number}.*#{order2.number}/m)
|
||||
find("a", text: 'PAYMENT STATE').click # sets descending ordering
|
||||
find("a", text: 'Payment State').click # sets descending ordering
|
||||
expect(page).to have_content(/#{order2.number}.*#{order3.number}.*#{order4.number}/m)
|
||||
end
|
||||
end
|
||||
@@ -383,9 +383,9 @@ RSpec.describe '
|
||||
end
|
||||
|
||||
it "orders by shipment state" do
|
||||
find("a", text: 'SHIPMENT STATE').click # sets ascending ordering
|
||||
find("a", text: 'Shipment State').click # sets ascending ordering
|
||||
expect(page).to have_content(/#{order4.number}.*#{order3.number}.*#{order2.number}/m)
|
||||
find("a", text: 'SHIPMENT STATE').click # sets descending ordering
|
||||
find("a", text: 'Shipment State').click # sets descending ordering
|
||||
expect(page).to have_content(/#{order2.number}.*#{order3.number}.*#{order4.number}/m)
|
||||
end
|
||||
end
|
||||
@@ -401,11 +401,11 @@ RSpec.describe '
|
||||
end
|
||||
|
||||
it "orders by customer email" do
|
||||
find("a", text: 'EMAIL').click # sets ascending ordering
|
||||
find("a", text: 'Email').click # sets ascending ordering
|
||||
expect(page).to have_content(
|
||||
/#{order5.number}.*#{order4.number}.*#{order3.number}.*#{order2.number}/m
|
||||
)
|
||||
find("a", text: 'EMAIL').click # sets descending ordering
|
||||
find("a", text: 'Email').click # sets descending ordering
|
||||
expect(page).to have_content(
|
||||
/#{order2.number}.*#{order3.number}.*#{order4.number}.*#{order5.number}/m
|
||||
)
|
||||
@@ -423,11 +423,11 @@ RSpec.describe '
|
||||
end
|
||||
|
||||
it "orders by last name then first name" do
|
||||
find("a", text: 'NAME').click # sets ascending ordering
|
||||
find("a", text: 'Name').click # sets ascending ordering
|
||||
expect(page).to have_content(
|
||||
/#{order4.number}.*#{order2.number}.*#{order3.number}.*#{order5.number}/m
|
||||
)
|
||||
find("a", text: 'NAME').click # sets descending ordering
|
||||
find("a", text: 'Name').click # sets descending ordering
|
||||
expect(page).to have_content(
|
||||
/#{order5.number}.*#{order3.number}.*#{order2.number}.*#{order4.number}/m
|
||||
)
|
||||
@@ -465,11 +465,11 @@ RSpec.describe '
|
||||
end
|
||||
|
||||
it "orders by order total" do
|
||||
find("a", text: 'TOTAL').click # sets ascending ordering
|
||||
find("a", text: 'Total').click # sets ascending ordering
|
||||
expect(page).to have_content(
|
||||
/#{order5.number}.*#{order4.number}.*#{order3.number}.*#{order2.number}/m
|
||||
)
|
||||
find("a", text: 'TOTAL').click # sets descending ordering
|
||||
find("a", text: 'Total').click # sets descending ordering
|
||||
expect(page).to have_content(
|
||||
/#{order2.number}.*#{order3.number}.*#{order4.number}.*#{order5.number}/m
|
||||
)
|
||||
@@ -490,7 +490,7 @@ RSpec.describe '
|
||||
"#listing_orders tbody tr td:first-child input[type=checkbox]"
|
||||
)).to be_checked
|
||||
# enables print invoices button
|
||||
page.find("span.icon-reorder", text: "ACTIONS").click
|
||||
page.find("span.icon-reorder", text: "Actions").click
|
||||
expect(page).to have_content "Print Invoices"
|
||||
# unselect all orders
|
||||
page.find("#listing_orders thead th:first-child input[type=checkbox]").trigger("click")
|
||||
@@ -498,7 +498,7 @@ RSpec.describe '
|
||||
"#listing_orders tbody tr td:first-child input[type=checkbox]"
|
||||
)).not_to be_checked
|
||||
# disables print invoices button not clickable
|
||||
expect { find("span.icon-reorder", text: "ACTIONS").click }
|
||||
expect { find("span.icon-reorder", text: "Actions").click }
|
||||
.to raise_error(Capybara::Cuprite::MouseEventFailed)
|
||||
expect(page).not_to have_content "Print Invoices"
|
||||
end
|
||||
|
||||
@@ -28,7 +28,7 @@ RSpec.describe '
|
||||
visit '/admin'
|
||||
expect(page).to have_selector ".dashboard_item h3", text: "Your profile live"
|
||||
expect(page).to have_selector ".dashboard_item .button.bottom",
|
||||
text: "SEE #{d1.name.upcase} LIVE"
|
||||
text: "See #{d1.name} live"
|
||||
end
|
||||
|
||||
context "when visibilty is set to false" do
|
||||
|
||||
@@ -96,6 +96,8 @@ RSpec.describe "Product Import" do
|
||||
|
||||
wait_until { page.find("a.button.view").present? }
|
||||
|
||||
puts "TODO: migrate to v3"
|
||||
Flipper.disable(:admin_style_v3) # disabling BUU for legacy products page
|
||||
click_link 'Go To Products Page'
|
||||
|
||||
expect(page).to have_content 'Bulk Edit Products'
|
||||
@@ -208,6 +210,8 @@ RSpec.describe "Product Import" do
|
||||
potatoes = Spree::Product.find_by(name: 'Potatoes')
|
||||
expect(potatoes.variants.first.import_date).to be_within(1.minute).of Time.zone.now
|
||||
|
||||
puts "TODO: migrate to v3"
|
||||
Flipper.disable(:admin_style_v3) # disabling BUU for legacy products page
|
||||
click_link 'Go To Products Page'
|
||||
|
||||
wait_until { page.find("#p_#{carrots.id}").present? }
|
||||
@@ -672,6 +676,8 @@ RSpec.describe "Product Import" do
|
||||
expect(page).to have_selector '.created-count', text: '2'
|
||||
expect(page).not_to have_selector '.updated-count'
|
||||
|
||||
puts "TODO: migrate to v3"
|
||||
Flipper.disable(:admin_style_v3) # disabling BUU for legacy products page
|
||||
visit spree.admin_products_path
|
||||
|
||||
within "#p_#{Spree::Product.find_by(name: 'Carrots').id}" do
|
||||
@@ -706,10 +712,13 @@ RSpec.describe "Product Import" do
|
||||
save_data
|
||||
|
||||
expect(page).to have_selector '.created-count', text: '1'
|
||||
expect(page).not_to have_selector '.updated-count'
|
||||
expect(page).to have_content "GO TO PRODUCTS PAGE"
|
||||
expect(page).to have_content "UPLOAD ANOTHER FILE"
|
||||
|
||||
expect(page).not_to have_selector '.updated-count'
|
||||
expect(page).to have_content "Go To Products Page"
|
||||
expect(page).to have_content "Upload Another File"
|
||||
|
||||
puts "TODO: migrate to v3"
|
||||
Flipper.disable(:admin_style_v3) # disabling BUU for legacy products page
|
||||
visit spree.admin_products_path
|
||||
|
||||
within "#p_#{Spree::Product.find_by(name: 'Cupcake').id}" do
|
||||
@@ -781,7 +790,7 @@ RSpec.describe "Product Import" do
|
||||
|
||||
product_headings.each do |heading|
|
||||
expect(page).to have_content(
|
||||
I18n.t("admin.product_import.product_headings.#{heading}").upcase
|
||||
I18n.t("admin.product_import.product_headings.#{heading}")
|
||||
)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -260,7 +260,7 @@ RSpec.describe '
|
||||
expect(page).to have_content "Price is not a number"
|
||||
end
|
||||
within "#product_price_field" do # the form highlights the price field
|
||||
expect(page).to have_content "PRICE"
|
||||
expect(page).to have_content "Price"
|
||||
expect(page).to have_content "is not a number"
|
||||
end
|
||||
end
|
||||
@@ -280,76 +280,83 @@ RSpec.describe '
|
||||
end
|
||||
end
|
||||
|
||||
describe "deleting" do
|
||||
let!(:product1) { create(:simple_product, name: 'a product to keep', supplier: @supplier) }
|
||||
describe "legacy products page (TODO: migrate/combine specs with v3 specs)" do
|
||||
before { Flipper.disable(:admin_style_v3) }
|
||||
|
||||
context 'a simple product' do
|
||||
let!(:product2) { create(:simple_product, name: 'a product to delete', supplier: @supplier) }
|
||||
describe "deleting" do
|
||||
let!(:product1) { create(:simple_product, name: 'a product to keep', supplier: @supplier) }
|
||||
|
||||
before do
|
||||
login_as_admin
|
||||
visit spree.admin_products_path
|
||||
context 'a simple product' do
|
||||
let!(:product2) {
|
||||
create(:simple_product, name: 'a product to delete', supplier: @supplier)
|
||||
}
|
||||
|
||||
within "#p_#{product2.id}" do
|
||||
accept_alert { page.find("[data-powertip=Remove]").click }
|
||||
end
|
||||
visit current_path
|
||||
end
|
||||
|
||||
it 'removes it from the product list' do
|
||||
expect(page).not_to have_selector "#p_#{product2.id}"
|
||||
expect(page).to have_selector "#p_#{product1.id}"
|
||||
end
|
||||
end
|
||||
|
||||
context 'a shipped product' do
|
||||
let!(:order) { create(:shipped_order, line_items_count: 1) }
|
||||
let!(:line_item) { order.reload.line_items.first }
|
||||
|
||||
context "a deleted line item from a shipped order" do
|
||||
before do
|
||||
login_as_admin
|
||||
visit spree.admin_products_path
|
||||
|
||||
within "#p_#{order.variants.first.product_id}" do
|
||||
within "#p_#{product2.id}" do
|
||||
accept_alert { page.find("[data-powertip=Remove]").click }
|
||||
end
|
||||
visit current_path
|
||||
end
|
||||
|
||||
it 'removes it from the product list' do
|
||||
visit spree.admin_products_path
|
||||
|
||||
expect(page).not_to have_selector "#p_#{product2.id}"
|
||||
expect(page).to have_selector "#p_#{product1.id}"
|
||||
expect(page).not_to have_selector "#p_#{order.variants.first.product_id}"
|
||||
end
|
||||
end
|
||||
|
||||
it 'keeps the line item on the order (admin)' do
|
||||
visit spree.edit_admin_order_path(order)
|
||||
context 'a shipped product' do
|
||||
let!(:order) { create(:shipped_order, line_items_count: 1) }
|
||||
let!(:line_item) { order.reload.line_items.first }
|
||||
|
||||
expect(page).to have_content(line_item.product.name.to_s)
|
||||
context "a deleted line item from a shipped order" do
|
||||
before do
|
||||
login_as_admin
|
||||
visit spree.admin_products_path
|
||||
|
||||
within "#p_#{order.variants.first.product_id}" do
|
||||
accept_alert { page.find("[data-powertip=Remove]").click }
|
||||
end
|
||||
end
|
||||
|
||||
it 'removes it from the product list' do
|
||||
visit spree.admin_products_path
|
||||
|
||||
expect(page).to have_selector "#p_#{product1.id}"
|
||||
expect(page).not_to have_selector "#p_#{order.variants.first.product_id}"
|
||||
end
|
||||
|
||||
it 'keeps the line item on the order (admin)' do
|
||||
visit spree.edit_admin_order_path(order)
|
||||
|
||||
expect(page).to have_content(line_item.product.name.to_s)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe 'cloning' do
|
||||
let!(:product1) {
|
||||
create(:simple_product, name: 'a weight product', supplier: @supplier, variant_unit: "weight")
|
||||
}
|
||||
describe 'cloning' do
|
||||
let!(:product1) {
|
||||
create(:simple_product, name: 'a weight product', supplier: @supplier,
|
||||
variant_unit: "weight")
|
||||
}
|
||||
|
||||
context 'products' do
|
||||
before do
|
||||
login_as_admin
|
||||
visit spree.admin_products_path
|
||||
end
|
||||
|
||||
it 'creates a copy of the product' do
|
||||
within "#p_#{product1.id}" do
|
||||
page.find("[data-powertip=Clone]").click
|
||||
context 'products' do
|
||||
before do
|
||||
login_as_admin
|
||||
visit spree.admin_products_path
|
||||
end
|
||||
visit current_path
|
||||
within "#p_#{product1.id + 1}" do
|
||||
expect(page).to have_input "product_name", with: 'COPY OF a weight product'
|
||||
|
||||
it 'creates a copy of the product' do
|
||||
within "#p_#{product1.id}" do
|
||||
page.find("[data-powertip=Clone]").click
|
||||
end
|
||||
visit current_path
|
||||
within "#p_#{product1.id + 1}" do
|
||||
expect(page).to have_input "product_name", with: 'COPY OF a weight product'
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -122,6 +122,92 @@ RSpec.describe 'As an enterprise user, I can manage my products', feature: :admi
|
||||
end
|
||||
end
|
||||
|
||||
describe "listing" do
|
||||
let!(:p1) { create(:product) }
|
||||
let!(:p2) { create(:product) }
|
||||
|
||||
before do
|
||||
visit admin_products_url
|
||||
end
|
||||
|
||||
it "displays a list of products" do
|
||||
within ".products" do
|
||||
# displays table header
|
||||
expect(page).to have_selector "th", text: "Name"
|
||||
expect(page).to have_selector "th", text: "SKU"
|
||||
expect(page).to have_selector "th", text: "Unit scale"
|
||||
expect(page).to have_selector "th", text: "Unit"
|
||||
expect(page).to have_selector "th", text: "Price"
|
||||
expect(page).to have_selector "th", text: "On Hand"
|
||||
expect(page).to have_selector "th", text: "Producer"
|
||||
expect(page).to have_selector "th", text: "Category"
|
||||
expect(page).to have_selector "th", text: "Tax Category"
|
||||
expect(page).to have_selector "th", text: "Inherits Properties?"
|
||||
expect(page).to have_selector "th", text: "Actions"
|
||||
|
||||
# displays product list
|
||||
expect(page).to have_field("_products_0_name", with: p1.name.to_s)
|
||||
expect(page).to have_field("_products_1_name", with: p2.name.to_s)
|
||||
end
|
||||
end
|
||||
|
||||
it "displays a select box for suppliers, with the appropriate supplier selected" do
|
||||
pending( "[BUU] Change producer, unit type, category and tax category #11060" )
|
||||
s1 = FactoryBot.create(:supplier_enterprise)
|
||||
s2 = FactoryBot.create(:supplier_enterprise)
|
||||
s3 = FactoryBot.create(:supplier_enterprise)
|
||||
p1 = FactoryBot.create(:product, supplier: s2)
|
||||
p2 = FactoryBot.create(:product, supplier: s3)
|
||||
|
||||
visit spree.admin_products_path
|
||||
|
||||
expect(page).to have_select "producer_id", with_options: [s1.name, s2.name, s3.name],
|
||||
selected: s2.name
|
||||
expect(page).to have_select "producer_id", with_options: [s1.name, s2.name, s3.name],
|
||||
selected: s3.name
|
||||
end
|
||||
|
||||
context "with several variants" do
|
||||
let!(:variant1) { p1.variants.first }
|
||||
let!(:variant2) { p2.variants.first }
|
||||
let!(:variant3) { create(:variant, product: p2, on_demand: false, on_hand: 4) }
|
||||
|
||||
before do
|
||||
variant1.update!(on_hand: 0, on_demand: true)
|
||||
variant2.update!(on_hand: 16, on_demand: false)
|
||||
visit spree.admin_products_path
|
||||
end
|
||||
|
||||
it "displays an on hand count in a span for each product" do
|
||||
expect(page).to have_content "On demand"
|
||||
expect(page).not_to have_content "20" # does not display the total stock
|
||||
expect(page).to have_content "16" # displays the stock for variant_2
|
||||
expect(page).to have_content "4" # displays the stock for variant_3
|
||||
end
|
||||
end
|
||||
|
||||
it "displays a select box for the unit of measure for the product's variants" do
|
||||
pending( "[BUU] Change producer, unit type and tax category #11060" )
|
||||
p = FactoryBot.create(:product, variant_unit: 'weight', variant_unit_scale: 1,
|
||||
variant_unit_name: '')
|
||||
|
||||
visit spree.admin_products_path
|
||||
|
||||
expect(page).to have_select "variant_unit_with_scale", selected: "Weight (g)"
|
||||
end
|
||||
|
||||
it "displays a text field for the item name when unit is set to 'Items'" do
|
||||
pending( "[BUU] Change producer, unit type and tax category #11060" )
|
||||
p = FactoryBot.create(:product, variant_unit: 'items', variant_unit_scale: nil,
|
||||
variant_unit_name: 'packet')
|
||||
|
||||
visit spree.admin_products_path
|
||||
|
||||
expect(page).to have_select "variant_unit_with_scale", selected: "Items"
|
||||
expect(page).to have_field "variant_unit_name", with: "packet"
|
||||
end
|
||||
end
|
||||
|
||||
describe "sorting" do
|
||||
let!(:product_b) { create(:simple_product, name: "Bananas") }
|
||||
let!(:product_a) { create(:simple_product, name: "Apples") }
|
||||
@@ -203,7 +289,7 @@ RSpec.describe 'As an enterprise user, I can manage my products', feature: :admi
|
||||
search_for "searchable product"
|
||||
|
||||
expect(page).to have_field "search_term", with: "searchable product"
|
||||
expect(page).to have_content "1 products found for your search criteria."
|
||||
expect(page).to have_content "1 products found for your search criteria. Showing 1 to 1."
|
||||
expect_products_count_to_be 1
|
||||
end
|
||||
|
||||
@@ -222,7 +308,7 @@ RSpec.describe 'As an enterprise user, I can manage my products', feature: :admi
|
||||
search_for "searchable product"
|
||||
|
||||
expect(page).to have_field "search_term", with: "searchable product"
|
||||
expect(page).to have_content "1 products found for your search criteria."
|
||||
expect(page).to have_content "1 products found for your search criteria. Showing 1 to 1."
|
||||
expect_products_count_to_be 1
|
||||
end
|
||||
|
||||
@@ -235,7 +321,7 @@ RSpec.describe 'As an enterprise user, I can manage my products', feature: :admi
|
||||
search_for "Big box"
|
||||
|
||||
expect(page).to have_field "search_term", with: "Big box"
|
||||
expect(page).to have_content "1 products found for your search criteria."
|
||||
expect(page).to have_content "1 products found for your search criteria. Showing 1 to 1."
|
||||
expect_products_count_to_be 1
|
||||
end
|
||||
|
||||
@@ -252,7 +338,7 @@ RSpec.describe 'As an enterprise user, I can manage my products', feature: :admi
|
||||
expect_per_page_to_be 15
|
||||
expect_products_count_to_be 1
|
||||
search_for "searchable product"
|
||||
expect(page).to have_content "1 products found for your search criteria."
|
||||
expect(page).to have_content "1 products found for your search criteria. Showing 1 to 1."
|
||||
expect_products_count_to_be 1
|
||||
end
|
||||
|
||||
@@ -262,7 +348,7 @@ RSpec.describe 'As an enterprise user, I can manage my products', feature: :admi
|
||||
|
||||
search_for "searchable product"
|
||||
expect(page).to have_field "search_term", with: "searchable product"
|
||||
expect(page).to have_content "1 products found for your search criteria."
|
||||
expect(page).to have_content "1 products found for your search criteria. Showing 1 to 1."
|
||||
expect_products_count_to_be 1
|
||||
expect(page).to have_field "Name", with: product_by_name.name
|
||||
|
||||
@@ -330,8 +416,8 @@ RSpec.describe 'As an enterprise user, I can manage my products', feature: :admi
|
||||
|
||||
search_by_category "Category 1"
|
||||
|
||||
# expect(page).to have_content "1 product found for your search criteria."
|
||||
expect(page).to have_select "category_id", selected: "Category 1" # fails in dev but not CI
|
||||
expect(page).to have_content "1 products found for your search criteria. Showing 1 to 1."
|
||||
expect(page).to have_select "category_id", selected: "Category 1"
|
||||
expect_products_count_to_be 1
|
||||
expect(page).to have_field "Name", with: product_by_category.name
|
||||
end
|
||||
@@ -1100,7 +1186,6 @@ RSpec.describe 'As an enterprise user, I can manage my products', feature: :admi
|
||||
attach_file 'image[attachment]',
|
||||
Rails.public_path.join('Terms-of-service.pdf'),
|
||||
visible: false
|
||||
expect(page).to have_content /Attachment is not a valid image/
|
||||
expect(page).to have_content /Attachment has an invalid content type/
|
||||
end
|
||||
end
|
||||
@@ -1509,6 +1594,122 @@ RSpec.describe 'As an enterprise user, I can manage my products', feature: :admi
|
||||
end
|
||||
end
|
||||
|
||||
describe "creating a new product" do
|
||||
let!(:stock_location) { create(:stock_location, backorderable_default: false) }
|
||||
let!(:supplier) { create(:supplier_enterprise) }
|
||||
let!(:distributor) { create(:distributor_enterprise) }
|
||||
let!(:shipping_category) { create(:shipping_category) }
|
||||
let!(:taxon) { create(:taxon) }
|
||||
|
||||
before do
|
||||
login_as_admin
|
||||
visit spree.admin_products_path
|
||||
end
|
||||
|
||||
it "creating a new product" do
|
||||
find("a", text: "New Product").click
|
||||
expect(page).to have_content "New Product"
|
||||
fill_in 'product_name', with: 'Big Bag Of Apples'
|
||||
tomselect_select supplier.name, from: 'product[supplier_id]'
|
||||
select_tom_select 'Weight (g)', from: 'product_variant_unit_field'
|
||||
fill_in 'product_unit_value', with: '100'
|
||||
fill_in 'product_price', with: '10.00'
|
||||
# TODO dropdowns below are still using select2:
|
||||
select taxon.name, from: 'product_primary_taxon_id' # ...instead of tom-select
|
||||
select shipping_category.name, from: 'product_shipping_category_id' # ...instead of tom-select
|
||||
click_button 'Create'
|
||||
expect(URI.parse(current_url).path).to eq spree.admin_products_path
|
||||
expect(flash_message).to eq 'Product "Big Bag Of Apples" has been successfully created!'
|
||||
expect(page).to have_field "_products_0_name", with: 'Big Bag Of Apples'
|
||||
end
|
||||
end
|
||||
|
||||
context "creating new variants" do
|
||||
let!(:product) { create(:product, variant_unit: 'weight', variant_unit_scale: 1000) }
|
||||
|
||||
before do
|
||||
login_as_admin
|
||||
visit spree.admin_products_path
|
||||
end
|
||||
|
||||
it "hovering over the New variant button displays the text" do
|
||||
page.find('button[aria-label="New variant"]', text: "New variant", visible: false)
|
||||
find("button.secondary.condensed.naked.icon-plus").hover
|
||||
page.find('button[aria-label="New variant"]', text: "New variant", visible: true)
|
||||
expect(page).to have_content "New variant"
|
||||
end
|
||||
|
||||
shared_examples "creating a new variant (bulk)" do |stock|
|
||||
it "handles the #{stock} behaviour" do
|
||||
# the product and the default variant is displayed
|
||||
expect(page).to have_selector("input[aria-label=Name][value='#{product.name}']",
|
||||
visible: true, count: 1)
|
||||
expect(page).to have_selector("input[aria-label=Name][placeholder='#{product.name}']",
|
||||
visible: false, count: 1)
|
||||
|
||||
# when a second variant is added, the number of lines increases
|
||||
expect {
|
||||
find("button.secondary.condensed.naked.icon-plus").click
|
||||
}.to change{
|
||||
page.all("input[aria-label=Name][placeholder='#{product.name}']", visible: false).count
|
||||
}.from(1).to(2)
|
||||
|
||||
# When I fill out variant details and hit update
|
||||
within page.all("tr.condensed")[1] do # selects second variant row
|
||||
find('input[id$="_sku"]').fill_in with: "345"
|
||||
find('input[id$="_display_name"]').fill_in with: "Small bag"
|
||||
find('button[id$="unit_to_display"]').click # opens the unit value pop out
|
||||
find('input[id$="_unit_value_with_description"]').fill_in with: "0.002"
|
||||
find('input[id$="_display_as"]').fill_in with: "2 grams"
|
||||
find('button[aria-label="On Hand"]').click
|
||||
find('input[id$="_price"]').fill_in with: "11.1"
|
||||
if stock == "on_hand"
|
||||
find('input[id$="_on_hand"]').fill_in with: "66"
|
||||
elsif stock == "on_demand"
|
||||
find('input[id$="_on_demand"]').check
|
||||
end
|
||||
end
|
||||
|
||||
expect(page).to have_content "1 product modified."
|
||||
|
||||
expect {
|
||||
click_on "Save changes"
|
||||
expect(page).to have_content "Changes saved"
|
||||
}.to change {
|
||||
Spree::Variant.count
|
||||
}.from(1).to(2)
|
||||
|
||||
click_on "Dismiss"
|
||||
expect(page).not_to have_content "Changes saved"
|
||||
|
||||
new_variant = Spree::Variant.where(deleted_at: nil).last
|
||||
expect(new_variant.sku).to eq "345"
|
||||
expect(new_variant.display_name).to eq "Small bag"
|
||||
expect(new_variant.unit_value).to eq 2.0
|
||||
expect(new_variant.display_as).to eq "2 grams"
|
||||
expect(new_variant.unit_presentation).to eq "2 grams"
|
||||
expect(new_variant.price).to eq 11.1
|
||||
if stock == "on_hand"
|
||||
expect(new_variant.on_hand).to eq 66
|
||||
elsif stock == "on_demand"
|
||||
expect(new_variant.on_demand).to eq true
|
||||
end
|
||||
|
||||
within page.all("tr.condensed")[1] do # selects second variant row
|
||||
page.find('input[id$="_sku"]').fill_in with: "789"
|
||||
end
|
||||
|
||||
accept_confirm do
|
||||
click_on "Discard changes" # does not save chages
|
||||
end
|
||||
expect(page).not_to have_content "Changes saved"
|
||||
end
|
||||
end
|
||||
|
||||
it_behaves_like "creating a new variant (bulk)", "on_hand"
|
||||
it_behaves_like "creating a new variant (bulk)", "on_demand"
|
||||
end
|
||||
|
||||
def create_products(amount)
|
||||
amount.times do |i|
|
||||
create(:simple_product, name: "product #{i}", supplier: producer)
|
||||
|
||||
@@ -15,7 +15,7 @@ RSpec.describe "Enterprise Summary Fee with Tax Report By Order" do
|
||||
[
|
||||
"Distributor",
|
||||
"Order Cycle",
|
||||
"Order Number",
|
||||
"Order number",
|
||||
"Name",
|
||||
"Type",
|
||||
"Owner",
|
||||
@@ -29,7 +29,7 @@ RSpec.describe "Enterprise Summary Fee with Tax Report By Order" do
|
||||
"Last Name",
|
||||
"Customer Code",
|
||||
"Customer Email"
|
||||
].join(" ").upcase
|
||||
].join(" ")
|
||||
}
|
||||
|
||||
let!(:state_zone){ create(:zone_with_state_member) }
|
||||
|
||||
@@ -16,7 +16,7 @@ RSpec.describe "Enterprise Summary Fee with Tax Report By Producer" do
|
||||
let!(:table_header){
|
||||
["Distributor", "Producer", "Producer Tax Status", "Order Cycle", "Name", "Type", "Owner",
|
||||
"Tax Category", "Tax Rate Name", "Tax Rate", "Total excl. tax ($)", "Tax",
|
||||
"Total incl. tax ($)"].join(" ").upcase
|
||||
"Total incl. tax ($)"].join(" ")
|
||||
}
|
||||
|
||||
let!(:state_zone){ create(:zone_with_state_member) }
|
||||
|
||||
@@ -95,7 +95,6 @@ RSpec.describe "Orders And Fulfillment" do
|
||||
"Billing State",
|
||||
"Order number",
|
||||
"Date"]
|
||||
.map(&:upcase)
|
||||
])
|
||||
end
|
||||
|
||||
@@ -278,7 +277,6 @@ RSpec.describe "Orders And Fulfillment" do
|
||||
"Total Units",
|
||||
"Curr. Cost per Unit",
|
||||
"Total Cost"]
|
||||
.map(&:upcase)
|
||||
])
|
||||
|
||||
# displays the producer name in the respective column
|
||||
@@ -332,7 +330,6 @@ RSpec.describe "Orders And Fulfillment" do
|
||||
"Total Units",
|
||||
"Curr. Cost per Unit",
|
||||
"Total Cost"]
|
||||
.map(&:upcase)
|
||||
])
|
||||
|
||||
# displays the producer name in own row
|
||||
@@ -368,7 +365,6 @@ RSpec.describe "Orders And Fulfillment" do
|
||||
"Curr. Cost per Unit",
|
||||
"Total Cost",
|
||||
"Shipping Method"]
|
||||
.map(&:upcase)
|
||||
])
|
||||
|
||||
# displays the producer name in the respective column
|
||||
@@ -416,7 +412,6 @@ RSpec.describe "Orders And Fulfillment" do
|
||||
"Curr. Cost per Unit",
|
||||
"Total Cost",
|
||||
"Shipping Method"]
|
||||
.map(&:upcase)
|
||||
])
|
||||
|
||||
# displays the producer name in own row
|
||||
@@ -468,7 +463,6 @@ RSpec.describe "Orders And Fulfillment" do
|
||||
"Total Cost",
|
||||
"Total Shipping Cost",
|
||||
"Shipping Method"]
|
||||
.map(&:upcase)
|
||||
])
|
||||
|
||||
# displays the Distributor name in the respective column
|
||||
@@ -520,7 +514,6 @@ RSpec.describe "Orders And Fulfillment" do
|
||||
"Total Cost",
|
||||
"Total Shipping Cost",
|
||||
"Shipping Method"]
|
||||
.map(&:upcase)
|
||||
])
|
||||
|
||||
# displays the Distributor name in own row
|
||||
@@ -575,6 +568,7 @@ RSpec.describe "Orders And Fulfillment" do
|
||||
it "should store columns to show for every report separately" do
|
||||
# Step 1: Update report rendering options on two reports
|
||||
click_link report_title
|
||||
|
||||
find(columns_dropdown_selector).click
|
||||
expect(page).to have_checked_field('Producer')
|
||||
expect(page).to have_checked_field('Product')
|
||||
@@ -584,6 +578,7 @@ RSpec.describe "Orders And Fulfillment" do
|
||||
|
||||
click_link "Report"
|
||||
click_link second_report_title
|
||||
|
||||
find(columns_dropdown_selector).click
|
||||
expect(page).to have_checked_field('Producer')
|
||||
expect(page).to have_checked_field('Product')
|
||||
@@ -593,12 +588,14 @@ RSpec.describe "Orders And Fulfillment" do
|
||||
# Step 2: check if report rendering options are saved properly
|
||||
click_link "Report"
|
||||
click_link report_title
|
||||
|
||||
find(columns_dropdown_selector).click
|
||||
expect(page).to have_unchecked_field('Producer')
|
||||
expect(page).to have_unchecked_field('Product')
|
||||
|
||||
click_link "Report"
|
||||
click_link second_report_title
|
||||
|
||||
find(columns_dropdown_selector).click
|
||||
expect(page).to have_checked_field('Producer')
|
||||
expect(page).to have_unchecked_field('Product')
|
||||
@@ -629,6 +626,7 @@ RSpec.describe "Orders And Fulfillment" do
|
||||
context "Columns to show" do
|
||||
it "should store columns after logout" do
|
||||
click_link report_title
|
||||
|
||||
find(columns_dropdown_selector).click
|
||||
expect(page).to have_checked_field('Producer')
|
||||
expect(page).to have_checked_field('Product')
|
||||
@@ -642,6 +640,7 @@ RSpec.describe "Orders And Fulfillment" do
|
||||
|
||||
click_link "Report"
|
||||
click_link report_title
|
||||
|
||||
find(columns_dropdown_selector).click
|
||||
expect(page).to have_unchecked_field('Producer')
|
||||
expect(page).to have_unchecked_field('Product')
|
||||
|
||||
@@ -62,7 +62,7 @@ RSpec.describe "Packing Reports" do
|
||||
expect(table).to eq([
|
||||
["Hub", "Customer Code", "First Name", "Last Name", "Supplier",
|
||||
"Product", "Variant", "Weight", "Height", "Width", "Depth",
|
||||
"Quantity", "TempControlled?"].map(&:upcase)
|
||||
"Quantity", "TempControlled?"]
|
||||
])
|
||||
expect(page).to have_selector 'table.report__table tbody tr', count: 5 # Totals row/order
|
||||
|
||||
@@ -80,7 +80,7 @@ RSpec.describe "Packing Reports" do
|
||||
rows = find("table.report__table").all("tr")
|
||||
table = rows.map { |r| r.all("th,td").map { |c| c.text.strip }[3] }
|
||||
expect(table).to eq([
|
||||
"LAST NAME",
|
||||
"Last Name",
|
||||
order1.bill_address.lastname,
|
||||
order1.bill_address.lastname,
|
||||
"",
|
||||
@@ -108,7 +108,7 @@ RSpec.describe "Packing Reports" do
|
||||
table = rows.map { |r| r.all("th").map { |c| c.text.strip } }
|
||||
expect(table).to eq([
|
||||
["Hub", "Supplier", "Customer Code", "First Name", "Last Name",
|
||||
"Product", "Variant", "Quantity", "TempControlled?"].map(&:upcase)
|
||||
"Product", "Variant", "Quantity", "TempControlled?"]
|
||||
])
|
||||
|
||||
expect(all('table.report__table tbody tr').count).to eq(3) # Totals row per supplier
|
||||
|
||||
@@ -46,7 +46,7 @@ RSpec.describe "Payments Reports" do
|
||||
"Shipping Total ($)",
|
||||
"Outstanding Balance ($)",
|
||||
"Total ($)"
|
||||
].join(" ").upcase)
|
||||
].join(" "))
|
||||
|
||||
expect(page.find("table.report__table tbody tr").text).to have_content([
|
||||
order.payment_state,
|
||||
@@ -83,7 +83,7 @@ RSpec.describe "Payments Reports" do
|
||||
"EFT ($)",
|
||||
"PayPal ($)",
|
||||
"Outstanding Balance ($)"
|
||||
].join(" ").upcase)
|
||||
].join(" "))
|
||||
|
||||
expect(page.find("table.report__table tbody tr").text).to have_content([
|
||||
"credit owed",
|
||||
|
||||
@@ -62,23 +62,23 @@ RSpec.describe "Revenues By Hub Reports" do
|
||||
run_report
|
||||
|
||||
expect(page.find("table.report__table thead tr").text).to have_content([
|
||||
"HUB",
|
||||
"HUB ID",
|
||||
"HUB BUSINESS NUMBER",
|
||||
"HUB LEGAL NAME",
|
||||
"HUB CONTACT NAME",
|
||||
"HUB PUBLIC EMAIL",
|
||||
"HUB OWNER EMAIL",
|
||||
"HUB PHONE NUMBER",
|
||||
"HUB ADDRESS LINE 1",
|
||||
"HUB ADDRESS LINE 2",
|
||||
"HUB SUBURB",
|
||||
"HUB POSTCODE",
|
||||
"HUB STATE",
|
||||
"TOTAL NUMBER OF ORDERS",
|
||||
"TOTAL EXCL. TAX ($)",
|
||||
"TOTAL TAX ($)",
|
||||
"TOTAL INCL. TAX ($)"
|
||||
"Hub",
|
||||
"Hub ID",
|
||||
"Hub Business Number",
|
||||
"Hub Legal Name",
|
||||
"Hub Contact Name",
|
||||
"Hub Public Email",
|
||||
"Hub Owner Email",
|
||||
"Hub Phone Number",
|
||||
"Hub Address Line 1",
|
||||
"Hub Address Line 2",
|
||||
"Hub Suburb",
|
||||
"Hub Postcode",
|
||||
"Hub State",
|
||||
"Total Number of Orders",
|
||||
"Total excl. tax ($)",
|
||||
"Total Tax ($)",
|
||||
"Total incl. tax ($)"
|
||||
].join(" "))
|
||||
|
||||
lines = page.all('table.report__table tbody tr').map(&:text)
|
||||
|
||||
@@ -15,18 +15,18 @@ RSpec.describe "Sales Tax Totals By order" do
|
||||
[
|
||||
"Distributor",
|
||||
"Order Cycle",
|
||||
"Order Number",
|
||||
"Order number",
|
||||
"Tax Category",
|
||||
"Tax Rate Name",
|
||||
"Tax Rate",
|
||||
"Total excl. Tax ($)",
|
||||
"Total excl. tax ($)",
|
||||
"Tax",
|
||||
"Total incl. Tax ($)",
|
||||
"Total incl. tax ($)",
|
||||
"First Name",
|
||||
"Last Name",
|
||||
"Code",
|
||||
"Email"
|
||||
].join(" ").upcase
|
||||
].join(" ")
|
||||
}
|
||||
let!(:state_zone){ create(:zone_with_state_member) }
|
||||
let!(:country_zone){ create(:zone_with_member) }
|
||||
|
||||
@@ -19,10 +19,10 @@ RSpec.describe "Sales Tax Totals By Producer" do
|
||||
"Tax Category",
|
||||
"Tax Rate Name",
|
||||
"Tax Rate",
|
||||
"Total excl. Tax ($)",
|
||||
"Total excl. tax ($)",
|
||||
"Tax",
|
||||
"Total incl. Tax ($)"
|
||||
].join(" ").upcase
|
||||
"Total incl. tax ($)"
|
||||
].join(" ")
|
||||
}
|
||||
let!(:state_zone){ create(:zone_with_state_member) }
|
||||
let!(:country_zone){ create(:zone_with_member) }
|
||||
|
||||
@@ -16,13 +16,13 @@ RSpec.describe "Users & Enterprises reports" do
|
||||
run_report
|
||||
|
||||
expect(page.find("table.report__table thead tr").text).to have_content([
|
||||
"USER",
|
||||
"RELATIONSHIP",
|
||||
"ENTERPRISE",
|
||||
"PRODUCER?",
|
||||
"SELLS",
|
||||
"VISIBLE",
|
||||
"CONFIRMATION DATE",
|
||||
"User",
|
||||
"Relationship",
|
||||
"Enterprise",
|
||||
"Producer?",
|
||||
"Sells",
|
||||
"Visible",
|
||||
"Confirmation Date",
|
||||
"OFN UID"
|
||||
].join(" "))
|
||||
|
||||
|
||||
@@ -51,7 +51,7 @@ RSpec.describe '
|
||||
visit admin_report_path(report_type: :customers)
|
||||
run_report
|
||||
expect(page).to have_content "Späti"
|
||||
expect(page).to have_content "FIRST NAME LAST NAME BILLING ADDRESS EMAIL"
|
||||
expect(page).to have_content "First Name Last Name Billing Address Email"
|
||||
expect(page).to have_content "Müller"
|
||||
end
|
||||
|
||||
@@ -75,7 +75,7 @@ RSpec.describe '
|
||||
expect(page).not_to have_content "Little Bobby Tables"
|
||||
|
||||
click_on "Display anyway"
|
||||
expect(page).to have_content "FIRST NAME"
|
||||
expect(page).to have_content "First Name"
|
||||
expect(page).to have_content "Little Bobby Tables"
|
||||
end
|
||||
|
||||
@@ -132,7 +132,7 @@ RSpec.describe '
|
||||
|
||||
click_on "Go"
|
||||
|
||||
expect(page).to have_content "FIRST NAME LAST NAME BILLING ADDRESS EMAIL"
|
||||
expect(page).to have_content "First Name Last Name Billing Address Email"
|
||||
|
||||
# Now that we see the report, we need to make sure that it's not replaced
|
||||
# by the "loading" spinner when the controller action finishes.
|
||||
@@ -167,7 +167,7 @@ RSpec.describe '
|
||||
expect(table.sort).to eq([
|
||||
["First Name", "Last Name", "Billing Address", "Email", "Phone", "Hub", "Hub Address",
|
||||
"Shipping Method", "Total Number of Orders", "Total incl. tax ($)",
|
||||
"Last completed order date"].map(&:upcase)
|
||||
"Last completed order date"]
|
||||
].sort)
|
||||
end
|
||||
end
|
||||
@@ -185,7 +185,7 @@ RSpec.describe '
|
||||
table = rows.map { |r| r.all("th").map { |c| c.text.strip } }
|
||||
expect(table.sort).to eq([
|
||||
["First Name", "Last Name", "Hub", "Customer Code", "Email", "Phone", "Shipping Method",
|
||||
"Payment Method", "Amount", "Balance"].map(&:upcase)
|
||||
"Payment Method", "Amount", "Balance"]
|
||||
].sort)
|
||||
end
|
||||
|
||||
@@ -197,7 +197,7 @@ RSpec.describe '
|
||||
expect(table.sort).to eq([
|
||||
["First Name", "Last Name", "Hub", "Customer Code", "Delivery Address", "Delivery Postcode",
|
||||
"Phone", "Shipping Method", "Payment Method", "Amount", "Balance",
|
||||
"Temp Controlled Items?", "Special Instructions"].map(&:upcase)
|
||||
"Temp Controlled Items?", "Special Instructions"]
|
||||
].sort)
|
||||
end
|
||||
end
|
||||
@@ -238,7 +238,6 @@ RSpec.describe '
|
||||
'Distributor postcode',
|
||||
'Shipping Method',
|
||||
'Shipping instructions']
|
||||
.map(&:upcase)
|
||||
])
|
||||
|
||||
expect(all('table.report__table tbody tr').count).to eq(
|
||||
@@ -260,7 +259,6 @@ RSpec.describe '
|
||||
'Distributor',
|
||||
'Payment Type',
|
||||
"Total (%s)" % currency_symbol]
|
||||
.map(&:upcase)
|
||||
])
|
||||
|
||||
expect(all('table.report__table tbody tr').count).to eq(
|
||||
@@ -410,13 +408,14 @@ RSpec.describe '
|
||||
|
||||
expect(page).to have_content "All products"
|
||||
expect(page).to have_content "Inventory (on hand)"
|
||||
|
||||
click_link 'All products'
|
||||
run_report
|
||||
expect(page).to have_content "Supplier"
|
||||
expect(page).to have_table_row ["Supplier", "Producer Suburb", "Product",
|
||||
"Product Properties", "Taxons", "Variant Value", "Price",
|
||||
"Group Buy Unit Quantity", "Amount", "SKU",
|
||||
"On demand?", "On hand"].map(&:upcase)
|
||||
"On Demand?", "On Hand"]
|
||||
expect(page).to have_table_row [product1.supplier.name, product1.supplier.address.city,
|
||||
"Product Name",
|
||||
product1.properties.map(&:presentation).join(", "),
|
||||
@@ -442,7 +441,7 @@ RSpec.describe '
|
||||
|
||||
expect(page).to have_table_row ['PRODUCT', 'Description', 'Qty', 'Pack Size', 'Unit',
|
||||
'Unit Price', 'Total', 'GST incl.',
|
||||
'Grower and growing method', 'Taxon'].map(&:upcase)
|
||||
'Grower and growing method', 'Taxon']
|
||||
expect(page).to have_table_row ['Product 2', '100g', '', '100', 'g', '99.0', '', '0',
|
||||
'Supplier Name (Organic - NASAA 12345)', 'Taxon Name']
|
||||
end
|
||||
@@ -469,7 +468,7 @@ RSpec.describe '
|
||||
table = rows.map { |r| r.all("th,td").map { |c| c.text.strip }[0..2] }
|
||||
|
||||
expect(table.sort).to eq([
|
||||
["User", "Relationship", "Enterprise"].map(&:upcase),
|
||||
["User", "Relationship", "Enterprise"],
|
||||
[enterprise1.owner.email, "owns", enterprise1.name],
|
||||
[enterprise1.owner.email, "manages", enterprise1.name],
|
||||
[enterprise2.owner.email, "owns", enterprise2.name],
|
||||
@@ -490,7 +489,7 @@ RSpec.describe '
|
||||
table = rows.map { |r| r.all("th,td").map { |c| c.text.strip }[0..2] }
|
||||
|
||||
expect(table.sort).to eq([
|
||||
["User", "Relationship", "Enterprise"].map(&:upcase),
|
||||
["User", "Relationship", "Enterprise"],
|
||||
[enterprise1.owner.email, "manages", enterprise3.name]
|
||||
].sort)
|
||||
end
|
||||
@@ -518,7 +517,7 @@ RSpec.describe '
|
||||
"Units Required",
|
||||
"Unallocated",
|
||||
"Max Quantity Excess"
|
||||
].map(&:upcase)
|
||||
]
|
||||
end
|
||||
|
||||
it "generating Bulk Co-op Allocation report" do
|
||||
@@ -537,7 +536,7 @@ RSpec.describe '
|
||||
"Total available",
|
||||
"Unallocated",
|
||||
"Max Quantity Excess"
|
||||
].map(&:upcase)
|
||||
]
|
||||
end
|
||||
|
||||
it "generating Bulk Co-op Packing Sheets report" do
|
||||
@@ -549,7 +548,7 @@ RSpec.describe '
|
||||
"Product",
|
||||
"Variant",
|
||||
"Sum Total"
|
||||
].map(&:upcase)
|
||||
]
|
||||
end
|
||||
|
||||
it "generating Bulk Co-op Customer Payments report" do
|
||||
@@ -562,7 +561,7 @@ RSpec.describe '
|
||||
"Total Cost",
|
||||
"Amount Owing",
|
||||
"Amount Paid"
|
||||
].map(&:upcase)
|
||||
]
|
||||
end
|
||||
end
|
||||
|
||||
@@ -759,7 +758,7 @@ RSpec.describe '
|
||||
POCity PORegion POPostalCode POCountry *InvoiceNumber Reference *InvoiceDate
|
||||
*DueDate InventoryItemCode *Description *Quantity *UnitAmount Discount *AccountCode
|
||||
*TaxType TrackingName1 TrackingOption1 TrackingName2 TrackingOption2 Currency BrandingTheme
|
||||
Paid?).map(&:upcase)
|
||||
Paid?)
|
||||
end
|
||||
|
||||
def xero_invoice_summary_row(description, amount, tax_type, opts = {})
|
||||
|
||||
@@ -32,7 +32,7 @@ RSpec.describe 'Schedules' do
|
||||
visit spree.admin_dashboard_path
|
||||
click_link 'Order cycles'
|
||||
expect(page).to have_selector ".order-cycle-#{oc1.id}"
|
||||
find('a', text: 'NEW SCHEDULE').click
|
||||
find('a', text: 'New Schedule').click
|
||||
|
||||
within "#schedule-dialog" do
|
||||
# Only order cycles coordinated by managed enterprises are available to select
|
||||
|
||||
@@ -260,7 +260,7 @@ RSpec.describe 'Subscriptions' do
|
||||
choose_today_from_datepicker
|
||||
click_button('Next')
|
||||
|
||||
expect(page).to have_content 'BILLING ADDRESS'
|
||||
expect(page).to have_content 'Billing Address'
|
||||
# Customer bill address has been pre-loaded
|
||||
expect(page).to have_input "bill_address_firstname", with: address.firstname
|
||||
expect(page).to have_input "bill_address_lastname", with: address.lastname
|
||||
|
||||
@@ -192,7 +192,7 @@ RSpec.describe 'Subscriptions' do
|
||||
# Fill in other details
|
||||
fill_in_subscription_basic_details
|
||||
click_button "Next"
|
||||
expect(page).to have_content "BILLING ADDRESS"
|
||||
expect(page).to have_content "Billing Address"
|
||||
click_button "Next"
|
||||
|
||||
# Add products
|
||||
@@ -237,12 +237,15 @@ RSpec.describe 'Subscriptions' do
|
||||
expect(page).to have_selector "#subscription-line-items .item", count: 4
|
||||
|
||||
# Delete an existing product
|
||||
puts "TODO: migrate to v3" # but first we need to make the actions menu more accessible.
|
||||
Flipper.disable(:admin_style_v3) # disabling BUU for legacy products page
|
||||
login_as_admin
|
||||
visit spree.admin_products_path
|
||||
within "#p_#{shop_product2.id}" do
|
||||
accept_alert { page.find("[data-powertip=Remove]").click }
|
||||
end
|
||||
|
||||
Flipper.enable(:admin_style_v3) # re-enabling it for the rest of the spec
|
||||
visit edit_admin_subscription_path(subscription)
|
||||
|
||||
# Remove deleted shop_variant from the subscription
|
||||
|
||||
@@ -82,7 +82,7 @@ RSpec.describe "
|
||||
|
||||
context "with no overrides" do
|
||||
it "displays the list of products with variants" do
|
||||
expect(page).to have_table_row ['PRODUCER', 'PRODUCT', 'PRICE', 'ON HAND', 'ON DEMAND?']
|
||||
expect(page).to have_table_row ['Producer', 'Product', 'Price', 'On Hand', 'On Demand?']
|
||||
expect(page).to have_table_row [producer.name, product.name, '', '', '']
|
||||
expect(page).to have_input "variant-overrides-#{variant.id}-price", placeholder: '1.23'
|
||||
expect(page).to have_input "variant-overrides-#{variant.id}-count_on_hand",
|
||||
@@ -493,7 +493,7 @@ RSpec.describe "
|
||||
"inventory."
|
||||
click_button "Review Now"
|
||||
|
||||
expect(page).to have_table_row ['PRODUCER', 'PRODUCT', 'VARIANT', 'ADD', 'HIDE']
|
||||
expect(page).to have_table_row ['Producer', 'Product', 'Variant', 'Add', 'Hide']
|
||||
expect(page).to have_selector "table#new-products tr#v_#{variant1.id}"
|
||||
expect(page).to have_selector "table#new-products tr#v_#{variant2.id}"
|
||||
within "table#new-products tr#v_#{variant1.id}" do
|
||||
|
||||
Reference in New Issue
Block a user