Welcome to mirror list, hosted at ThFree Co, Russian Federation.

array_scope_columns_spec.rb « in_operator_optimization « keyset « pagination « gitlab « lib « spec - gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 087bfb197ec92400ddbb4f10c477c6141b295629 (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
# frozen_string_literal: true

require 'spec_helper'

RSpec.describe Gitlab::Pagination::Keyset::InOperatorOptimization::ArrayScopeColumns do
  let(:columns) { [:relative_position, :id] }

  subject(:array_scope_columns) { described_class.new(columns) }

  it 'builds array column names' do
    expect(array_scope_columns.array_aggregated_column_names).to eq(%w[array_cte_relative_position_array array_cte_id_array])
  end

  context 'when no columns are given' do
    let(:columns) { [] }

    it { expect { array_scope_columns }.to raise_error /No array columns were given/ }
  end

  context 'when Arel AS node is given as input' do
    let(:scope) { Issue.select(Issue.arel_table[:id].as('id'), :title) }
    let(:columns) { scope.select_values }

    it 'works with Arel AS nodes' do
      expect(array_scope_columns.array_aggregated_column_names).to eq(%w[array_cte_id_array array_cte_title_array])
    end
  end
end