76 lines
2.4 KiB
Ruby
76 lines
2.4 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require 'spec_helper'
|
|
require 'rake_helper'
|
|
require_migration!
|
|
|
|
RSpec.describe AddProjectsEmailsEnabledColumnData, :migration, feature_category: :database do
|
|
before :all do
|
|
Rake.application.rake_require 'active_record/railties/databases'
|
|
Rake.application.rake_require 'tasks/gitlab/db'
|
|
|
|
# empty task as env is already loaded
|
|
Rake::Task.define_task :environment
|
|
end
|
|
|
|
let(:migration) { described_class::MIGRATION }
|
|
let(:project_settings) { table(:project_settings) }
|
|
let(:projects) { table(:projects) }
|
|
let(:namespaces) { table(:namespaces) }
|
|
|
|
before do
|
|
stub_const("#{described_class.name}::SUB_BATCH_SIZE", 2)
|
|
end
|
|
|
|
it 'schedules background migrations', :aggregate_failures do
|
|
migrate!
|
|
|
|
expect(migration).to have_scheduled_batched_migration(
|
|
table_name: :projects,
|
|
column_name: :id,
|
|
interval: described_class::DELAY_INTERVAL
|
|
)
|
|
end
|
|
|
|
describe '#down' do
|
|
it 'deletes all batched migration records' do
|
|
migrate!
|
|
schema_migrate_down!
|
|
|
|
expect(migration).not_to have_scheduled_batched_migration
|
|
end
|
|
end
|
|
|
|
it 'sets emails_enabled to be the opposite of emails_disabled' do
|
|
disabled_records_to_migrate = 4
|
|
enabled_records_to_migrate = 2
|
|
|
|
disabled_records_to_migrate.times do |i|
|
|
namespace = namespaces.create!(name: 'namespace', path: "namespace#{i}")
|
|
project = projects.create!(name: "Project Disabled #{i}",
|
|
path: "projectDisabled#{i}",
|
|
namespace_id: namespace.id,
|
|
project_namespace_id: namespace.id,
|
|
emails_disabled: true)
|
|
project_settings.create!(project_id: project.id)
|
|
end
|
|
|
|
enabled_records_to_migrate.times do |i|
|
|
namespace = namespaces.create!(name: 'namespace', path: "namespace#{i}")
|
|
project = projects.create!(name: "Project Enabled #{i}",
|
|
path: "projectEnabled#{i}",
|
|
namespace_id: namespace.id,
|
|
project_namespace_id: namespace.id,
|
|
emails_disabled: false)
|
|
project_settings.create!(project_id: project.id)
|
|
end
|
|
|
|
migrate!
|
|
run_rake_task('gitlab:db:execute_batched_migrations')
|
|
# rubocop: disable CodeReuse/ActiveRecord
|
|
expect(project_settings.where(emails_enabled: true).count).to eq(enabled_records_to_migrate)
|
|
expect(project_settings.where(emails_enabled: false).count).to eq(disabled_records_to_migrate)
|
|
# rubocop: enable CodeReuse/ActiveRecord
|
|
end
|
|
end
|