diff --git a/engines/dfc_provider/app/services/catalog_item_builder.rb b/engines/dfc_provider/app/services/catalog_item_builder.rb index 3af8c0e4f4..4a0c28005c 100644 --- a/engines/dfc_provider/app/services/catalog_item_builder.rb +++ b/engines/dfc_provider/app/services/catalog_item_builder.rb @@ -15,6 +15,7 @@ class CatalogItemBuilder < DfcBuilder if limit.to_i.negative? variant.stock_items[0].backorderable = true else + variant.stock_items[0].backorderable = false variant.stock_items[0].count_on_hand = limit end end diff --git a/engines/dfc_provider/spec/services/catalog_item_builder_spec.rb b/engines/dfc_provider/spec/services/catalog_item_builder_spec.rb index 6f7d5d42a6..15052e034d 100644 --- a/engines/dfc_provider/spec/services/catalog_item_builder_spec.rb +++ b/engines/dfc_provider/spec/services/catalog_item_builder_spec.rb @@ -28,4 +28,23 @@ RSpec.describe DfcBuilder do ) end end + + describe ".apply_stock" do + let(:item) { CatalogItemBuilder.catalog_item(variant) } + + it "updates from on-demand to out-of-stock" do + variant.save! + variant.on_demand = true + variant.on_hand = -3 + + item.stockLimitation = 0 + + expect { + CatalogItemBuilder.apply_stock(item, variant) + variant.save! + } + .to change { variant.on_demand }.to(false) + .and change { variant.on_hand }.to(0) + end + end end