summaryrefslogtreecommitdiff
path: root/spec/lib/gitlab/background_migration/cleanup_concurrent_schema_change_spec.rb
blob: 2931b5e6dd324f0bc8d71aba5c872532ed71017c (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::BackgroundMigration::CleanupConcurrentSchemaChange do
  describe '#perform' do
    it 'new column does not exist' do
      expect(subject).to receive(:column_exists?).with(:issues, :closed_at_timestamp).and_return(false)
      expect(subject).not_to receive(:column_exists?).with(:issues, :closed_at)
      expect(subject).not_to receive(:define_model_for)

      expect(subject.perform(:issues, :closed_at, :closed_at_timestamp)).to be_nil
    end

    it 'old column does not exist' do
      expect(subject).to receive(:column_exists?).with(:issues, :closed_at_timestamp).and_return(true)
      expect(subject).to receive(:column_exists?).with(:issues, :closed_at).and_return(false)
      expect(subject).not_to receive(:define_model_for)

      expect(subject.perform(:issues, :closed_at, :closed_at_timestamp)).to be_nil
    end

    it 'has both old and new columns' do
      expect(subject).to receive(:column_exists?).twice.and_return(true)

      expect { subject.perform('issues', :closed_at, :created_at) }.to raise_error(NotImplementedError)
    end
  end
end