Uninitialised but recently updated order_cycles also trigger StandingOrderPlacementJob

This commit is contained in:
Rob Harrington
2016-12-09 07:44:40 +11:00
parent c2b68ed6b5
commit f7229ab229
2 changed files with 11 additions and 10 deletions

View File

@@ -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

View File

@@ -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