diff --git a/app/models/spree/order_decorator.rb b/app/models/spree/order_decorator.rb index 322fe8a2fc..76b295e794 100644 --- a/app/models/spree/order_decorator.rb +++ b/app/models/spree/order_decorator.rb @@ -398,9 +398,11 @@ Spree::Order.class_eval do def update_adjustment!(adjustment) return if adjustment.finalized? + state = adjustment.state adjustment.state = 'open' adjustment.update! + update! adjustment.state = state end diff --git a/spec/models/spree/order_spec.rb b/spec/models/spree/order_spec.rb index d278e949be..9cb79e4d3d 100644 --- a/spec/models/spree/order_spec.rb +++ b/spec/models/spree/order_spec.rb @@ -677,11 +677,9 @@ describe Spree::Order do context "removing line_items" do it "updates shipping and transaction fees" do - # Setting quantity of an item to zero - order.update_attributes(line_items_attributes: [{id: order.line_items.first.id, quantity: 0}]) + order.line_items.first.update_attribute(:quantity, 0) + order.save - # Check if fees got updated - order.reload expect(order.adjustment_total).to eq expected_fees - shipping_fee - payment_fee expect(order.shipment.adjustment.included_tax).to eq 0.6 end