diff --git a/app/controllers/admin/bulk_line_items_controller.rb b/app/controllers/admin/bulk_line_items_controller.rb index a4ff5b1676..91973448e9 100644 --- a/app/controllers/admin/bulk_line_items_controller.rb +++ b/app/controllers/admin/bulk_line_items_controller.rb @@ -33,9 +33,6 @@ module Admin # and https://www.postgresql.org/docs/current/static/sql-select.html#SQL-FOR-UPDATE-SHARE order.with_lock do if order.contents.update_item(@line_item, line_item_params) - order.update_line_item_fees! @line_item - order.update_order_fees! - order.update_order! render body: nil, status: :no_content # No Content, does not trigger ng resource auto-update else render json: { errors: @line_item.errors }, status: :precondition_failed diff --git a/app/models/spree/order_contents.rb b/app/models/spree/order_contents.rb index 15a9030706..5a14d41642 100644 --- a/app/models/spree/order_contents.rb +++ b/app/models/spree/order_contents.rb @@ -56,6 +56,8 @@ module Spree def update_item(line_item, params) if line_item.update_attributes(params) + order.update_line_item_fees! line_item + order.update_order_fees! if order.completed? discard_empty_line_items order.ensure_updated_shipments update_order diff --git a/spec/controllers/admin/bulk_line_items_controller_spec.rb b/spec/controllers/admin/bulk_line_items_controller_spec.rb index f376650554..853050b48f 100644 --- a/spec/controllers/admin/bulk_line_items_controller_spec.rb +++ b/spec/controllers/admin/bulk_line_items_controller_spec.rb @@ -209,10 +209,10 @@ describe Admin::BulkLineItemsController, type: :controller do allow(Spree::LineItem) .to receive(:find).with(line_item1.id.to_s).and_return(line_item1) - expect(line_item1.order).to receive(:reload).with(lock: true) + expect(line_item1.order).to receive(:with_lock).and_call_original expect(line_item1.order).to receive(:update_line_item_fees!) expect(line_item1.order).to receive(:update_order_fees!) - expect(line_item1.order).to receive(:update_order!) + expect(line_item1.order).to receive(:update_order!).once spree_put :update, params end