diff options
Diffstat (limited to 'spec/migrations/cleanup_projects_with_bad_has_external_issue_tracker_data_spec.rb')
-rw-r--r-- | spec/migrations/cleanup_projects_with_bad_has_external_issue_tracker_data_spec.rb | 94 |
1 files changed, 0 insertions, 94 deletions
diff --git a/spec/migrations/cleanup_projects_with_bad_has_external_issue_tracker_data_spec.rb b/spec/migrations/cleanup_projects_with_bad_has_external_issue_tracker_data_spec.rb deleted file mode 100644 index 8aedd1f9607..00000000000 --- a/spec/migrations/cleanup_projects_with_bad_has_external_issue_tracker_data_spec.rb +++ /dev/null @@ -1,94 +0,0 @@ -# frozen_string_literal: true - -require 'spec_helper' - -require_migration! - -RSpec.describe CleanupProjectsWithBadHasExternalIssueTrackerData, :migration do - let(:namespace) { table(:namespaces).create!(name: 'foo', path: 'bar') } - let(:projects) { table(:projects) } - let(:services) { table(:services) } - - def create_projects!(num) - Array.new(num) do - projects.create!(namespace_id: namespace.id) - end - end - - def create_active_external_issue_tracker_integrations!(*projects) - projects.each do |project| - services.create!(category: 'issue_tracker', project_id: project.id, active: true) - end - end - - def create_disabled_external_issue_tracker_integrations!(*projects) - projects.each do |project| - services.create!(category: 'issue_tracker', project_id: project.id, active: false) - end - end - - def create_active_other_integrations!(*projects) - projects.each do |project| - services.create!(category: 'not_an_issue_tracker', project_id: project.id, active: true) - end - end - - it 'sets `projects.has_external_issue_tracker` correctly' do - allow(ActiveRecord::Base.connection).to receive(:transaction_open?).and_return(false) - - project_with_an_external_issue_tracker_1, - project_with_an_external_issue_tracker_2, - project_with_only_a_disabled_external_issue_tracker_1, - project_with_only_a_disabled_external_issue_tracker_2, - project_without_any_external_issue_trackers_1, - project_without_any_external_issue_trackers_2 = create_projects!(6) - - create_active_external_issue_tracker_integrations!( - project_with_an_external_issue_tracker_1, - project_with_an_external_issue_tracker_2 - ) - - create_disabled_external_issue_tracker_integrations!( - project_with_an_external_issue_tracker_1, - project_with_an_external_issue_tracker_2, - project_with_only_a_disabled_external_issue_tracker_1, - project_with_only_a_disabled_external_issue_tracker_2 - ) - - create_active_other_integrations!( - project_with_an_external_issue_tracker_1, - project_with_an_external_issue_tracker_2, - project_without_any_external_issue_trackers_1, - project_without_any_external_issue_trackers_2 - ) - - # PG triggers on the services table added in - # https://gitlab.com/gitlab-org/gitlab/-/merge_requests/51852 will have set - # the `has_external_issue_tracker` columns to correct data when the services - # records were created above. - # - # We set the `has_external_issue_tracker` columns for projects to incorrect - # data manually below to emulate projects in a state before the PG - # triggers were added. - project_with_an_external_issue_tracker_2.update!(has_external_issue_tracker: false) - project_with_only_a_disabled_external_issue_tracker_2.update!(has_external_issue_tracker: true) - project_without_any_external_issue_trackers_2.update!(has_external_issue_tracker: true) - - migrate! - - expected_true = [ - project_with_an_external_issue_tracker_1, - project_with_an_external_issue_tracker_2 - ].each(&:reload).map(&:has_external_issue_tracker) - - expected_not_true = [ - project_without_any_external_issue_trackers_1, - project_without_any_external_issue_trackers_2, - project_with_only_a_disabled_external_issue_tracker_1, - project_with_only_a_disabled_external_issue_tracker_2 - ].each(&:reload).map(&:has_external_issue_tracker) - - expect(expected_true).to all(eq(true)) - expect(expected_not_true).to all(be_falsey) - end -end |