Handle empty backorder

Backorder can become empty after a customer cancels their order. Then we
don't want to fail but also don't need to place an order.
This commit is contained in:
Maikel Linke
2024-11-19 15:53:06 +11:00
parent a8fb6492f4
commit 46048dcd18
2 changed files with 19 additions and 0 deletions

View File

@@ -19,6 +19,9 @@ class CompleteBackorderJob < ApplicationJob
# someone else's order.
def perform(user, distributor, order_cycle, order_id)
order = FdcBackorderer.new(user, nil).find_order(order_id)
return if order&.lines.blank?
urls = FdcUrlBuilder.new(order.lines[0].offer.offeredItem.semanticId)
variants = order_cycle.variants_distributed_by(distributor)

View File

@@ -115,5 +115,21 @@ RSpec.describe CompleteBackorderJob do
}.to enqueue_mail(BackorderMailer, :backorder_incomplete)
.and raise_error VCR::Errors::UnhandledHTTPRequestError
end
it "skips empty backorders" do
user = nil
distributor = nil
order_cycle = nil
order_id = nil
backorder = DataFoodConsortium::Connector::Order.new(
order_id, orderStatus: "dfc-v:Held"
)
expect_any_instance_of(FdcBackorderer)
.to receive(:find_order).and_return(backorder)
expect {
subject.perform(user, distributor, order_cycle, order_id)
}.not_to raise_error
end
end
end