From e6e74f6e3f39cce651505675473fee2c9cad5ef5 Mon Sep 17 00:00:00 2001 From: Monica Giambitto Date: Tue, 3 Oct 2023 17:00:28 +0200 Subject: [PATCH 1/2] Call empty only on unshipped orders Code fails with a 500 on admin because of the order shipping status. The change triggers @order.empty! only when the shipping status is false. --- api/app/controllers/spree/api/orders_controller.rb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/api/app/controllers/spree/api/orders_controller.rb b/api/app/controllers/spree/api/orders_controller.rb index 732c94a2228..0d4afeb4d45 100644 --- a/api/app/controllers/spree/api/orders_controller.rb +++ b/api/app/controllers/spree/api/orders_controller.rb @@ -46,7 +46,9 @@ def create def empty authorize! :update, @order, order_token - @order.empty! + + @order.empty! unless @order.shipped? + respond_with(@order, default_template: :show) end From 4a4bf6283ce5f733e53e84f1b2cbaa75d5c7a981 Mon Sep 17 00:00:00 2001 From: Monica Giambitto Date: Wed, 4 Oct 2023 12:18:55 +0200 Subject: [PATCH 2/2] Add test for order_details_spec The test interacts with the headless browser, but manipulates the order behind the scenes to simulate the shipping of the order in a second tab --- .../admin/orders/order_details_spec.rb | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/backend/spec/features/admin/orders/order_details_spec.rb b/backend/spec/features/admin/orders/order_details_spec.rb index 459a4c5e94c..522009f869b 100644 --- a/backend/spec/features/admin/orders/order_details_spec.rb +++ b/backend/spec/features/admin/orders/order_details_spec.rb @@ -399,6 +399,33 @@ expect(page).not_to have_selector('.fa-arrows-h') expect(page).not_to have_selector('.fa-trash') end + + context 'and on the cart page the cart is emptied' do + it 'should show the empty cart page' do + order = create(:order_ready_to_ship) + + visit spree.cart_admin_order_path(order) + order.fulfill! + + ## simulate shipping order in another tab + shipment = order.shipments.first + order.shipping.ship( + inventory_units: shipment.inventory_units, + stock_location: shipment.stock_location, + address: order.ship_address, + shipping_method: shipment.shipping_method + ) + + click_on 'Empty Cart' + + accept_alert 'Are you sure you want to delete this record?' do + click_icon :ok + end + + expect(page.current_path).to eq(spree.cart_admin_order_path(order)) + expect(page).not_to have_content(order.line_items.first.variant.sku) + end + end end end