34 lines
984 B
Ruby
34 lines
984 B
Ruby
|
# 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
|