diff --git a/app/jobs/backorder_job.rb b/app/jobs/backorder_job.rb index 0628c4620f..fc22b9bda9 100644 --- a/app/jobs/backorder_job.rb +++ b/app/jobs/backorder_job.rb @@ -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 diff --git a/app/services/fdc_backorderer.rb b/app/services/fdc_backorderer.rb new file mode 100644 index 0000000000..14e5015593 --- /dev/null +++ b/app/services/fdc_backorderer.rb @@ -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 diff --git a/spec/services/fdc_backorderer_spec.rb b/spec/services/fdc_backorderer_spec.rb new file mode 100644 index 0000000000..3f5da299ac --- /dev/null +++ b/spec/services/fdc_backorderer_spec.rb @@ -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