OfferBroker needs only catalog URL, no other URLs

This commit is contained in:
Maikel Linke
2024-12-12 15:45:42 +11:00
parent 9b965f657c
commit d5c3e94b24
6 changed files with 14 additions and 12 deletions

View File

@@ -117,7 +117,7 @@ class BackorderJob < ApplicationJob
end
def load_broker(user, urls)
FdcOfferBroker.new(user, urls)
FdcOfferBroker.new(user, urls.catalog_url)
end
def place_order(user, order, orderer, backorder)

View File

@@ -40,7 +40,7 @@ class BackorderUpdater
reference_link = variants[0].semantic_links[0].semantic_id
urls = FdcUrlBuilder.new(reference_link)
orderer = FdcBackorderer.new(user, urls)
broker = FdcOfferBroker.new(user, urls)
broker = FdcOfferBroker.new(user, urls.catalog_url)
updated_lines = update_order_lines(backorder, order_cycle, variants, broker, orderer)
unprocessed_lines = backorder.lines.to_set - updated_lines

View File

@@ -6,19 +6,19 @@ class FdcOfferBroker
Solution = Struct.new(:product, :factor, :offer)
RetailSolution = Struct.new(:retail_product_id, :factor)
def self.load_catalog(user, urls)
def self.load_catalog(user, catalog_url)
api = DfcRequest.new(user)
catalog_json = api.call(urls.catalog_url)
catalog_json = api.call(catalog_url)
DfcIo.import(catalog_json)
end
def initialize(user, urls)
def initialize(user, catalog_url)
@user = user
@urls = urls
@catalog_url = catalog_url
end
def catalog
@catalog ||= self.class.load_catalog(@user, @urls)
@catalog ||= self.class.load_catalog(@user, @catalog_url)
end
def best_offer(product_id)

View File

@@ -14,7 +14,7 @@ RSpec.describe CompleteBackorderJob do
let(:orderer) { FdcBackorderer.new(user, urls) }
let(:order) {
backorder = orderer.find_or_build_order(ofn_order)
broker = FdcOfferBroker.new(user, urls)
broker = FdcOfferBroker.new(user, urls.catalog_url)
bean_offer = broker.best_offer(product_link).offer
bean_line = orderer.find_or_build_order_line(backorder, bean_offer)

View File

@@ -33,7 +33,7 @@ RSpec.describe FdcBackorderer do
expect(backorder.lines).to eq []
# Add items and place the new order:
catalog = FdcOfferBroker.load_catalog(order.distributor.owner, urls)
catalog = FdcOfferBroker.load_catalog(order.distributor.owner, urls.catalog_url)
product = catalog.find { |i| i.semanticType == "dfc-b:SuppliedProduct" }
offer = FdcOfferBroker.new(nil, nil).offer_of(product)
line = subject.find_or_build_order_line(backorder, offer)
@@ -80,7 +80,7 @@ RSpec.describe FdcBackorderer do
describe "#find_or_build_order_line" do
it "add quantity to an existing line item", vcr: true do
catalog = FdcOfferBroker.load_catalog(order.distributor.owner, urls)
catalog = FdcOfferBroker.load_catalog(order.distributor.owner, urls.catalog_url)
backorder = subject.find_or_build_order(order)
existing_line = backorder.lines[0]

View File

@@ -3,11 +3,13 @@
require 'spec_helper'
RSpec.describe FdcOfferBroker do
subject { FdcOfferBroker.new(user, urls) }
subject { FdcOfferBroker.new(user, catalog_url) }
let(:catalog) {
VCR.use_cassette(:fdc_catalog) { subject.catalog }
}
let(:urls) { FdcUrlBuilder.new(product_link) }
let(:catalog_url) {
"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/SuppliedProducts"
}
let(:product_link) {
"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/SuppliedProducts/44519466467635"
}