mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-02-27 01:43:22 +00:00
4. OrderCycleOpenedJob triggers webhook
This commit is contained in:
17
app/jobs/order_cycle_opened_job.rb
Normal file
17
app/jobs/order_cycle_opened_job.rb
Normal file
@@ -0,0 +1,17 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
# Trigger jobs for any order cycles that recently opened
|
||||
class OrderCycleOpenedJob < ApplicationJob
|
||||
def perform
|
||||
recently_opened_order_cycles.each do |order_cycle|
|
||||
OrderCycleWebhookService.create_webhook_job(order_cycle, 'order_cycle.opened')
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def recently_opened_order_cycles
|
||||
OrderCycle
|
||||
.where(orders_open_at: 1.hour.ago..Time.zone.now)
|
||||
end
|
||||
end
|
||||
@@ -15,5 +15,7 @@
|
||||
every: "5m"
|
||||
SubscriptionConfirmJob:
|
||||
every: "5m"
|
||||
OrderCycleOpenedJob:
|
||||
every: "5m"
|
||||
OrderCycleClosingJob:
|
||||
every: "5m"
|
||||
|
||||
30
spec/jobs/order_cycle_opened_job_spec.rb
Normal file
30
spec/jobs/order_cycle_opened_job_spec.rb
Normal file
@@ -0,0 +1,30 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
require 'spec_helper'
|
||||
|
||||
describe OrderCycleOpenedJob do
|
||||
let(:oc_opened_before) {
|
||||
create(:order_cycle, orders_open_at: Time.zone.now - 1.hour)
|
||||
}
|
||||
let(:oc_opened_now) {
|
||||
create(:order_cycle, orders_open_at: Time.zone.now)
|
||||
}
|
||||
let(:oc_opening_soon) {
|
||||
create(:order_cycle, orders_open_at: Time.zone.now + 1.minute)
|
||||
}
|
||||
|
||||
it "enqueues jobs for recently opened order cycles only" do
|
||||
expect(OrderCycleWebhookService)
|
||||
.to receive(:create_webhook_job).with(oc_opened_now, 'order_cycle.opened')
|
||||
|
||||
expect(OrderCycleWebhookService)
|
||||
.to_not receive(:create_webhook_job).with(oc_opened_before, 'order_cycle.opened')
|
||||
|
||||
expect(OrderCycleWebhookService)
|
||||
.to_not receive(:create_webhook_job).with(oc_opening_soon, 'order_cycle.opened')
|
||||
|
||||
OrderCycleOpenedJob.perform_now
|
||||
end
|
||||
|
||||
pending "doesn't trigger jobs open more than once"
|
||||
end
|
||||
Reference in New Issue
Block a user