Files
gitlabhq/spec/migrations/lock_duo_features_enabled_update_spec.rb
2024-10-02 12:14:53 +00:00

108 lines
3.5 KiB
Ruby

# frozen_string_literal: true
require 'spec_helper'
require_migration!
RSpec.describe LockDuoFeaturesEnabledUpdate, feature_category: :ai_abstraction_layer do
let(:namespaces) { table(:namespaces) }
let(:namespace_settings) { table(:namespace_settings) }
before do
namespaces.create!(name: 'test', path: 'test')
allow_next_instance_of(described_class) do |instance|
allow(instance).to receive(:add_concurrent_index).and_return(true)
end
allow_next_instance_of(described_class) do |instance|
allow(instance).to receive(:remove_concurrent_index).and_return(true)
end
allow_next_instance_of(described_class) do |instance|
allow(instance).to receive(:update_column_in_batches).and_yield(namespace_settings)
end
end
it 'correctly updates lock_duo_features_enabled' do
namespace = namespaces.first
namespace_settings.create!(
namespace_id: namespace.id,
duo_features_enabled: true,
lock_duo_features_enabled: true
)
expect(namespace_settings.where(duo_features_enabled: true, lock_duo_features_enabled: true).count).to eq(1)
migrate!
expect(namespace_settings.where(duo_features_enabled: true, lock_duo_features_enabled: false).count).to eq(1)
expect(namespace_settings.where(duo_features_enabled: true, lock_duo_features_enabled: true).count).to eq(0)
end
it 'does not update records where duo_features_enabled is false' do
namespace = namespaces.first
namespace_settings.create!(
namespace_id: namespace.id,
duo_features_enabled: false,
lock_duo_features_enabled: true
)
expect(namespace_settings.where(duo_features_enabled: false, lock_duo_features_enabled: true).count).to eq(1)
migrate!
expect(namespace_settings.where(duo_features_enabled: false, lock_duo_features_enabled: true).count).to eq(1)
end
it 'does not update records where lock_duo_features_enabled is already false' do
namespace = namespaces.first
namespace_settings.create!(
namespace_id: namespace.id,
duo_features_enabled: true,
lock_duo_features_enabled: false
)
expect(namespace_settings.where(duo_features_enabled: true, lock_duo_features_enabled: false).count).to eq(1)
migrate!
expect(namespace_settings.where(duo_features_enabled: true, lock_duo_features_enabled: false).count).to eq(1)
end
it 'handles multiple records correctly' do
namespace1 = namespaces.create!(name: 'test1', path: 'test1')
namespace2 = namespaces.create!(name: 'test2', path: 'test2')
namespace_settings.create!(
namespace_id: namespace1.id,
duo_features_enabled: true,
lock_duo_features_enabled: true
)
namespace_settings.create!(
namespace_id: namespace2.id,
duo_features_enabled: true,
lock_duo_features_enabled: true
)
expect(namespace_settings.where(duo_features_enabled: true, lock_duo_features_enabled: true).count).to eq(2)
migrate!
expect(namespace_settings.where(duo_features_enabled: true, lock_duo_features_enabled: false).count).to eq(2)
expect(namespace_settings.where(duo_features_enabled: true, lock_duo_features_enabled: true).count).to eq(0)
end
describe '#down' do
it 'does not modify any records' do
namespace = namespaces.first
namespace_settings.create!(
namespace_id: namespace.id,
duo_features_enabled: true,
lock_duo_features_enabled: false
)
expect do
described_class.new.down
end.not_to change { namespace_settings.first }
end
end
end