mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-03-01 02:03:22 +00:00
WIP, OC open-close job: finding recently opened order cycles
This commit is contained in:
19
app/jobs/order_cycle_open_close_job.rb
Normal file
19
app/jobs/order_cycle_open_close_job.rb
Normal 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
|
||||
18
spec/jobs/order_cycle_open_close_job_spec.rb
Normal file
18
spec/jobs/order_cycle_open_close_job_spec.rb
Normal 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
|
||||
Reference in New Issue
Block a user