require 'rails_helper'

describe Jobs::AutoQueueHandler do

  subject { Jobs::AutoQueueHandler.new.execute({}) }

  context "old flag" do
    let!(:old) { Fabricate(:flag, created_at: 61.days.ago) }
    let!(:not_old) { Fabricate(:flag, created_at: 59.days.ago) }

    it "defers the old flag if auto_handle_queued_age is 60" do
      SiteSetting.auto_handle_queued_age = 60
      subject
      expect(not_old.reload.deferred_at).to be_nil
      expect(old.reload.deferred_at).to_not be_nil
    end

    it "doesn't defer the old flag if auto_handle_queued_age is 0" do
      SiteSetting.auto_handle_queued_age = 0
      subject
      expect(not_old.reload.deferred_at).to be_nil
      expect(old.reload.deferred_at).to be_nil
    end
  end

  context "old queued post" do
    let!(:old) { Fabricate(:queued_post, created_at: 61.days.ago, queue: 'default') }
    let!(:not_old) { Fabricate(:queued_post, created_at: 59.days.ago, queue: 'default') }

    it "rejects the post when auto_handle_queued_age is 60" do
      SiteSetting.auto_handle_queued_age = 60
      subject
      expect(not_old.reload.state).to eq(QueuedPost.states[:new])
      expect(old.reload.state).to eq(QueuedPost.states[:rejected])
    end

    it "doesn't reject the post when auto_handle_queued_age is 0" do
      SiteSetting.auto_handle_queued_age = 0
      subject
      expect(not_old.reload.state).to eq(QueuedPost.states[:new])
      expect(old.reload.state).to eq(QueuedPost.states[:new])
    end
  end

end