mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-02-03 22:06:07 +00:00
Don't change canceled orders
We have a PR already that removes the UI for this when the order is canceled. Implementing it on controller-side makes sure that it doesn't happen accidentally if the user has multiple tabs open.
This commit is contained in:
@@ -5,6 +5,7 @@ module Spree
|
||||
|
||||
prepend_before_action :set_included_tax, only: [:create, :update]
|
||||
before_action :set_order_id, only: [:create, :update]
|
||||
before_action :skip_changing_canceled_orders, only: [:create, :update]
|
||||
after_action :update_order, only: [:create, :update, :destroy]
|
||||
before_action :set_default_tax_rate, only: :edit
|
||||
before_action :enable_updates, only: :update
|
||||
@@ -28,6 +29,10 @@ module Spree
|
||||
@adjustment.order_id = parent.id
|
||||
end
|
||||
|
||||
def skip_changing_canceled_orders
|
||||
redirect_to admin_order_adjustments_path(@order) if @order.canceled?
|
||||
end
|
||||
|
||||
# Choose a default tax rate to show on the edit form. The adjustment stores its included
|
||||
# tax in dollars, but doesn't store the source of the tax (ie. TaxRate that generated it).
|
||||
# We guess which tax rate here, choosing:
|
||||
|
||||
@@ -90,5 +90,33 @@ module Spree
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe "with a cancelled order" do
|
||||
let(:order) { create(:completed_order_with_totals) }
|
||||
let(:tax_rate) { create(:tax_rate, amount: 0.1, calculator: ::Calculator::DefaultTax.new) }
|
||||
let(:adjustment) {
|
||||
create(:adjustment, adjustable: order, order: order, amount: 1100, included_tax: 100)
|
||||
}
|
||||
|
||||
before do
|
||||
expect(order.cancel).to eq true
|
||||
end
|
||||
|
||||
it "doesn't create adjustments" do
|
||||
expect {
|
||||
spree_post :create, order_id: order.number, adjustment: { label: "Testing", amount: "110" }, tax_rate_id: ""
|
||||
}.to_not change { [Adjustment.count, order.reload.total] }
|
||||
|
||||
expect(response).to redirect_to spree.admin_order_adjustments_path(order)
|
||||
end
|
||||
|
||||
it "doesn't change adjustments" do
|
||||
expect {
|
||||
spree_put :update, order_id: order.number, id: adjustment.id, adjustment: { label: "Testing", amount: "110" }, tax_rate_id: ""
|
||||
}.to_not change { [adjustment.reload.amount, order.reload.total] }
|
||||
|
||||
expect(response).to redirect_to spree.admin_order_adjustments_path(order)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user