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..965e8e5068 100644 --- a/spec/jobs/open_order_cycle_job_spec.rb +++ b/spec/jobs/open_order_cycle_job_spec.rb @@ -75,6 +75,37 @@ 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 + + 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 let(:breakpoint) { Mutex.new } 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