WIP, OC open-close job: finding recently opened order cycles

This commit is contained in:
Rob Harrington
2016-11-10 11:48:45 +11:00
parent 140d62939a
commit 5b25f63e44
2 changed files with 37 additions and 0 deletions

View File

@@ -0,0 +1,19 @@
class OrderCycleOpenCloseJob
def perform
recently_opened_order_cycles.update_all(standing_orders_placed_at: Time.now)
recently_opened_order_cycles.each do |order_cycle|
Delayed::Job.enqueue(StandingOrderPlacementJob.new(order_cycle))
end
end
private
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
)
end
end

View File

@@ -0,0 +1,18 @@
require 'spec_helper'
describe OrderCycleOpenCloseJob do
describe "finding recently opened order cycles" do
let!(:job) { OrderCycleOpenCloseJob.new }
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) }
it "only returns uninitialized order cycles whose orders_open_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
end
end
end