Start moving backorder logic to service

The job class is getting too big.
This commit is contained in:
Maikel Linke
2024-08-23 16:56:10 +10:00
parent 6c6927af84
commit 827e37cada
3 changed files with 29 additions and 7 deletions

View File

@@ -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

View 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

View 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