From f7229ab229ed8e2c78b1f740c413ee22743481de Mon Sep 17 00:00:00 2001 From: Rob Harrington Date: Fri, 9 Dec 2016 07:44:40 +1100 Subject: [PATCH] Uninitialised but recently updated order_cycles also trigger StandingOrderPlacementJob --- app/jobs/order_cycle_open_close_job.rb | 6 +++--- spec/jobs/order_cycle_open_close_job_spec.rb | 15 ++++++++------- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/app/jobs/order_cycle_open_close_job.rb b/app/jobs/order_cycle_open_close_job.rb index a336edc784..071d52ed44 100644 --- a/app/jobs/order_cycle_open_close_job.rb +++ b/app/jobs/order_cycle_open_close_job.rb @@ -12,9 +12,9 @@ class OrderCycleOpenCloseJob def recently_opened_order_cycles return @recently_opened_order_cycles unless @recently_opened_order_cycles.nil? @recently_opened_order_cycles = - OrderCycle.where( - 'orders_open_at BETWEEN (?) AND (?) AND standing_orders_placed_at IS NULL', - 10.minutes.ago, Time.now + OrderCycle.active.where( + 'standing_orders_placed_at IS NULL AND (orders_open_at BETWEEN (?) AND (?) OR updated_at BETWEEN (?) AND (?))', + 10.minutes.ago, Time.now, 10.minutes.ago, Time.now ) end end diff --git a/spec/jobs/order_cycle_open_close_job_spec.rb b/spec/jobs/order_cycle_open_close_job_spec.rb index f54db04a37..8297571c8e 100644 --- a/spec/jobs/order_cycle_open_close_job_spec.rb +++ b/spec/jobs/order_cycle_open_close_job_spec.rb @@ -4,15 +4,16 @@ describe OrderCycleOpenCloseJob do let!(:job) { OrderCycleOpenCloseJob.new } describe "finding recently opened order cycles" do - let!(:order_cycle1) { create(:simple_order_cycle, orders_open_at: 11.minutes.ago) } - let!(:order_cycle2) { create(:simple_order_cycle, orders_open_at: 9.minutes.ago) } - let!(:order_cycle3) { create(:simple_order_cycle, orders_open_at: 2.minutes.ago, standing_orders_placed_at: 1.minute.ago ) } - let!(:order_cycle4) { create(:simple_order_cycle, orders_open_at: 1.minute.from_now) } + let!(:order_cycle1) { create(:simple_order_cycle, orders_open_at: 11.minutes.ago, updated_at: 11.minutes.ago) } + let!(:order_cycle2) { create(:simple_order_cycle, orders_open_at: 11.minutes.ago, updated_at: 9.minutes.ago) } + let!(:order_cycle3) { create(:simple_order_cycle, orders_open_at: 9.minutes.ago, updated_at: 9.minutes.ago) } + let!(:order_cycle4) { create(:simple_order_cycle, orders_open_at: 2.minutes.ago, standing_orders_placed_at: 1.minute.ago ) } + let!(:order_cycle5) { create(:simple_order_cycle, orders_open_at: 1.minute.from_now) } - it "only returns unprocessed order cycles whose orders_open_at date is within the past 10 minutes" do + it "returns unprocessed order cycles whose orders_open_at or updated_at date is within the past 10 minutes" do order_cycles = job.send(:recently_opened_order_cycles) - expect(order_cycles).to include order_cycle2 - expect(order_cycles).to_not include order_cycle1, order_cycle3, order_cycle4 + expect(order_cycles).to include order_cycle2, order_cycle3 + expect(order_cycles).to_not include order_cycle1, order_cycle4, order_cycle5 end end