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 }