# frozen_string_literal: true

require 'spec_helper'

RSpec.describe IdInOrdered do
  describe 'Issue' do
    describe '.id_in_ordered' do
      it 'returns issues matching the ids in the same order as the ids' do
        issue1 = create(:issue)
        issue2 = create(:issue)
        issue3 = create(:issue)
        issue4 = create(:issue)
        issue5 = create(:issue)

        expect(Issue.id_in_ordered([issue3.id, issue1.id, issue4.id, issue5.id, issue2.id])).to eq([
          issue3, issue1, issue4, issue5, issue2
        ])
      end

      context 'when the ids are not an array of integers' do
        it 'raises ArgumentError' do
          expect { Issue.id_in_ordered([1, 'no SQL injection']) }.to raise_error(ArgumentError, "ids must be an array of integers")
        end
      end

      context 'when an empty array is given' do
        it 'does not raise error' do
          expect(Issue.id_in_ordered([]).to_a).to be_empty
        end
      end
    end
  end
end
