mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-02-15 23:57:48 +00:00
Handle scenario where the enterprise fee has been deleted
This commit is contained in:
@@ -92,8 +92,13 @@ module Orders
|
||||
def update_removed_fees!(line_item)
|
||||
order_cycle_fees = fee_applicators(line_item.variant).map(&:enterprise_fee)
|
||||
removed_fees = line_item.enterprise_fee_adjustments.where.not(originator: order_cycle_fees)
|
||||
|
||||
removed_fees.each do |removed_fee|
|
||||
removed_fee.update_adjustment!(line_item, force: true)
|
||||
if removed_fee.originator.nil? || removed_fee.originator.deleted?
|
||||
removed_fee.destroy
|
||||
else
|
||||
removed_fee.update_adjustment!(line_item, force: true)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -107,6 +107,35 @@ RSpec.describe Orders::HandleFeesService do
|
||||
end
|
||||
end
|
||||
|
||||
context "when an enterprise fee is deleted" do
|
||||
before do
|
||||
fee.create_adjustment('foo', line_item, true)
|
||||
allow(calculator).to receive(
|
||||
:order_cycle_per_item_enterprise_fee_applicators_for
|
||||
).and_return([])
|
||||
end
|
||||
|
||||
context "soft delete" do
|
||||
it "deletes the line item fee" do
|
||||
fee.destroy
|
||||
|
||||
expect do
|
||||
service.create_or_update_line_item_fees!
|
||||
end.to change { line_item.adjustments.enterprise_fee.count }.by(-1)
|
||||
end
|
||||
end
|
||||
|
||||
context "hard delete" do
|
||||
it "deletes the line item fee" do
|
||||
fee.really_destroy!
|
||||
|
||||
expect do
|
||||
service.create_or_update_line_item_fees!
|
||||
end.to change { line_item.adjustments.enterprise_fee.count }.by(-1)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
context "with a new enterprise fee added to the order cylce" do
|
||||
let(:new_fee) { create(:enterprise_fee, enterprise: fee.enterprise) }
|
||||
let(:fee_applicator2) {
|
||||
|
||||
Reference in New Issue
Block a user