4. OrderCycleOpenedJob triggers webhook

This commit is contained in:
David Cook
2022-11-04 16:43:27 +11:00
parent b91cabc510
commit 739df4be01
3 changed files with 49 additions and 0 deletions

View 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

View File

@@ -15,5 +15,7 @@
every: "5m"
SubscriptionConfirmJob:
every: "5m"
OrderCycleOpenedJob:
every: "5m"
OrderCycleClosingJob:
every: "5m"

View 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