diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-02-14 03:09:07 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-02-14 03:09:07 +0300 |
commit | e144369009f3404072f7e0f969f7cded93195a01 (patch) | |
tree | d7a354e2c3c69a7ad65dc81aba8fe2ba59b0a26f /spec/migrations | |
parent | d466ee5042520ad078fe050cb078d81dc2ebe196 (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/migrations')
-rw-r--r-- | spec/migrations/save_instance_administrators_group_id_spec.rb | 99 |
1 files changed, 99 insertions, 0 deletions
diff --git a/spec/migrations/save_instance_administrators_group_id_spec.rb b/spec/migrations/save_instance_administrators_group_id_spec.rb new file mode 100644 index 00000000000..eab41017480 --- /dev/null +++ b/spec/migrations/save_instance_administrators_group_id_spec.rb @@ -0,0 +1,99 @@ +# frozen_string_literal: true + +require 'spec_helper' +require Rails.root.join('db', 'post_migrate', '20200210092405_save_instance_administrators_group_id') + +describe SaveInstanceAdministratorsGroupId, :migration do + let(:application_settings_table) { table(:application_settings) } + + let(:instance_administrators_group) do + table(:namespaces).create!( + id: 1, + name: 'GitLab Instance Administrators', + path: 'gitlab-instance-administrators-random', + type: 'Group' + ) + end + + let(:self_monitoring_project) do + table(:projects).create!( + id: 2, + name: 'Self Monitoring', + path: 'self_monitoring', + namespace_id: instance_administrators_group.id + ) + end + + context 'when project ID is saved but group ID is not' do + let(:application_settings) do + application_settings_table.create!(instance_administration_project_id: self_monitoring_project.id) + end + + it 'saves instance administrators group ID' do + expect(application_settings.instance_administration_project_id).to eq(self_monitoring_project.id) + expect(application_settings.instance_administrators_group_id).to be_nil + + migrate! + + expect(application_settings.reload.instance_administrators_group_id).to eq(instance_administrators_group.id) + expect(application_settings.instance_administration_project_id).to eq(self_monitoring_project.id) + end + end + + context 'when group ID is saved but project ID is not' do + let(:application_settings) do + application_settings_table.create!(instance_administrators_group_id: instance_administrators_group.id) + end + + it 'does not make changes' do + expect(application_settings.instance_administrators_group_id).to eq(instance_administrators_group.id) + expect(application_settings.instance_administration_project_id).to be_nil + + migrate! + + expect(application_settings.reload.instance_administrators_group_id).to eq(instance_administrators_group.id) + expect(application_settings.instance_administration_project_id).to be_nil + end + end + + context 'when group ID and project ID are both saved' do + let(:application_settings) do + application_settings_table.create!( + instance_administrators_group_id: instance_administrators_group.id, + instance_administration_project_id: self_monitoring_project.id + ) + end + + it 'does not make changes' do + expect(application_settings.instance_administrators_group_id).to eq(instance_administrators_group.id) + expect(application_settings.instance_administration_project_id).to eq(self_monitoring_project.id) + + migrate! + + expect(application_settings.reload.instance_administrators_group_id).to eq(instance_administrators_group.id) + expect(application_settings.instance_administration_project_id).to eq(self_monitoring_project.id) + end + end + + context 'when neither group ID nor project ID is saved' do + let(:application_settings) do + application_settings_table.create! + end + + it 'does not make changes' do + expect(application_settings.instance_administrators_group_id).to be_nil + expect(application_settings.instance_administration_project_id).to be_nil + + migrate! + + expect(application_settings.reload.instance_administrators_group_id).to be_nil + expect(application_settings.instance_administration_project_id).to be_nil + end + end + + context 'when application_settings table has no rows' do + it 'does not fail' do + migrate! + end + end +end |