mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-03-10 03:30:22 +00:00
Start moving backorder logic to service
The job class is getting too big.
This commit is contained in:
@@ -7,7 +7,6 @@ class BackorderJob < ApplicationJob
|
||||
FDC_SALE_SESSION_URL = "#{FDC_BASE_URL}/SalesSession/#".freeze
|
||||
|
||||
# The FDC implementation needs special ids for new objects:
|
||||
FDC_NEW_ORDER_URL = "#{FDC_ORDERS_URL}/#".freeze
|
||||
FDC_ORDER_LINES_URL = "#{FDC_ORDERS_URL}/#/OrderLines".freeze
|
||||
|
||||
queue_as :default
|
||||
@@ -32,7 +31,7 @@ class BackorderJob < ApplicationJob
|
||||
end
|
||||
|
||||
def self.place_backorder(order, linked_variants)
|
||||
backorder = build_order(order)
|
||||
backorder = FdcBackorderer.new.find_or_build_order(order)
|
||||
catalog = load_catalog(order.distributor.owner)
|
||||
|
||||
linked_variants.each_with_index do |variant, index|
|
||||
@@ -63,11 +62,6 @@ class BackorderJob < ApplicationJob
|
||||
end
|
||||
end
|
||||
|
||||
# This needs to find an existing order when the API is available.
|
||||
def self.build_order(ofn_order)
|
||||
OrderBuilder.new_order(ofn_order, FDC_NEW_ORDER_URL)
|
||||
end
|
||||
|
||||
def self.build_order_line(offer, quantity)
|
||||
OrderLineBuilder.build(offer, quantity)
|
||||
end
|
||||
|
||||
12
app/services/fdc_backorderer.rb
Normal file
12
app/services/fdc_backorderer.rb
Normal file
@@ -0,0 +1,12 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
# Place and update orders based on missing stock.
|
||||
class FdcBackorderer
|
||||
FDC_BASE_URL = "https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod"
|
||||
FDC_ORDERS_URL = "#{FDC_BASE_URL}/Orders".freeze
|
||||
FDC_NEW_ORDER_URL = "#{FDC_ORDERS_URL}/#".freeze
|
||||
|
||||
def find_or_build_order(ofn_order)
|
||||
OrderBuilder.new_order(ofn_order, FDC_NEW_ORDER_URL)
|
||||
end
|
||||
end
|
||||
16
spec/services/fdc_backorderer_spec.rb
Normal file
16
spec/services/fdc_backorderer_spec.rb
Normal file
@@ -0,0 +1,16 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
require 'spec_helper'
|
||||
|
||||
RSpec.describe FdcBackorderer do
|
||||
let(:order) { create(:completed_order_with_totals) }
|
||||
|
||||
describe "#find_or_build_order" do
|
||||
it "builds an order object" do
|
||||
backorder = subject.find_or_build_order(order)
|
||||
|
||||
expect(backorder.semanticId).to match %r{^https.*/\#$}
|
||||
expect(backorder.lines).to eq []
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user