From 3e0eb8708e5fec7129b23403231652dea1910d76 Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Fri, 6 Sep 2024 13:38:22 +1000 Subject: [PATCH] Simplify service with ivar --- app/jobs/backorder_job.rb | 4 ++-- app/services/fdc_backorderer.rb | 23 ++++++++++++++--------- spec/services/fdc_backorderer_spec.rb | 3 ++- 3 files changed, 18 insertions(+), 12 deletions(-) diff --git a/app/jobs/backorder_job.rb b/app/jobs/backorder_job.rb index 2d73bf2dba..ab949d1010 100644 --- a/app/jobs/backorder_job.rb +++ b/app/jobs/backorder_job.rb @@ -27,7 +27,7 @@ class BackorderJob < ApplicationJob end def self.place_backorder(order, linked_variants) - orderer = FdcBackorderer.new + orderer = FdcBackorderer.new(order.distributor.owner) backorder = orderer.find_or_build_order(order) catalog = load_catalog(order.distributor.owner) @@ -39,7 +39,7 @@ class BackorderJob < ApplicationJob line.quantity = line.quantity.to_i + needed_quantity end - orderer.send_order(order, backorder) + orderer.send_order(backorder) # Once we have transformations and know the quantities in bulk products # we will need to increase on_hand by the ordered quantity. diff --git a/app/services/fdc_backorderer.rb b/app/services/fdc_backorderer.rb index 3f636c5eb6..311c3294ee 100644 --- a/app/services/fdc_backorderer.rb +++ b/app/services/fdc_backorderer.rb @@ -7,9 +7,14 @@ class FdcBackorderer FDC_NEW_ORDER_URL = "#{FDC_ORDERS_URL}/#".freeze FDC_SALE_SESSION_URL = "#{FDC_BASE_URL}/SalesSession/#".freeze + attr_reader :user + + def initialize(user) + @user = user + end + def find_or_build_order(ofn_order) - remote_order = find_open_order(ofn_order.distributor.owner) - remote_order || build_new_order(ofn_order) + find_open_order || build_new_order(ofn_order) end def build_new_order(ofn_order) @@ -18,8 +23,8 @@ class FdcBackorderer end end - def find_open_order(user) - graph = import(user, FDC_ORDERS_URL) + def find_open_order + graph = import(FDC_ORDERS_URL) open_orders = graph&.select do |o| o.semanticType == "dfc-b:Order" && o.orderStatus[:path] == "Held" end @@ -78,20 +83,20 @@ class FdcBackorderer end end - def import(user, url) + def import(url) api = DfcRequest.new(user) json = api.call(url) DfcIo.import(json) end - def send_order(ofn_order, backorder) + def send_order(backorder) lines = backorder.lines offers = lines.map(&:offer) products = offers.map(&:offeredItem) sessions = [backorder.saleSession].compact json = DfcIo.export(backorder, *lines, *offers, *products, *sessions) - api = DfcRequest.new(ofn_order.distributor.owner) + api = DfcRequest.new(user) if backorder.semanticId == FDC_NEW_ORDER_URL # Create order via POST: @@ -102,9 +107,9 @@ class FdcBackorderer end end - def complete_order(ofn_order, backorder) + def complete_order(backorder) backorder.orderStatus = "dfc-v:Complete" - send_order(ofn_order, backorder) + send_order(backorder) end def build_sale_session(order) diff --git a/spec/services/fdc_backorderer_spec.rb b/spec/services/fdc_backorderer_spec.rb index 71c4069f99..3f78ee6010 100644 --- a/spec/services/fdc_backorderer_spec.rb +++ b/spec/services/fdc_backorderer_spec.rb @@ -3,6 +3,7 @@ require 'spec_helper' RSpec.describe FdcBackorderer do + let(:subject) { FdcBackorderer.new(order.distributor.owner) } let(:order) { create(:completed_order_with_totals) } let(:account) { OidcAccount.new( @@ -41,7 +42,7 @@ RSpec.describe FdcBackorderer do expect(backorder.semanticId).to match %r{^https.*/[0-9]+$} expect(backorder.lines.count).to eq 1 - subject.complete_order(order, backorder) + subject.complete_order(backorder) remaining_open_order = subject.find_or_build_order(order) expect(remaining_open_order.semanticId).not_to eq backorder.semanticId