mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-01-24 20:36:49 +00:00
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:
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user