summaryrefslogtreecommitdiff
path: root/spec/models/concerns/id_in_ordered_spec.rb
blob: a3b434caac618397df0bcd50a1c53fa778a93835 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# 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