diff --git a/app/models/product_import/entry_processor.rb b/app/models/product_import/entry_processor.rb index 5387da4be1..085df93ad1 100644 --- a/app/models/product_import/entry_processor.rb +++ b/app/models/product_import/entry_processor.rb @@ -72,10 +72,19 @@ module ProductImport def reset_absent @reset_absent ||= ResetAbsent.new( self, - Settings.new(import_settings) + Settings.new(import_settings), + strategy_factory ) end + def strategy_factory + if importing_into_inventory? + InventoryReset + else + ProductsReset + end + end + def total_saved_count @products_created + @variants_created + @variants_updated + @inventory_created + @inventory_updated end diff --git a/app/models/product_import/reset_absent.rb b/app/models/product_import/reset_absent.rb index 8925c2386c..94bdc6d997 100644 --- a/app/models/product_import/reset_absent.rb +++ b/app/models/product_import/reset_absent.rb @@ -4,11 +4,12 @@ module ProductImport class ResetAbsent < SimpleDelegator attr_reader :products_reset_count - def initialize(decorated, settings) + def initialize(decorated, settings, strategy_factory) super(decorated) @products_reset_count = 0 @settings = settings + @strategy_factory = strategy_factory @suppliers_to_reset_products = [] @suppliers_to_reset_inventories = [] @@ -32,7 +33,7 @@ module ProductImport private - attr_reader :settings + attr_reader :settings, :strategy_factory def reset_stock @products_reset_count += strategy.reset @@ -42,14 +43,6 @@ module ProductImport strategy_factory.new(settings.updated_ids, supplier_ids) end - def strategy_factory - if @suppliers_to_reset_inventories.present? - ProductImport::InventoryReset - elsif @suppliers_to_reset_products.present? - ProductImport::ProductsReset - end - end - def supplier_ids if @suppliers_to_reset_inventories.present? @suppliers_to_reset_inventories diff --git a/spec/models/product_import/entry_processor_spec.rb b/spec/models/product_import/entry_processor_spec.rb index 96c1b79b87..af6dbd4b17 100644 --- a/spec/models/product_import/entry_processor_spec.rb +++ b/spec/models/product_import/entry_processor_spec.rb @@ -66,7 +66,8 @@ describe ProductImport::EntryProcessor do instance_double( ProductImport::Settings, data_for_stock_reset?: true, - reset_all_absent?: true + reset_all_absent?: true, + importing_into_inventory?: true ) end @@ -74,7 +75,8 @@ describe ProductImport::EntryProcessor do entry_processor.reset_absent_items expect(ProductImport::ResetAbsent) - .to have_received(:new).with(entry_processor, settings) + .to have_received(:new) + .with(entry_processor, settings, ProductImport::InventoryReset) end end end @@ -88,6 +90,8 @@ describe ProductImport::EntryProcessor do .and_return(reset_absent) allow(reset_absent).to receive(:products_reset_count) + + allow(import_settings).to receive(:[]).with(:settings) end it 'delegates to ResetAbsent' do diff --git a/spec/models/product_import/reset_absent_spec.rb b/spec/models/product_import/reset_absent_spec.rb index 6ebe7db206..dd965a9907 100644 --- a/spec/models/product_import/reset_absent_spec.rb +++ b/spec/models/product_import/reset_absent_spec.rb @@ -21,7 +21,9 @@ describe ProductImport::ResetAbsent do ) end - let(:reset_absent) { described_class.new(entry_processor, settings) } + let(:reset_absent) do + described_class.new(entry_processor, settings, strategy_factory) + end describe '#call' do context 'when there are no enterprises_to_reset' do @@ -32,6 +34,8 @@ describe ProductImport::ResetAbsent do ) end + let(:strategy_factory) { double(:strategy_factory) } + it 'returns nil' do expect(reset_absent.call).to be_nil end @@ -57,6 +61,8 @@ describe ProductImport::ResetAbsent do let(:variant) { create(:variant) } let(:enterprise) { variant.product.supplier } + let(:strategy_factory) { ProductImport::ProductsReset } + before do allow(entry_processor) .to receive(:importing_into_inventory?) { false } @@ -82,6 +88,8 @@ describe ProductImport::ResetAbsent do create(:variant_override, variant: variant, hub: enterprise) end + let(:strategy_factory) { ProductImport::InventoryReset } + before do variant_override @@ -119,6 +127,8 @@ describe ProductImport::ResetAbsent do ) end + let(:strategy_factory) { double(:strategy_factory) } + before do allow(entry_processor) .to receive(:permission_by_id?).with('1') { false } @@ -154,6 +164,8 @@ describe ProductImport::ResetAbsent do ) end + let(:strategy_factory) { ProductImport::InventoryReset } + before do variant_override @@ -192,6 +204,8 @@ describe ProductImport::ResetAbsent do ) end + let(:strategy_factory) { ProductImport::ProductsReset } + it 'returns the number of reset products or variants' do reset_absent.call expect(reset_absent.products_reset_count).to eq(2)