diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2023-08-02 15:10:59 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2023-08-02 15:10:59 +0300 |
commit | 7069eb1ee6cd6af1fa769df5a1175dffc4e3ddb1 (patch) | |
tree | 9656bb7b020ab8b8dc60cdcc7975b0ecfb20a0eb /spec | |
parent | a1131ca818b35bf982bb157d767c87ef3fc3819b (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec')
13 files changed, 179 insertions, 188 deletions
diff --git a/spec/factories/namespace_package_settings.rb b/spec/factories/namespace_package_settings.rb index 042808f042f..9d794e794a4 100644 --- a/spec/factories/namespace_package_settings.rb +++ b/spec/factories/namespace_package_settings.rb @@ -10,6 +10,9 @@ FactoryBot.define do generic_duplicates_allowed { true } generic_duplicate_exception_regex { 'foo' } + nuget_duplicates_allowed { true } + nuget_duplicate_exception_regex { 'foo' } + trait :group do namespace { association(:group) } end diff --git a/spec/features/issues/user_edits_issue_spec.rb b/spec/features/issues/user_edits_issue_spec.rb index 01781ceedc0..45d95db8ff1 100644 --- a/spec/features/issues/user_edits_issue_spec.rb +++ b/spec/features/issues/user_edits_issue_spec.rb @@ -146,7 +146,7 @@ RSpec.describe "Issues > User edits issue", :js, feature_category: :team_plannin end end - describe 'update labels' do + describe 'update labels', quarantine: 'https://gitlab.com/gitlab-org/gitlab/-/issues/345229' do it 'will not send ajax request when no data is changed' do page.within '.labels' do click_on 'Edit' diff --git a/spec/graphql/mutations/namespace/package_settings/update_spec.rb b/spec/graphql/mutations/namespace/package_settings/update_spec.rb index 576f514183f..b7f9eac3755 100644 --- a/spec/graphql/mutations/namespace/package_settings/update_spec.rb +++ b/spec/graphql/mutations/namespace/package_settings/update_spec.rb @@ -31,6 +31,8 @@ RSpec.describe Mutations::Namespace::PackageSettings::Update, feature_category: maven_duplicate_exception_regex: 'SNAPSHOT', generic_duplicates_allowed: true, generic_duplicate_exception_regex: 'foo', + nuget_duplicates_allowed: true, + nuget_duplicate_exception_regex: 'foo', maven_package_requests_forwarding: nil, lock_maven_package_requests_forwarding: false, npm_package_requests_forwarding: nil, @@ -42,6 +44,8 @@ RSpec.describe Mutations::Namespace::PackageSettings::Update, feature_category: maven_duplicate_exception_regex: 'RELEASE', generic_duplicates_allowed: false, generic_duplicate_exception_regex: 'bar', + nuget_duplicates_allowed: false, + nuget_duplicate_exception_regex: 'bar', maven_package_requests_forwarding: true, lock_maven_package_requests_forwarding: true, npm_package_requests_forwarding: true, @@ -69,6 +73,18 @@ RSpec.describe Mutations::Namespace::PackageSettings::Update, feature_category: ) end end + + context 'when nuget_duplicates_option FF is disabled' do + let_it_be(:params) { { namespace_path: namespace.full_path, nuget_duplicates_allowed: false } } + + before do + stub_feature_flags(nuget_duplicates_option: false) + end + + it 'raises an error' do + expect { subject }.to raise_error(Gitlab::Graphql::Errors::ResourceNotAvailable, /feature flag is disabled/) + end + end end RSpec.shared_examples 'denying access to namespace package setting' do @@ -95,6 +111,8 @@ RSpec.describe Mutations::Namespace::PackageSettings::Update, feature_category: maven_duplicate_exception_regex: 'RELEASE', generic_duplicates_allowed: false, generic_duplicate_exception_regex: 'bar', + nuget_duplicates_allowed: false, + nuget_duplicate_exception_regex: 'bar', maven_package_requests_forwarding: true, lock_maven_package_requests_forwarding: true, npm_package_requests_forwarding: true, diff --git a/spec/graphql/types/namespace/package_settings_type_spec.rb b/spec/graphql/types/namespace/package_settings_type_spec.rb index 40048b7dfa6..d823f2017b6 100644 --- a/spec/graphql/types/namespace/package_settings_type_spec.rb +++ b/spec/graphql/types/namespace/package_settings_type_spec.rb @@ -21,6 +21,8 @@ RSpec.describe GitlabSchema.types['PackageSettings'], feature_category: :package maven_duplicate_exception_regex generic_duplicates_allowed generic_duplicate_exception_regex + nuget_duplicates_allowed + nuget_duplicate_exception_regex maven_package_requests_forwarding lock_maven_package_requests_forwarding npm_package_requests_forwarding diff --git a/spec/lib/gitlab/metrics/dashboard/finder_spec.rb b/spec/lib/gitlab/metrics/dashboard/finder_spec.rb index 55eb60146dd..6fc9e05037c 100644 --- a/spec/lib/gitlab/metrics/dashboard/finder_spec.rb +++ b/spec/lib/gitlab/metrics/dashboard/finder_spec.rb @@ -60,8 +60,6 @@ RSpec.describe Gitlab::Metrics::Dashboard::Finder, :use_clean_rails_memory_store } end - it_behaves_like 'misconfigured dashboard service response', :not_found - context 'when the metric exists' do before do create(:prometheus_metric, project: project) diff --git a/spec/lib/gitlab/metrics/dashboard/service_selector_spec.rb b/spec/lib/gitlab/metrics/dashboard/service_selector_spec.rb index dcaaa5873c8..b9ed89d9ee7 100644 --- a/spec/lib/gitlab/metrics/dashboard/service_selector_spec.rb +++ b/spec/lib/gitlab/metrics/dashboard/service_selector_spec.rb @@ -30,20 +30,6 @@ RSpec.describe Gitlab::Metrics::Dashboard::ServiceSelector do it { is_expected.to be Metrics::Dashboard::DefaultEmbedService } end - - context 'with a system dashboard and "custom" group' do - let(:arguments) do - { - embedded: true, - dashboard_path: system_dashboard_path, - group: business_metric_title, - title: 'Total Requests', - y_label: 'req/sec' - } - end - - it { is_expected.to be Metrics::Dashboard::CustomMetricEmbedService } - end end end end diff --git a/spec/models/namespace/aggregation_schedule_spec.rb b/spec/models/namespace/aggregation_schedule_spec.rb index ea9dddf2513..c05344ff729 100644 --- a/spec/models/namespace/aggregation_schedule_spec.rb +++ b/spec/models/namespace/aggregation_schedule_spec.rb @@ -16,21 +16,11 @@ RSpec.describe Namespace::AggregationSchedule, :clean_gitlab_redis_shared_state, aggregation_schedule.save! end - context 'when reduce_aggregation_schedule_lease FF is enabled' do - it 'returns namespace_aggregation_schedule_lease_duration value from Gitlabsettings' do - allow(::Gitlab::CurrentSettings).to receive(:namespace_aggregation_schedule_lease_duration_in_seconds) - .and_return(240) - stub_feature_flags(reduce_aggregation_schedule_lease: true) + it 'returns namespace_aggregation_schedule_lease_duration value from Gitlab CurrentSettings' do + allow(::Gitlab::CurrentSettings).to receive(:namespace_aggregation_schedule_lease_duration_in_seconds) + .and_return(240) - expect(aggregation_schedule.default_lease_timeout).to eq 4.minutes.to_i - end - end - - context 'when reduce_aggregation_schedule_lease FF is disabled' do - it 'is 30 minutes' do - stub_feature_flags(reduce_aggregation_schedule_lease: false) - expect(aggregation_schedule.default_lease_timeout).to eq 30.minutes.to_i - end + expect(aggregation_schedule.default_lease_timeout).to eq 4.minutes.to_i end end diff --git a/spec/models/namespace/package_setting_spec.rb b/spec/models/namespace/package_setting_spec.rb index 9dfb58301b1..f3fda200fda 100644 --- a/spec/models/namespace/package_setting_spec.rb +++ b/spec/models/namespace/package_setting_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe Namespace::PackageSetting do +RSpec.describe Namespace::PackageSetting, feature_category: :package_registry do describe 'relationships' do it { is_expected.to belong_to(:namespace) } end @@ -15,6 +15,9 @@ RSpec.describe Namespace::PackageSetting do it { is_expected.not_to allow_value(nil).for(:maven_duplicates_allowed) } it { is_expected.to allow_value(true, false).for(:generic_duplicates_allowed) } it { is_expected.not_to allow_value(nil).for(:generic_duplicates_allowed) } + it { is_expected.to allow_value(true).for(:nuget_duplicates_allowed) } + it { is_expected.to allow_value(false).for(:nuget_duplicates_allowed) } + it { is_expected.not_to allow_value(nil).for(:nuget_duplicates_allowed) } end describe 'regex values' do @@ -25,7 +28,7 @@ RSpec.describe Namespace::PackageSetting do valid_regexps = %w[SNAPSHOT .* v.+ v10.1.* (?:v.+|SNAPSHOT|TEMP)] invalid_regexps = ['[', '(?:v.+|SNAPSHOT|TEMP'] - [:maven_duplicate_exception_regex, :generic_duplicate_exception_regex].each do |attribute| + %i[maven_duplicate_exception_regex generic_duplicate_exception_regex nuget_duplicate_exception_regex].each do |attribute| valid_regexps.each do |valid_regexp| it { is_expected.to allow_value(valid_regexp).for(attribute) } end @@ -44,18 +47,18 @@ RSpec.describe Namespace::PackageSetting do context 'package types with package_settings' do # As more package types gain settings they will be added to this list - [:maven_package, :generic_package].each do |format| + %i[maven_package generic_package nuget_package].each do |format| context "with package_type:#{format}" do - let_it_be(:package) { create(format, name: 'foo', version: 'beta') } # rubocop:disable Rails/SaveBang + let_it_be(:package) { create(format, name: 'foo', version: '1.0.0-beta') } let_it_be(:package_type) { package.package_type } let_it_be(:package_setting) { package.project.namespace.package_settings } where(:duplicates_allowed, :duplicate_exception_regex, :result) do - true | '' | true - false | '' | false - false | '.*' | true - false | 'fo.*' | true - false | 'be.*' | true + true | '' | true + false | '' | false + false | '.*' | true + false | 'fo.*' | true + false | '.*be.*' | true end with_them do @@ -75,7 +78,7 @@ RSpec.describe Namespace::PackageSetting do end context 'package types without package_settings' do - [:npm_package, :conan_package, :nuget_package, :pypi_package, :composer_package, :golang_package, :debian_package].each do |format| + %i[npm_package conan_package pypi_package composer_package golang_package debian_package].each do |format| context "with package_type:#{format}" do let_it_be(:package) { create(format) } # rubocop:disable Rails/SaveBang let_it_be(:package_setting) { package.project.namespace.package_settings } diff --git a/spec/requests/api/graphql/mutations/namespace/package_settings/update_spec.rb b/spec/requests/api/graphql/mutations/namespace/package_settings/update_spec.rb index 2f26a2f92b2..480e184a60c 100644 --- a/spec/requests/api/graphql/mutations/namespace/package_settings/update_spec.rb +++ b/spec/requests/api/graphql/mutations/namespace/package_settings/update_spec.rb @@ -15,6 +15,8 @@ RSpec.describe 'Updating the package settings', feature_category: :package_regis maven_duplicate_exception_regex: 'foo-.*', generic_duplicates_allowed: false, generic_duplicate_exception_regex: 'bar-.*', + nuget_duplicates_allowed: false, + nuget_duplicate_exception_regex: 'bar-.*', maven_package_requests_forwarding: true, lock_maven_package_requests_forwarding: true, npm_package_requests_forwarding: true, @@ -32,6 +34,8 @@ RSpec.describe 'Updating the package settings', feature_category: :package_regis mavenDuplicateExceptionRegex genericDuplicatesAllowed genericDuplicateExceptionRegex + nugetDuplicatesAllowed + nugetDuplicateExceptionRegex mavenPackageRequestsForwarding lockMavenPackageRequestsForwarding npmPackageRequestsForwarding @@ -58,6 +62,8 @@ RSpec.describe 'Updating the package settings', feature_category: :package_regis expect(package_settings_response['mavenDuplicateExceptionRegex']).to eq(params[:maven_duplicate_exception_regex]) expect(package_settings_response['genericDuplicatesAllowed']).to eq(params[:generic_duplicates_allowed]) expect(package_settings_response['genericDuplicateExceptionRegex']).to eq(params[:generic_duplicate_exception_regex]) + expect(package_settings_response['nugetDuplicatesAllowed']).to eq(params[:nuget_duplicates_allowed]) + expect(package_settings_response['nugetDuplicateExceptionRegex']).to eq(params[:nuget_duplicate_exception_regex]) expect(package_settings_response['mavenPackageRequestsForwarding']).to eq(params[:maven_package_requests_forwarding]) expect(package_settings_response['lockMavenPackageRequestsForwarding']).to eq(params[:lock_maven_package_requests_forwarding]) expect(package_settings_response['pypiPackageRequestsForwarding']).to eq(params[:pypi_package_requests_forwarding]) @@ -98,6 +104,8 @@ RSpec.describe 'Updating the package settings', feature_category: :package_regis maven_duplicate_exception_regex: 'SNAPSHOT', generic_duplicates_allowed: true, generic_duplicate_exception_regex: 'foo', + nuget_duplicates_allowed: true, + nuget_duplicate_exception_regex: 'foo', maven_package_requests_forwarding: nil, lock_maven_package_requests_forwarding: false, npm_package_requests_forwarding: nil, @@ -109,6 +117,8 @@ RSpec.describe 'Updating the package settings', feature_category: :package_regis maven_duplicate_exception_regex: 'foo-.*', generic_duplicates_allowed: false, generic_duplicate_exception_regex: 'bar-.*', + nuget_duplicates_allowed: false, + nuget_duplicate_exception_regex: 'bar-.*', maven_package_requests_forwarding: true, lock_maven_package_requests_forwarding: true, npm_package_requests_forwarding: true, @@ -119,6 +129,26 @@ RSpec.describe 'Updating the package settings', feature_category: :package_regis it_behaves_like 'returning a success' it_behaves_like 'rejecting invalid regex' + + context 'when nuget_duplicates_option FF is disabled' do + let(:params) do + { + namespace_path: namespace.full_path, + 'nugetDuplicatesAllowed' => false + } + end + + before do + stub_feature_flags(nuget_duplicates_option: false) + end + + it 'raises an error', :aggregate_failures do + subject + + expect(graphql_errors.size).to eq(1) + expect(graphql_errors.first['message']).to include('feature flag is disabled') + end + end end RSpec.shared_examples 'accepting the mutation request creating the package settings' do diff --git a/spec/services/metrics/dashboard/custom_metric_embed_service_spec.rb b/spec/services/metrics/dashboard/custom_metric_embed_service_spec.rb deleted file mode 100644 index 8117296b048..00000000000 --- a/spec/services/metrics/dashboard/custom_metric_embed_service_spec.rb +++ /dev/null @@ -1,147 +0,0 @@ -# frozen_string_literal: true - -require 'spec_helper' - -RSpec.describe Metrics::Dashboard::CustomMetricEmbedService, feature_category: :metrics do - include MetricsDashboardHelpers - - let_it_be(:project, reload: true) { build(:project) } - let_it_be(:user) { create(:user) } - let_it_be(:environment) { create(:environment, project: project) } - - before do - project.add_maintainer(user) if user - end - - let(:dashboard_path) { system_dashboard_path } - let(:group) { business_metric_title } - let(:title) { 'title' } - let(:y_label) { 'y_label' } - - describe '.valid_params?' do - let(:valid_params) do - { - embedded: true, - dashboard_path: dashboard_path, - group: group, - title: title, - y_label: y_label - } - end - - subject { described_class.valid_params?(params) } - - let(:params) { valid_params } - - it { is_expected.to be_truthy } - - context 'missing embedded' do - let(:params) { valid_params.except(:embedded) } - - it { is_expected.to be_falsey } - end - - context 'not embedded' do - let(:params) { valid_params.merge(embedded: 'false') } - - it { is_expected.to be_falsey } - end - - context 'non-system dashboard' do - let(:dashboard_path) { '.gitlab/dashboards/test.yml' } - - it { is_expected.to be_falsey } - end - - context 'undefined dashboard' do - let(:params) { valid_params.except(:dashboard_path) } - - it { is_expected.to be_truthy } - end - - context 'non-custom metric group' do - let(:group) { 'Different Group' } - - it { is_expected.to be_falsey } - end - - context 'missing group' do - let(:group) { nil } - - it { is_expected.to be_falsey } - end - - context 'missing title' do - let(:title) { nil } - - it { is_expected.to be_falsey } - end - - context 'undefined y-axis label' do - let(:params) { valid_params.except(:y_label) } - - it { is_expected.to be_falsey } - end - end - - describe '#get_dashboard' do - let(:service_params) do - [ - project, - user, - { - embedded: true, - environment: environment, - dashboard_path: dashboard_path, - group: group, - title: title, - y_label: y_label - } - ] - end - - let(:service_call) { described_class.new(*service_params).get_dashboard } - - it_behaves_like 'misconfigured dashboard service response', :not_found - it_behaves_like 'raises error for users with insufficient permissions' - - context 'the custom metric exists' do - let!(:metric) { create(:prometheus_metric, project: project) } - - it_behaves_like 'valid embedded dashboard service response' - - it 'does not cache the unprocessed dashboard' do - # Fail spec if any method of Cache class is called. - stub_const('Gitlab::Metrics::Dashboard::Cache', double) - - described_class.new(*service_params).get_dashboard - end - - context 'multiple metrics meet criteria' do - let!(:metric_2) { create(:prometheus_metric, project: project, query: 'avg(metric_2)') } - - it_behaves_like 'valid embedded dashboard service response' - - it 'includes both metrics in a single panel' do - result = service_call - - panel_groups = result[:dashboard][:panel_groups] - panels = panel_groups[0][:panels] - metrics = panels[0][:metrics] - queries = metrics.map { |metric| metric[:query_range] } - - expect(panel_groups.length).to eq(1) - expect(panels.length).to eq(1) - expect(metrics.length).to eq(2) - expect(queries).to include('avg(metric_2)', 'avg(metric)') - end - end - end - - context 'when the metric exists in another project' do - let!(:metric) { create(:prometheus_metric, project: create(:project)) } - - it_behaves_like 'misconfigured dashboard service response', :not_found - end - end -end diff --git a/spec/services/namespaces/package_settings/update_service_spec.rb b/spec/services/namespaces/package_settings/update_service_spec.rb index 385fd7c130e..8a4a51e409c 100644 --- a/spec/services/namespaces/package_settings/update_service_spec.rb +++ b/spec/services/namespaces/package_settings/update_service_spec.rb @@ -38,6 +38,8 @@ RSpec.describe ::Namespaces::PackageSettings::UpdateService, feature_category: : maven_duplicate_exception_regex: 'SNAPSHOT', generic_duplicates_allowed: true, generic_duplicate_exception_regex: 'foo', + nuget_duplicates_allowed: true, + nuget_duplicate_exception_regex: 'foo', maven_package_requests_forwarding: true, lock_maven_package_requests_forwarding: false, npm_package_requests_forwarding: nil, @@ -49,6 +51,8 @@ RSpec.describe ::Namespaces::PackageSettings::UpdateService, feature_category: : maven_duplicate_exception_regex: 'RELEASE', generic_duplicates_allowed: false, generic_duplicate_exception_regex: 'bar', + nuget_duplicates_allowed: false, + nuget_duplicate_exception_regex: 'bar', maven_package_requests_forwarding: true, lock_maven_package_requests_forwarding: true, npm_package_requests_forwarding: true, @@ -98,6 +102,8 @@ RSpec.describe ::Namespaces::PackageSettings::UpdateService, feature_category: : maven_duplicate_exception_regex: 'RELEASE', generic_duplicates_allowed: false, generic_duplicate_exception_regex: 'bar', + nuget_duplicates_allowed: false, + nuget_duplicate_exception_regex: 'bar', maven_package_requests_forwarding: true, lock_maven_package_requests_forwarding: true, npm_package_requests_forwarding: true, diff --git a/spec/support/shared_examples/services/namespace_package_settings_shared_examples.rb b/spec/support/shared_examples/services/namespace_package_settings_shared_examples.rb index 11a786fdefb..6f0fd1aa4ed 100644 --- a/spec/support/shared_examples/services/namespace_package_settings_shared_examples.rb +++ b/spec/support/shared_examples/services/namespace_package_settings_shared_examples.rb @@ -9,6 +9,8 @@ RSpec.shared_examples 'updating the namespace package setting attributes' do |to .and change { namespace.package_settings.reload.maven_duplicate_exception_regex }.from(from[:maven_duplicate_exception_regex]).to(to[:maven_duplicate_exception_regex]) .and change { namespace.package_settings.reload.generic_duplicates_allowed }.from(from[:generic_duplicates_allowed]).to(to[:generic_duplicates_allowed]) .and change { namespace.package_settings.reload.generic_duplicate_exception_regex }.from(from[:generic_duplicate_exception_regex]).to(to[:generic_duplicate_exception_regex]) + .and change { namespace.package_settings.reload.nuget_duplicates_allowed }.from(from[:nuget_duplicates_allowed]).to(to[:nuget_duplicates_allowed]) + .and change { namespace.package_settings.reload.nuget_duplicate_exception_regex }.from(from[:nuget_duplicate_exception_regex]).to(to[:nuget_duplicate_exception_regex]) end end @@ -30,6 +32,8 @@ RSpec.shared_examples 'creating the namespace package setting' do expect(namespace.package_setting_relation.maven_duplicate_exception_regex).to eq(package_settings[:maven_duplicate_exception_regex]) expect(namespace.package_setting_relation.generic_duplicates_allowed).to eq(package_settings[:generic_duplicates_allowed]) expect(namespace.package_setting_relation.generic_duplicate_exception_regex).to eq(package_settings[:generic_duplicate_exception_regex]) + expect(namespace.package_setting_relation.nuget_duplicates_allowed).to eq(package_settings[:nuget_duplicates_allowed]) + expect(namespace.package_setting_relation.nuget_duplicate_exception_regex).to eq(package_settings[:nuget_duplicate_exception_regex]) end it_behaves_like 'returning a success' diff --git a/spec/tooling/danger/required_stops_spec.rb b/spec/tooling/danger/required_stops_spec.rb new file mode 100644 index 00000000000..7a90f19ac09 --- /dev/null +++ b/spec/tooling/danger/required_stops_spec.rb @@ -0,0 +1,98 @@ +# frozen_string_literal: true + +require 'gitlab-dangerfiles' +require 'danger' +require 'danger/plugins/internal/helper' +require 'gitlab/dangerfiles/spec_helper' + +require_relative '../../../tooling/danger/required_stops' +require_relative '../../../tooling/danger/project_helper' + +RSpec.describe Tooling::Danger::RequiredStops, feature_category: :tooling do + include_context "with dangerfile" + + let(:fake_danger) { DangerSpecHelper.fake_danger.include(described_class) } + let(:fake_project_helper) { instance_double(Tooling::Danger::ProjectHelper) } + let(:warning_comment) { described_class::WARNING_COMMENT.chomp } + + subject(:required_stops) { fake_danger.new(helper: fake_helper) } + + before do + allow(required_stops).to receive(:project_helper).and_return(fake_project_helper) + end + + describe '#add_comment_for_finalized_migrations' do + let(:file_lines) { file_diff.map { |line| line.delete_prefix('+').delete_prefix('-') } } + + before do + allow(required_stops.project_helper).to receive(:file_lines).and_return(file_lines) + allow(required_stops.helper).to receive(:all_changed_files).and_return([filename]) + allow(required_stops.helper).to receive(:changed_lines).with(filename).and_return(file_diff) + end + + shared_examples "adds comment to added migration finalizations" do + context 'when model has a newly added migration finalization' do + let(:file_diff) do + [ + "+ def up", + "+ finalize_background_migration(MIGRATION)", + "+ end", + "+ def up", + "+ finalize_background_migration('MyMigration')", + "+ end", + "+ def up", + "+ ensure_batched_background_migration_is_finished(", + "+ end", + "+ def up", + "+ ensure_batched_background_migration_is_finished('MyMigration')", + "+ end", + "+ def up", + "+ finalize_batched_background_migration(", + "+ end", + "+ def up", + "+ finalize_batched_background_migration('MyMigration')", + "+ end" + ] + end + + it 'adds comment at the correct line' do + matching_line_numbers = [2, 5, 8, 11, 14, 17] + matching_line_numbers.each do |line_number| + expect(required_stops).to receive(:markdown).with("\n#{warning_comment}", file: filename, line: line_number) + end + + required_stops.add_comment_for_finalized_migrations + end + end + + context 'when model does not have migration finalization statement' do + let(:file_diff) do + [ + "+ queue_batched_background_migration(", + "- ensure_batched_background_migration_is_finished(" + ] + end + + it 'does not add comment' do + expect(required_stops).not_to receive(:markdown) + + required_stops.add_comment_for_finalized_migrations + end + end + end + + context 'when model has a newly added migration finalization' do + context 'with regular migration' do + let(:filename) { 'db/migrate/my_migration.rb' } + + include_examples 'adds comment to added migration finalizations' + end + + context 'with post migration' do + let(:filename) { 'db/post_migrate/my_migration.rb' } + + include_examples 'adds comment to added migration finalizations' + end + end + end +end |