diff --git a/app/services/place_proxy_order.rb b/app/services/place_proxy_order.rb index bbf5b922fd..b324dee154 100644 --- a/app/services/place_proxy_order.rb +++ b/app/services/place_proxy_order.rb @@ -11,7 +11,7 @@ class PlaceProxyOrder end def call - return unless initialise_order + return unless place_order summarizer.record_order(order) return summarizer.record_issue(:complete, order) if order.completed? @@ -32,6 +32,14 @@ class PlaceProxyOrder attr_reader :proxy_order, :subscription, :summarizer, :logger, :stock_changes_loader, :changes attr_accessor :order + def place_order + proxy_order.with_lock do + return if proxy_order.placed_at.present? + + initialise_order + end + end + def initialise_order logger.info("Placing Order for Proxy Order #{proxy_order.id}") diff --git a/spec/jobs/subscription_placement_job_spec.rb b/spec/jobs/subscription_placement_job_spec.rb index 00da51d3ae..c4ee87bb94 100644 --- a/spec/jobs/subscription_placement_job_spec.rb +++ b/spec/jobs/subscription_placement_job_spec.rb @@ -214,8 +214,6 @@ describe SubscriptionPlacementJob do breakpoint.unlock threads.each(&:join) }.to change { - pending "The current code places two orders!" - Spree::Order.count }.by(1) end