# frozen_string_literal: true

RSpec.describe 'truncate_data.rake' do
  describe ':truncate' do
    context 'when months_to_keep is specified' do
      it 'truncates order cycles closed earlier than months_to_keep months ago' do
        highline = instance_double(HighLine, agree: true)
        allow(HighLine).to receive(:new).and_return(highline)

        old_order_cycle = create(
          :order_cycle,
          orders_open_at: 7.months.ago,
          orders_close_at: 7.months.ago + 1.day,
        )
        create(:order, order_cycle: old_order_cycle)
        recent_order_cycle = create(
          :order_cycle,
          orders_open_at: 1.month.ago,
          orders_close_at: 1.month.ago + 1.day,
        )
        create(:order, order_cycle: recent_order_cycle)

        months_to_keep = 6
        invoke_task "ofn:data:truncate[#{months_to_keep}]"

        expect(OrderCycle.all).to contain_exactly(recent_order_cycle)
      end
    end
  end
end
