From ee66e37521f6f7fe2d72f9a983f6bcb55e762a7f Mon Sep 17 00:00:00 2001 From: Luis Ramos Date: Thu, 2 Jul 2020 20:20:04 +0100 Subject: [PATCH] Move adjuster, estimator, packer and prioritizer to order management engine --- app/models/spree/shipment.rb | 2 +- .../app/services/order_management}/stock/adjuster.rb | 2 +- .../services/order_management/stock/coordinator.rb | 6 +++--- .../services/order_management}/stock/estimator.rb | 2 +- .../app/services/order_management}/stock/packer.rb | 4 ++-- .../services/order_management}/stock/prioritizer.rb | 4 ++-- .../order_management}/stock/estimator_spec.rb | 12 ++++++------ .../services/order_management}/stock/packer_spec.rb | 2 +- .../order_management}/stock/prioritizer_spec.rb | 2 +- spec/models/spree/shipment_spec.rb | 6 +++--- 10 files changed, 21 insertions(+), 21 deletions(-) rename {app/models/spree => engines/order_management/app/services/order_management}/stock/adjuster.rb (96%) rename {app/models/spree => engines/order_management/app/services/order_management}/stock/estimator.rb (98%) rename {app/models/spree => engines/order_management/app/services/order_management}/stock/packer.rb (92%) rename {app/models/spree => engines/order_management/app/services/order_management}/stock/prioritizer.rb (90%) rename {spec/models/spree => engines/order_management/spec/services/order_management}/stock/estimator_spec.rb (89%) rename {spec/models/spree => engines/order_management/spec/services/order_management}/stock/packer_spec.rb (98%) rename {spec/models/spree => engines/order_management/spec/services/order_management}/stock/prioritizer_spec.rb (99%) diff --git a/app/models/spree/shipment.rb b/app/models/spree/shipment.rb index f271af3c8f..68002d6ee2 100644 --- a/app/models/spree/shipment.rb +++ b/app/models/spree/shipment.rb @@ -107,7 +107,7 @@ module Spree def refresh_rates return shipping_rates if shipped? - self.shipping_rates = Stock::Estimator.new(order).shipping_rates(to_package) + self.shipping_rates = OrderManagement::Stock::Estimator.new(order).shipping_rates(to_package) if shipping_method selected_rate = shipping_rates.detect { |rate| diff --git a/app/models/spree/stock/adjuster.rb b/engines/order_management/app/services/order_management/stock/adjuster.rb similarity index 96% rename from app/models/spree/stock/adjuster.rb rename to engines/order_management/app/services/order_management/stock/adjuster.rb index 4926e8a7e6..ed1337a16a 100644 --- a/app/models/spree/stock/adjuster.rb +++ b/engines/order_management/app/services/order_management/stock/adjuster.rb @@ -2,7 +2,7 @@ # Used by Prioritizer to adjust item quantities # see prioritizer_spec for use cases -module Spree +module OrderManagement module Stock class Adjuster attr_accessor :variant, :need, :status diff --git a/engines/order_management/app/services/order_management/stock/coordinator.rb b/engines/order_management/app/services/order_management/stock/coordinator.rb index 84cea7d9cf..215a82ffe3 100644 --- a/engines/order_management/app/services/order_management/stock/coordinator.rb +++ b/engines/order_management/app/services/order_management/stock/coordinator.rb @@ -38,12 +38,12 @@ module OrderManagement private def prioritize_packages(packages) - prioritizer = Spree::Stock::Prioritizer.new(order, packages) + prioritizer = OrderManagement::Stock::Prioritizer.new(order, packages) prioritizer.prioritized_packages end def estimate_packages(packages) - estimator = Spree::Stock::Estimator.new(order) + estimator = OrderManagement::Stock::Estimator.new(order) packages.each do |package| package.shipping_rates = estimator.shipping_rates(package) end @@ -51,7 +51,7 @@ module OrderManagement end def build_packer(stock_location, order) - Spree::Stock::Packer.new(stock_location, order) + OrderManagement::Stock::Packer.new(stock_location, order) end end end diff --git a/app/models/spree/stock/estimator.rb b/engines/order_management/app/services/order_management/stock/estimator.rb similarity index 98% rename from app/models/spree/stock/estimator.rb rename to engines/order_management/app/services/order_management/stock/estimator.rb index 9f14033590..c97d9c3b99 100644 --- a/app/models/spree/stock/estimator.rb +++ b/engines/order_management/app/services/order_management/stock/estimator.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module Spree +module OrderManagement module Stock class Estimator attr_reader :order, :currency diff --git a/app/models/spree/stock/packer.rb b/engines/order_management/app/services/order_management/stock/packer.rb similarity index 92% rename from app/models/spree/stock/packer.rb rename to engines/order_management/app/services/order_management/stock/packer.rb index a936d24c14..867e8889dd 100644 --- a/app/models/spree/stock/packer.rb +++ b/engines/order_management/app/services/order_management/stock/packer.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module Spree +module OrderManagement module Stock class Packer attr_reader :stock_location, :order @@ -17,7 +17,7 @@ module Spree def default_package package = OrderManagement::Stock::Package.new(stock_location, order) order.line_items.each do |line_item| - if Config.track_inventory_levels + if Spree::Config.track_inventory_levels next unless stock_location.stock_item(line_item.variant) on_hand, backordered = stock_location.fill_status(line_item.variant, line_item.quantity) diff --git a/app/models/spree/stock/prioritizer.rb b/engines/order_management/app/services/order_management/stock/prioritizer.rb similarity index 90% rename from app/models/spree/stock/prioritizer.rb rename to engines/order_management/app/services/order_management/stock/prioritizer.rb index 41ef339702..16b992333f 100644 --- a/app/models/spree/stock/prioritizer.rb +++ b/engines/order_management/app/services/order_management/stock/prioritizer.rb @@ -1,11 +1,11 @@ # frozen_string_literal: true -module Spree +module OrderManagement module Stock class Prioritizer attr_reader :packages, :order - def initialize(order, packages, adjuster_class = Adjuster) + def initialize(order, packages, adjuster_class = OrderManagement::Stock::Adjuster) @order = order @packages = packages @adjuster_class = adjuster_class diff --git a/spec/models/spree/stock/estimator_spec.rb b/engines/order_management/spec/services/order_management/stock/estimator_spec.rb similarity index 89% rename from spec/models/spree/stock/estimator_spec.rb rename to engines/order_management/spec/services/order_management/stock/estimator_spec.rb index 6cdf8106b2..74215b031c 100644 --- a/spec/models/spree/stock/estimator_spec.rb +++ b/engines/order_management/spec/services/order_management/stock/estimator_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -module Spree +module OrderManagement module Stock describe Estimator do let!(:shipping_method) { create(:shipping_method, zones: [Spree::Zone.global] ) } @@ -13,11 +13,11 @@ module Spree context "#shipping rates" do before(:each) do shipping_method.zones.first.members.create(zoneable: order.ship_address.country) - allow_any_instance_of(ShippingMethod).to receive_message_chain(:calculator, :available?).and_return(true) - allow_any_instance_of(ShippingMethod).to receive_message_chain(:calculator, :compute).and_return(4.00) - allow_any_instance_of(ShippingMethod). + allow_any_instance_of(Spree::ShippingMethod).to receive_message_chain(:calculator, :available?).and_return(true) + allow_any_instance_of(Spree::ShippingMethod).to receive_message_chain(:calculator, :compute).and_return(4.00) + allow_any_instance_of(Spree::ShippingMethod). to receive_message_chain(:calculator, :preferences).and_return({ currency: order.currency }) - allow_any_instance_of(ShippingMethod).to receive_message_chain(:calculator, :marked_for_destruction?) + allow_any_instance_of(Spree::ShippingMethod).to receive_message_chain(:calculator, :marked_for_destruction?) allow(package).to receive_messages(shipping_methods: [shipping_method]) end @@ -39,7 +39,7 @@ module Spree context "the calculator is not available for that order" do it "does not return shipping rates from a shipping method" do - allow_any_instance_of(ShippingMethod).to receive_message_chain(:calculator, :available?).and_return(false) + allow_any_instance_of(Spree::ShippingMethod).to receive_message_chain(:calculator, :available?).and_return(false) shipping_rates = subject.shipping_rates(package) expect(shipping_rates).to eq [] end diff --git a/spec/models/spree/stock/packer_spec.rb b/engines/order_management/spec/services/order_management/stock/packer_spec.rb similarity index 98% rename from spec/models/spree/stock/packer_spec.rb rename to engines/order_management/spec/services/order_management/stock/packer_spec.rb index ab5da00dd4..f1e2b432bf 100644 --- a/spec/models/spree/stock/packer_spec.rb +++ b/engines/order_management/spec/services/order_management/stock/packer_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -module Spree +module OrderManagement module Stock describe Packer do let(:order) { create(:order_with_line_items, line_items_count: 5) } diff --git a/spec/models/spree/stock/prioritizer_spec.rb b/engines/order_management/spec/services/order_management/stock/prioritizer_spec.rb similarity index 99% rename from spec/models/spree/stock/prioritizer_spec.rb rename to engines/order_management/spec/services/order_management/stock/prioritizer_spec.rb index 4715da1ab8..b1783eb734 100644 --- a/spec/models/spree/stock/prioritizer_spec.rb +++ b/engines/order_management/spec/services/order_management/stock/prioritizer_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -module Spree +module OrderManagement module Stock describe Prioritizer do let(:order) { create(:order_with_line_items, line_items_count: 2) } diff --git a/spec/models/spree/shipment_spec.rb b/spec/models/spree/shipment_spec.rb index e3b7ef9671..457df53a6d 100644 --- a/spec/models/spree/shipment_spec.rb +++ b/spec/models/spree/shipment_spec.rb @@ -125,7 +125,7 @@ describe Spree::Shipment do let(:mock_estimator) { double('estimator', shipping_rates: shipping_rates) } it 'should request new rates, and maintain shipping_method selection' do - Spree::Stock::Estimator.should_receive(:new).with(shipment.order).and_return(mock_estimator) + OrderManagement::Stock::Estimator.should_receive(:new).with(shipment.order).and_return(mock_estimator) shipment.stub(shipping_method: shipping_method2) expect(shipment.refresh_rates).to eq shipping_rates @@ -133,14 +133,14 @@ describe Spree::Shipment do end it 'should handle no shipping_method selection' do - Spree::Stock::Estimator.should_receive(:new).with(shipment.order).and_return(mock_estimator) + OrderManagement::Stock::Estimator.should_receive(:new).with(shipment.order).and_return(mock_estimator) shipment.stub(shipping_method: nil) expect(shipment.refresh_rates).to eq shipping_rates expect(shipment.reload.selected_shipping_rate).to_not be_nil end it 'should not refresh if shipment is shipped' do - Spree::Stock::Estimator.should_not_receive(:new) + OrderManagement::Stock::Estimator.should_not_receive(:new) shipment.shipping_rates.delete_all shipment.stub(shipped?: true) expect(shipment.refresh_rates).to eq []