diff options
author | Francisco Javier López <fjlopez@gitlab.com> | 2018-01-17 17:26:35 +0100 |
---|---|---|
committer | Francisco Javier López <fjlopez@gitlab.com> | 2018-01-17 17:26:35 +0100 |
commit | 61059ad667c6fa81f7a583aed7d7bcf2cccc15ac (patch) | |
tree | 38ab24bd01b6e56179fb504f2f361d9e0c4befe1 | |
parent | c828d253e8559309fdf9cdcbc50891ba92fcb9c4 (diff) | |
download | gitlab-ce-61059ad667c6fa81f7a583aed7d7bcf2cccc15ac.tar.gz |
Added migration spec
3 files changed, 45 insertions, 14 deletions
diff --git a/db/migrate/20171215113714_populate_can_push_from_deploy_keys_projects.rb b/db/migrate/20171215113714_populate_can_push_from_deploy_keys_projects.rb index d06454fd09c..680855af945 100644 --- a/db/migrate/20171215113714_populate_can_push_from_deploy_keys_projects.rb +++ b/db/migrate/20171215113714_populate_can_push_from_deploy_keys_projects.rb @@ -17,48 +17,48 @@ class PopulateCanPushFromDeployKeysProjects < ActiveRecord::Migration end def up - # DeploysKeyProject.each_batch(of: 10_000) do |batch| - # start_id, end_id = batch.pluck('MIN(id), MAX(id)').first + DeploysKeyProject.each_batch(of: 10_000) do |batch| + start_id, end_id = batch.pluck('MIN(id), MAX(id)').first if Gitlab::Database.mysql? execute <<-EOF.strip_heredoc UPDATE deploy_keys_projects, #{DATABASE_NAME}.keys SET deploy_keys_projects.can_push = #{DATABASE_NAME}.keys.can_push WHERE deploy_keys_projects.deploy_key_id = #{DATABASE_NAME}.keys.id + AND deploy_keys_projects.id BETWEEN #{start_id} AND #{end_id} EOF - # AND deploy_keys_projects.id BETWEEN #{start_id} AND #{end_id} else execute <<-EOF.strip_heredoc UPDATE deploy_keys_projects SET can_push = keys.can_push FROM keys WHERE deploy_key_id = keys.id + AND deploy_keys_projects.id BETWEEN #{start_id} AND #{end_id} EOF - # AND deploy_keys_projects.id BETWEEN #{start_id} AND #{end_id} end - # end + end end def down - # DeploysKeyProject.each_batch(of: 10_000) do |batch| - # start_id, end_id = batch.pluck('MIN(id), MAX(id)').first + DeploysKeyProject.each_batch(of: 10_000) do |batch| + start_id, end_id = batch.pluck('MIN(id), MAX(id)').first if Gitlab::Database.mysql? - execute <<-EOF + execute <<-EOF.strip_heredoc UPDATE deploy_keys_projects, #{DATABASE_NAME}.keys SET #{DATABASE_NAME}.keys.can_push = deploy_keys_projects.can_push WHERE deploy_keys_projects.deploy_key_id = #{DATABASE_NAME}.keys.id + AND deploy_keys_projects.id BETWEEN #{start_id} AND #{end_id} EOF - # AND deploy_keys_projects.id BETWEEN #{start_id} AND #{end_id} else - execute <<-EOF + execute <<-EOF.strip_heredoc UPDATE keys SET can_push = deploy_keys_projects.can_push FROM deploy_keys_projects WHERE deploy_keys_projects.deploy_key_id = keys.id + AND deploy_keys_projects.id BETWEEN #{start_id} AND #{end_id} EOF - # AND deploy_keys_projects.id BETWEEN #{start_id} AND #{end_id} end - # end + end end end diff --git a/db/post_migrate/20171215121205_post_populate_can_push_from_deploy_keys_projects.rb b/db/post_migrate/20171215121205_post_populate_can_push_from_deploy_keys_projects.rb index adc0d8fdbff..3a5850df3db 100644 --- a/db/post_migrate/20171215121205_post_populate_can_push_from_deploy_keys_projects.rb +++ b/db/post_migrate/20171215121205_post_populate_can_push_from_deploy_keys_projects.rb @@ -43,14 +43,14 @@ class PostPopulateCanPushFromDeployKeysProjects < ActiveRecord::Migration start_id, end_id = batch.pluck('MIN(id), MAX(id)').first if Gitlab::Database.mysql? - execute <<-EOF + execute <<-EOF.strip_heredoc UPDATE deploy_keys_projects, #{DATABASE_NAME}.keys SET #{DATABASE_NAME}.keys.can_push = deploy_keys_projects.can_push WHERE deploy_keys_projects.deploy_key_id = #{DATABASE_NAME}.keys.id AND deploy_keys_projects.id BETWEEN #{start_id} AND #{end_id} EOF else - execute <<-EOF + execute <<-EOF.strip_heredoc UPDATE keys SET can_push = deploy_keys_projects.can_push FROM deploy_keys_projects diff --git a/spec/migrations/populate_can_push_from_deploy_keys_projects_spec.rb b/spec/migrations/populate_can_push_from_deploy_keys_projects_spec.rb new file mode 100644 index 00000000000..9b311974c50 --- /dev/null +++ b/spec/migrations/populate_can_push_from_deploy_keys_projects_spec.rb @@ -0,0 +1,31 @@ +require 'spec_helper' +require Rails.root.join('db', 'migrate', '20171215113714_populate_can_push_from_deploy_keys_projects.rb') + +describe PopulateCanPushFromDeployKeysProjects, :migration do + let(:migration) { described_class.new } + + describe '#up' do + it 'migrates can_push from deploy_keys to deploy_keys_projects' do + create_list(:deploy_keys_project, 10) + DeployKey.limit(5).update_all(can_push: true) + + deploy_keys = DeployKey.order(:id).pluck(:id, :can_push) + + migration.up + + expect(DeployKeysProject.order(:id).pluck(:deploy_key_id, :can_push)).to eq deploy_keys + end + end + + describe '#down' do + it 'migrates can_push from deploy_keys_projects to deploy_keys' do + create_list(:deploy_keys_project, 5, :write_access) + create_list(:deploy_keys_project, 5) + deploy_keys_projects = DeployKeysProject.order(:id).pluck(:deploy_key_id, :can_push) + + migration.down + + expect(DeployKey.order(:id).pluck(:id, :can_push)).to eq deploy_keys_projects + end + end +end |