From 0b6e7593db91aff602b1fbdcf411987653adcc29 Mon Sep 17 00:00:00 2001 From: rahsheen Date: Sat, 8 Nov 2025 13:00:54 -0500 Subject: [PATCH 1/2] Set oc.opened at nil when cloning service --- app/services/order_cycles/clone_service.rb | 2 +- spec/jobs/open_order_cycle_job_spec.rb | 24 ++++++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/app/services/order_cycles/clone_service.rb b/app/services/order_cycles/clone_service.rb index 56e8c79247..60cd620e80 100644 --- a/app/services/order_cycles/clone_service.rb +++ b/app/services/order_cycles/clone_service.rb @@ -9,7 +9,7 @@ module OrderCycles def create oc = @original_order_cycle.dup oc.name = I18n.t("models.order_cycle.cloned_order_cycle_name", order_cycle: oc.name) - oc.orders_open_at = oc.orders_close_at = oc.mails_sent = oc.processed_at = nil + oc.orders_open_at = oc.orders_close_at = oc.mails_sent = oc.processed_at = oc.opened_at = nil oc.coordinator_fee_ids = @original_order_cycle.coordinator_fee_ids oc.preferred_product_selection_from_coordinator_inventory_only = @original_order_cycle.preferred_product_selection_from_coordinator_inventory_only diff --git a/spec/jobs/open_order_cycle_job_spec.rb b/spec/jobs/open_order_cycle_job_spec.rb index 254887bd55..143f91dc4c 100644 --- a/spec/jobs/open_order_cycle_job_spec.rb +++ b/spec/jobs/open_order_cycle_job_spec.rb @@ -75,6 +75,30 @@ RSpec.describe OpenOrderCycleJob do end end + context "with cloned order cycle" do + subject { OpenOrderCycleJob.perform_now(cloned_order_cycle.id) } + + let!(:cloned_order_cycle) do + order_cycle.update!(opened_at: now - 5.minutes) + + coc = OrderCycles::CloneService.new(order_cycle.reload).create + coc.update!(orders_open_at: now + 5.minutes) + coc.reload + + coc + end + + it "marks as open" do + expect { + subject + cloned_order_cycle.reload + } + .to change { cloned_order_cycle.opened_at } + + expect(cloned_order_cycle.opened_at).to be_within(1).of(now) + end + end + describe "concurrency", concurrency: true do let(:breakpoint) { Mutex.new } From 7a5b273e71830983bef43d2e711db316b515a02f Mon Sep 17 00:00:00 2001 From: rahsheen Date: Sat, 22 Nov 2025 10:50:04 -0500 Subject: [PATCH 2/2] update specs --- spec/jobs/open_order_cycle_job_spec.rb | 7 +++++++ spec/services/order_cycles/clone_service_spec.rb | 1 + 2 files changed, 8 insertions(+) diff --git a/spec/jobs/open_order_cycle_job_spec.rb b/spec/jobs/open_order_cycle_job_spec.rb index 143f91dc4c..965e8e5068 100644 --- a/spec/jobs/open_order_cycle_job_spec.rb +++ b/spec/jobs/open_order_cycle_job_spec.rb @@ -97,6 +97,13 @@ RSpec.describe OpenOrderCycleJob do expect(cloned_order_cycle.opened_at).to be_within(1).of(now) end + + it "enqueues webhook job" do + expect(OrderCycles::WebhookService) + .to receive(:create_webhook_job).with(cloned_order_cycle, 'order_cycle.opened', now).once + + subject + end end describe "concurrency", concurrency: true do diff --git a/spec/services/order_cycles/clone_service_spec.rb b/spec/services/order_cycles/clone_service_spec.rb index a3b8b4d16f..ae9808eb08 100644 --- a/spec/services/order_cycles/clone_service_spec.rb +++ b/spec/services/order_cycles/clone_service_spec.rb @@ -17,6 +17,7 @@ RSpec.describe OrderCycles::CloneService do occ = OrderCycles::CloneService.new(oc).create expect(occ.name).to eq("COPY OF #{oc.name}") expect(occ.orders_open_at).to be_nil + expect(occ.opened_at).to be_nil expect(occ.orders_close_at).to be_nil expect(occ.coordinator).not_to be_nil expect(occ.preferred_product_selection_from_coordinator_inventory_only).to be true