Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'spec/migrations')
-rw-r--r--spec/migrations/20210406144743_backfill_total_tuple_count_for_batched_migrations_spec.rb9
-rw-r--r--spec/migrations/20210423160427_schedule_drop_invalid_vulnerabilities_spec.rb32
-rw-r--r--spec/migrations/20210430134202_copy_adoption_snapshot_namespace_spec.rb2
-rw-r--r--spec/migrations/20210430135954_copy_adoption_segments_namespace_spec.rb2
-rw-r--r--spec/migrations/20210503105845_add_project_value_stream_id_to_project_stages_spec.rb3
-rw-r--r--spec/migrations/20210511142748_schedule_drop_invalid_vulnerabilities2_spec.rb34
-rw-r--r--spec/migrations/20210514063252_schedule_cleanup_orphaned_lfs_objects_projects_spec.rb2
-rw-r--r--spec/migrations/20210601073400_fix_total_stage_in_vsa_spec.rb2
-rw-r--r--spec/migrations/20210601080039_group_protected_environments_add_index_and_constraint_spec.rb2
-rw-r--r--spec/migrations/20210603222333_remove_builds_email_service_from_services_spec.rb2
-rw-r--r--spec/migrations/20210610153556_delete_legacy_operations_feature_flags_spec.rb2
-rw-r--r--spec/migrations/2021061716138_cascade_delete_freeze_periods_spec.rb2
-rw-r--r--spec/migrations/20210708130419_reschedule_merge_request_diff_users_background_migration_spec.rb2
-rw-r--r--spec/migrations/20210713042000_fix_ci_sources_pipelines_index_names_spec.rb2
-rw-r--r--spec/migrations/20210722042939_update_issuable_slas_where_issue_closed_spec.rb2
-rw-r--r--spec/migrations/20210722150102_operations_feature_flags_correct_flexible_rollout_values_spec.rb4
-rw-r--r--spec/migrations/20210804150320_create_base_work_item_types_spec.rb4
-rw-r--r--spec/migrations/20210805192450_update_trial_plans_ci_daily_pipeline_schedule_triggers_spec.rb2
-rw-r--r--spec/migrations/20210811122206_update_external_project_bots_spec.rb2
-rw-r--r--spec/migrations/20210812013042_remove_duplicate_project_authorizations_spec.rb2
-rw-r--r--spec/migrations/20210819145000_drop_temporary_columns_and_triggers_for_ci_builds_runner_session_spec.rb2
-rw-r--r--spec/migrations/20210831203408_upsert_base_work_item_types_spec.rb4
-rw-r--r--spec/migrations/20210902144144_drop_temporary_columns_and_triggers_for_ci_build_needs_spec.rb2
-rw-r--r--spec/migrations/20210906100316_drop_temporary_columns_and_triggers_for_ci_build_trace_chunks_spec.rb2
-rw-r--r--spec/migrations/20210906130643_drop_temporary_columns_and_triggers_for_taggings_spec.rb2
-rw-r--r--spec/migrations/20210907013944_cleanup_bigint_conversion_for_ci_builds_metadata_spec.rb2
-rw-r--r--spec/migrations/20210907211557_finalize_ci_builds_bigint_conversion_spec.rb2
-rw-r--r--spec/migrations/20210910194952_update_report_type_for_existing_approval_project_rules_spec.rb2
-rw-r--r--spec/migrations/20210914095310_cleanup_orphan_project_access_tokens_spec.rb2
-rw-r--r--spec/migrations/20210915022415_cleanup_bigint_conversion_for_ci_builds_spec.rb2
-rw-r--r--spec/migrations/20210918201050_remove_old_pending_jobs_for_recalculate_vulnerabilities_occurrences_uuid_spec.rb9
-rw-r--r--spec/migrations/20210922021816_drop_int4_columns_for_ci_job_artifacts_spec.rb2
-rw-r--r--spec/migrations/20210922025631_drop_int4_column_for_ci_sources_pipelines_spec.rb2
-rw-r--r--spec/migrations/20210922082019_drop_int4_column_for_events_spec.rb2
-rw-r--r--spec/migrations/20210922091402_drop_int4_column_for_push_event_payloads_spec.rb2
-rw-r--r--spec/migrations/20211006060436_schedule_populate_topics_total_projects_count_cache_spec.rb2
-rw-r--r--spec/migrations/20211012134316_clean_up_migrate_merge_request_diff_commit_users_spec.rb2
-rw-r--r--spec/migrations/20211018152654_schedule_remove_duplicate_vulnerabilities_findings3_spec.rb8
-rw-r--r--spec/migrations/20211028155449_schedule_fix_merge_request_diff_commit_users_migration_spec.rb2
-rw-r--r--spec/migrations/20211101222614_consume_remaining_user_namespace_jobs_spec.rb2
-rw-r--r--spec/migrations/20211110143306_add_not_null_constraint_to_security_findings_uuid_spec.rb6
-rw-r--r--spec/migrations/20211110151350_schedule_drop_invalid_security_findings_spec.rb31
-rw-r--r--spec/migrations/20211116111644_schedule_remove_occurrence_pipelines_and_duplicate_vulnerabilities_findings_spec.rb54
-rw-r--r--spec/migrations/20211117084814_migrate_remaining_u2f_registrations_spec.rb2
-rw-r--r--spec/migrations/20211126115449_encrypt_static_objects_external_storage_auth_token_spec.rb2
-rw-r--r--spec/migrations/20211126204445_add_task_to_work_item_types_spec.rb4
-rw-r--r--spec/migrations/20211130165043_backfill_sequence_column_for_sprints_table_spec.rb2
-rw-r--r--spec/migrations/20211203091642_add_index_to_projects_on_marked_for_deletion_at_spec.rb2
-rw-r--r--spec/migrations/20211207125331_remove_jobs_for_recalculate_vulnerabilities_occurrences_uuid_spec.rb5
-rw-r--r--spec/migrations/20211207135331_schedule_recalculate_uuid_on_vulnerabilities_occurrences4_spec.rb2
-rw-r--r--spec/migrations/20211210140629_encrypt_static_object_token_spec.rb6
-rw-r--r--spec/migrations/20211214012507_backfill_incident_issue_escalation_statuses_spec.rb2
-rw-r--r--spec/migrations/20211217174331_mark_recalculate_finding_signatures_as_completed_spec.rb4
-rw-r--r--spec/migrations/20220106111958_add_insert_or_update_vulnerability_reads_trigger_spec.rb4
-rw-r--r--spec/migrations/20220106112043_add_update_vulnerability_reads_trigger_spec.rb4
-rw-r--r--spec/migrations/20220106112085_add_update_vulnerability_reads_location_trigger_spec.rb4
-rw-r--r--spec/migrations/20220106163326_add_has_issues_on_vulnerability_reads_trigger_spec.rb4
-rw-r--r--spec/migrations/20220107064845_populate_vulnerability_reads_spec.rb25
-rw-r--r--spec/migrations/20220120094340_drop_position_from_security_findings_spec.rb2
-rw-r--r--spec/migrations/20220124130028_dedup_runner_projects_spec.rb3
-rw-r--r--spec/migrations/20220128155251_remove_dangling_running_builds_spec.rb3
-rw-r--r--spec/migrations/20220128155814_fix_approval_rules_code_owners_rule_type_index_spec.rb2
-rw-r--r--spec/migrations/20220202105733_delete_service_template_records_spec.rb2
-rw-r--r--spec/migrations/20220204095121_backfill_namespace_statistics_with_dependency_proxy_size_spec.rb28
-rw-r--r--spec/migrations/20220204194347_encrypt_integration_properties_spec.rb2
-rw-r--r--spec/migrations/20220208080921_schedule_migrate_personal_namespace_project_maintainer_to_owner_spec.rb4
-rw-r--r--spec/migrations/20220211214605_update_integrations_trigger_type_new_on_insert_null_safe_spec.rb2
-rw-r--r--spec/migrations/20220213103859_remove_integrations_type_spec.rb2
-rw-r--r--spec/migrations/20220222192524_create_not_null_constraint_releases_tag_spec.rb6
-rw-r--r--spec/migrations/20220222192525_remove_null_releases_spec.rb2
-rw-r--r--spec/migrations/20220223124428_schedule_merge_topics_with_same_name_spec.rb2
-rw-r--r--spec/migrations/20220305223212_add_security_training_providers_spec.rb4
-rw-r--r--spec/migrations/20220307192610_remove_duplicate_project_tag_releases_spec.rb2
-rw-r--r--spec/migrations/20220309084954_remove_leftover_external_pull_request_deletions_spec.rb2
-rw-r--r--spec/migrations/20220310141349_remove_dependency_list_usage_data_from_redis_spec.rb3
-rw-r--r--spec/migrations/20220315171129_cleanup_draft_data_from_faulty_regex_spec.rb2
-rw-r--r--spec/migrations/20220316202640_populate_container_repositories_migration_plan_spec.rb8
-rw-r--r--spec/migrations/20220321234317_remove_all_issuable_escalation_statuses_spec.rb2
-rw-r--r--spec/migrations/20220322132242_update_pages_onboarding_state_spec.rb2
-rw-r--r--spec/migrations/20220324032250_migrate_shimo_confluence_service_category_spec.rb2
-rw-r--r--spec/migrations/20220324165436_schedule_backfill_project_settings_spec.rb4
-rw-r--r--spec/migrations/20220329175119_remove_leftover_ci_job_artifact_deletions_spec.rb2
-rw-r--r--spec/migrations/20220331133802_schedule_backfill_topics_title_spec.rb2
-rw-r--r--spec/migrations/20220412143552_consume_remaining_encrypt_integration_property_jobs_spec.rb2
-rw-r--r--spec/migrations/20220416054011_schedule_backfill_project_member_namespace_id_spec.rb4
-rw-r--r--spec/migrations/20220420135946_update_batched_background_migration_arguments_spec.rb2
-rw-r--r--spec/migrations/20220426185933_backfill_deployments_finished_at_spec.rb2
-rw-r--r--spec/migrations/20220502015011_clean_up_fix_merge_request_diff_commit_users_spec.rb2
-rw-r--r--spec/migrations/20220502173045_reset_too_many_tags_skipped_registry_imports_spec.rb2
-rw-r--r--spec/migrations/20220503035221_add_gitlab_schema_to_batched_background_migrations_spec.rb2
-rw-r--r--spec/migrations/20220505044348_fix_automatic_iterations_cadences_start_date_spec.rb2
-rw-r--r--spec/migrations/20220505174658_update_index_on_alerts_to_exclude_null_fingerprints_spec.rb2
-rw-r--r--spec/migrations/20220506154054_create_sync_namespace_details_trigger_spec.rb2
-rw-r--r--spec/migrations/20220512190659_remove_web_hooks_web_hook_logs_web_hook_id_fk_spec.rb2
-rw-r--r--spec/migrations/20220513043344_reschedule_expire_o_auth_tokens_spec.rb4
-rw-r--r--spec/migrations/20220523171107_drop_deploy_tokens_token_column_spec.rb2
-rw-r--r--spec/migrations/20220524074947_finalize_backfill_null_note_discussion_ids_spec.rb2
-rw-r--r--spec/migrations/20220524184149_create_sync_project_namespace_details_trigger_spec.rb2
-rw-r--r--spec/migrations/20220525221133_schedule_backfill_vulnerability_reads_cluster_agent_spec.rb4
-rw-r--r--spec/migrations/20220601110011_schedule_remove_self_managed_wiki_notes_spec.rb4
-rw-r--r--spec/migrations/20220601152916_add_user_id_and_ip_address_success_index_to_authentication_events_spec.rb3
-rw-r--r--spec/migrations/20220606080509_fix_incorrect_job_artifacts_expire_at_spec.rb4
-rw-r--r--spec/migrations/20220606082910_add_tmp_index_for_potentially_misassociated_vulnerability_occurrences_spec.rb3
-rw-r--r--spec/migrations/20220607082910_add_sync_tmp_index_for_potentially_misassociated_vulnerability_occurrences_spec.rb3
-rw-r--r--spec/migrations/20220620132300_update_last_run_date_for_iterations_cadences_spec.rb2
-rw-r--r--spec/migrations/20220622080547_backfill_project_statistics_with_container_registry_size_spec.rb4
-rw-r--r--spec/migrations/20220627090231_schedule_disable_legacy_open_source_license_for_inactive_public_projects_spec.rb2
-rw-r--r--spec/migrations/20220627152642_queue_update_delayed_project_removal_to_null_for_user_namespace_spec.rb2
-rw-r--r--spec/migrations/20220628012902_finalise_project_namespace_members_spec.rb4
-rw-r--r--spec/migrations/20220629184402_unset_escalation_policies_for_alert_incidents_spec.rb4
-rw-r--r--spec/migrations/20220715163254_update_notes_in_past_spec.rb2
-rw-r--r--spec/migrations/20220721031446_schedule_disable_legacy_open_source_license_for_one_member_no_repo_projects_spec.rb2
-rw-r--r--spec/migrations/20220722084543_schedule_disable_legacy_open_source_license_for_no_issues_no_repo_projects_spec.rb2
-rw-r--r--spec/migrations/20220722110026_reschedule_set_legacy_open_source_license_available_for_non_public_projects_spec.rb2
-rw-r--r--spec/migrations/20220725150127_update_jira_tracker_data_deployment_type_based_on_url_spec.rb2
-rw-r--r--spec/migrations/20220801155858_schedule_disable_legacy_open_source_licence_for_recent_public_projects_spec.rb3
-rw-r--r--spec/migrations/20220802114351_reschedule_backfill_container_registry_size_into_project_statistics_spec.rb4
-rw-r--r--spec/migrations/20220802204737_remove_deactivated_user_highest_role_stats_spec.rb2
-rw-r--r--spec/migrations/20220816163444_update_start_date_for_iterations_cadences_spec.rb2
-rw-r--r--spec/migrations/20220819153725_add_vulnerability_advisory_foreign_key_to_sbom_vulnerable_component_versions_spec.rb3
-rw-r--r--spec/migrations/20220819162852_add_sbom_component_version_foreign_key_to_sbom_vulnerable_component_versions_spec.rb3
-rw-r--r--spec/migrations/20220906074449_schedule_disable_legacy_open_source_license_for_projects_less_than_one_mb_spec.rb6
-rw-r--r--spec/migrations/20220913030624_cleanup_attention_request_related_system_notes_spec.rb2
-rw-r--r--spec/migrations/20220920124709_backfill_internal_on_notes_spec.rb2
-rw-r--r--spec/migrations/20220920180451_schedule_vulnerabilities_feedback_migration_spec.rb31
-rw-r--r--spec/migrations/20220921093355_schedule_backfill_namespace_details_spec.rb2
-rw-r--r--spec/migrations/20220921144258_remove_orphan_group_token_users_spec.rb3
-rw-r--r--spec/migrations/20220922143143_schedule_reset_duplicate_ci_runners_token_values_spec.rb2
-rw-r--r--spec/migrations/20220922143634_schedule_reset_duplicate_ci_runners_token_encrypted_values_spec.rb4
-rw-r--r--spec/migrations/20220928225711_schedule_update_ci_pipeline_artifacts_locked_status_spec.rb5
-rw-r--r--spec/migrations/20220929213730_schedule_delete_orphaned_operational_vulnerabilities_spec.rb6
-rw-r--r--spec/migrations/20221002234454_finalize_group_member_namespace_id_migration_spec.rb4
-rw-r--r--spec/migrations/20221004094814_schedule_destroy_invalid_members_spec.rb4
-rw-r--r--spec/migrations/20221008032350_add_password_expiration_migration_spec.rb2
-rw-r--r--spec/migrations/20221012033107_add_password_last_changed_at_to_user_details_spec.rb8
-rw-r--r--spec/migrations/20221013154159_update_invalid_dormant_user_setting_spec.rb2
-rw-r--r--spec/migrations/20221018050323_add_objective_and_keyresult_to_work_item_types_spec.rb4
-rw-r--r--spec/migrations/20221018062308_schedule_backfill_project_namespace_details_spec.rb6
-rw-r--r--spec/migrations/20221018095434_schedule_disable_legacy_open_source_license_for_projects_less_than_five_mb_spec.rb62
-rw-r--r--spec/migrations/20221018193635_ensure_task_note_renaming_background_migration_finished_spec.rb4
-rw-r--r--spec/migrations/20221021145820_create_routing_table_for_builds_metadata_v2_spec.rb4
-rw-r--r--spec/migrations/20221025043930_change_default_value_on_password_last_changed_at_to_user_details_spec.rb2
-rw-r--r--spec/migrations/20221028022627_add_index_on_password_last_changed_at_to_user_details_spec.rb2
-rw-r--r--spec/migrations/20221101032521_add_default_preferred_language_to_application_settings_spec.rb2
-rw-r--r--spec/migrations/20221101032600_add_text_limit_to_default_preferred_language_on_application_settings_spec.rb2
-rw-r--r--spec/migrations/20221102090940_create_next_ci_partitions_record_spec.rb2
-rw-r--r--spec/migrations/20221102090943_create_second_partition_for_builds_metadata_spec.rb2
-rw-r--r--spec/migrations/20221104115712_backfill_project_statistics_storage_size_without_uploads_size_spec.rb43
-rw-r--r--spec/migrations/20221110152133_delete_orphans_approval_rules_spec.rb22
-rw-r--r--spec/migrations/20221115173607_ensure_work_item_type_backfill_migration_finished_spec.rb102
-rw-r--r--spec/migrations/20221122132812_schedule_prune_stale_project_export_jobs_spec.rb24
-rw-r--r--spec/migrations/20221123133054_queue_reset_status_on_container_repositories_spec.rb51
-rw-r--r--spec/migrations/20221205151917_schedule_backfill_environment_tier_spec.rb24
-rw-r--r--spec/migrations/20221209110934_update_import_sources_on_application_settings_spec.rb21
-rw-r--r--spec/migrations/20221209110935_fix_update_import_sources_on_application_settings_spec.rb34
-rw-r--r--spec/migrations/20221210154044_update_active_billable_users_index_spec.rb33
-rw-r--r--spec/migrations/active_record/schema_spec.rb2
-rw-r--r--spec/migrations/add_default_project_approval_rules_vuln_allowed_spec.rb2
-rw-r--r--spec/migrations/add_epics_relative_position_spec.rb2
-rw-r--r--spec/migrations/add_new_trail_plans_spec.rb2
-rw-r--r--spec/migrations/add_okr_hierarchy_restrictions_spec.rb35
-rw-r--r--spec/migrations/add_open_source_plan_spec.rb2
-rw-r--r--spec/migrations/add_premium_and_ultimate_plan_limits_spec.rb2
-rw-r--r--spec/migrations/add_triggers_to_integrations_type_new_spec.rb2
-rw-r--r--spec/migrations/add_upvotes_count_index_to_issues_spec.rb2
-rw-r--r--spec/migrations/add_web_hook_calls_to_plan_limits_paid_tiers_spec.rb6
-rw-r--r--spec/migrations/adjust_task_note_rename_background_migration_values_spec.rb2
-rw-r--r--spec/migrations/associate_existing_dast_builds_with_variables_spec.rb2
-rw-r--r--spec/migrations/backfill_all_project_namespaces_spec.rb4
-rw-r--r--spec/migrations/backfill_cadence_id_for_boards_scoped_to_iteration_spec.rb2
-rw-r--r--spec/migrations/backfill_clusters_integration_prometheus_enabled_spec.rb2
-rw-r--r--spec/migrations/backfill_cycle_analytics_aggregations_spec.rb2
-rw-r--r--spec/migrations/backfill_epic_cache_counts_spec.rb2
-rw-r--r--spec/migrations/backfill_escalation_policies_for_oncall_schedules_spec.rb58
-rw-r--r--spec/migrations/backfill_group_features_spec.rb2
-rw-r--r--spec/migrations/backfill_integrations_enable_ssl_verification_spec.rb6
-rw-r--r--spec/migrations/backfill_integrations_type_new_spec.rb6
-rw-r--r--spec/migrations/backfill_issues_upvotes_count_spec.rb2
-rw-r--r--spec/migrations/backfill_member_namespace_id_for_group_members_spec.rb4
-rw-r--r--spec/migrations/backfill_namespace_id_for_namespace_routes_spec.rb4
-rw-r--r--spec/migrations/backfill_namespace_id_for_project_routes_spec.rb2
-rw-r--r--spec/migrations/backfill_namespace_id_on_issues_spec.rb2
-rw-r--r--spec/migrations/backfill_nuget_temporary_packages_to_processing_status_spec.rb2
-rw-r--r--spec/migrations/backfill_project_import_level_spec.rb4
-rw-r--r--spec/migrations/backfill_project_namespaces_for_group_spec.rb4
-rw-r--r--spec/migrations/backfill_stage_event_hash_spec.rb2
-rw-r--r--spec/migrations/backfill_user_namespace_spec.rb4
-rw-r--r--spec/migrations/bulk_insert_cluster_enabled_grants_spec.rb2
-rw-r--r--spec/migrations/change_public_projects_cost_factor_spec.rb2
-rw-r--r--spec/migrations/change_task_system_note_wording_to_checklist_item_spec.rb2
-rw-r--r--spec/migrations/change_web_hook_events_default_spec.rb2
-rw-r--r--spec/migrations/clean_up_pending_builds_table_spec.rb3
-rw-r--r--spec/migrations/cleanup_after_add_primary_email_to_emails_if_user_confirmed_spec.rb2
-rw-r--r--spec/migrations/cleanup_after_fixing_issue_when_admin_changed_primary_email_spec.rb2
-rw-r--r--spec/migrations/cleanup_after_fixing_regression_with_new_users_emails_spec.rb2
-rw-r--r--spec/migrations/cleanup_backfill_integrations_enable_ssl_verification_spec.rb3
-rw-r--r--spec/migrations/cleanup_move_container_registry_enabled_to_project_feature_spec.rb2
-rw-r--r--spec/migrations/cleanup_mr_attention_request_todos_spec.rb2
-rw-r--r--spec/migrations/cleanup_orphaned_routes_spec.rb2
-rw-r--r--spec/migrations/cleanup_remaining_orphan_invites_spec.rb2
-rw-r--r--spec/migrations/cleanup_vulnerability_state_transitions_with_same_from_state_to_state_spec.rb13
-rw-r--r--spec/migrations/confirm_security_bot_spec.rb2
-rw-r--r--spec/migrations/confirm_support_bot_user_spec.rb4
-rw-r--r--spec/migrations/delete_migrate_shared_vulnerability_scanners_spec.rb2
-rw-r--r--spec/migrations/delete_security_findings_without_uuid_spec.rb3
-rw-r--r--spec/migrations/disable_expiration_policies_linked_to_no_container_images_spec.rb2
-rw-r--r--spec/migrations/disable_job_token_scope_when_unused_spec.rb2
-rw-r--r--spec/migrations/finalize_invalid_member_cleanup_spec.rb4
-rw-r--r--spec/migrations/finalize_issues_namespace_id_backfilling_spec.rb72
-rw-r--r--spec/migrations/finalize_orphaned_routes_cleanup_spec.rb4
-rw-r--r--spec/migrations/finalize_project_namespaces_backfill_spec.rb4
-rw-r--r--spec/migrations/finalize_routes_backfilling_for_projects_spec.rb4
-rw-r--r--spec/migrations/finalize_traversal_ids_background_migrations_spec.rb2
-rw-r--r--spec/migrations/fix_and_backfill_project_namespaces_for_projects_with_duplicate_name_spec.rb2
-rw-r--r--spec/migrations/fix_batched_migrations_old_format_job_arguments_spec.rb2
-rw-r--r--spec/migrations/generate_customers_dot_jwt_signing_key_spec.rb2
-rw-r--r--spec/migrations/insert_ci_daily_pipeline_schedule_triggers_plan_limits_spec.rb14
-rw-r--r--spec/migrations/migrate_elastic_index_settings_spec.rb2
-rw-r--r--spec/migrations/migrate_protected_attribute_to_pending_builds_spec.rb3
-rw-r--r--spec/migrations/move_container_registry_enabled_to_project_features3_spec.rb2
-rw-r--r--spec/migrations/move_security_findings_table_to_gitlab_partitions_dynamic_schema_spec.rb2
-rw-r--r--spec/migrations/orphaned_invite_tokens_cleanup_spec.rb2
-rw-r--r--spec/migrations/orphaned_invited_members_cleanup_spec.rb2
-rw-r--r--spec/migrations/populate_audit_event_streaming_verification_token_spec.rb2
-rw-r--r--spec/migrations/populate_dismissal_information_for_vulnerabilities_spec.rb2
-rw-r--r--spec/migrations/populate_operation_visibility_permissions_spec.rb2
-rw-r--r--spec/migrations/populate_releases_access_level_from_repository_spec.rb2
-rw-r--r--spec/migrations/queue_backfill_project_feature_package_registry_access_level_spec.rb4
-rw-r--r--spec/migrations/queue_backfill_user_details_fields_spec.rb4
-rw-r--r--spec/migrations/queue_populate_projects_star_count_spec.rb4
-rw-r--r--spec/migrations/re_schedule_latest_pipeline_id_population_with_all_security_related_artifact_types_spec.rb2
-rw-r--r--spec/migrations/recount_epic_cache_counts_spec.rb2
-rw-r--r--spec/migrations/recreate_index_security_ci_builds_on_name_and_id_parser_features_spec.rb2
-rw-r--r--spec/migrations/recreate_index_security_ci_builds_on_name_and_id_parser_with_new_features_spec.rb2
-rw-r--r--spec/migrations/remove_duplicate_dast_site_tokens_spec.rb4
-rw-r--r--spec/migrations/remove_duplicate_dast_site_tokens_with_same_token_spec.rb6
-rw-r--r--spec/migrations/remove_flowdock_integration_records_spec.rb23
-rw-r--r--spec/migrations/remove_hipchat_service_records_spec.rb2
-rw-r--r--spec/migrations/remove_invalid_integrations_spec.rb2
-rw-r--r--spec/migrations/remove_not_null_contraint_on_title_from_sprints_spec.rb2
-rw-r--r--spec/migrations/remove_records_without_group_from_webhooks_table_spec.rb2
-rw-r--r--spec/migrations/remove_schedule_and_status_from_pending_alert_escalations_spec.rb2
-rw-r--r--spec/migrations/remove_wiki_notes_spec.rb2
-rw-r--r--spec/migrations/rename_services_to_integrations_spec.rb2
-rw-r--r--spec/migrations/replace_external_wiki_triggers_spec.rb2
-rw-r--r--spec/migrations/reschedule_backfill_imported_issue_search_data_spec.rb23
-rw-r--r--spec/migrations/reschedule_delete_orphaned_deployments_spec.rb3
-rw-r--r--spec/migrations/reschedule_issue_work_item_type_id_backfill_spec.rb10
-rw-r--r--spec/migrations/reschedule_migrate_shared_vulnerability_scanners_spec.rb2
-rw-r--r--spec/migrations/reset_job_token_scope_enabled_again_spec.rb2
-rw-r--r--spec/migrations/reset_job_token_scope_enabled_spec.rb2
-rw-r--r--spec/migrations/reset_severity_levels_to_new_default_spec.rb2
-rw-r--r--spec/migrations/retry_backfill_traversal_ids_spec.rb4
-rw-r--r--spec/migrations/sanitize_confidential_note_todos_spec.rb2
-rw-r--r--spec/migrations/schedule_add_primary_email_to_emails_if_user_confirmed_spec.rb2
-rw-r--r--spec/migrations/schedule_backfill_cluster_agents_has_vulnerabilities_spec.rb4
-rw-r--r--spec/migrations/schedule_backfill_draft_status_on_merge_requests_corrected_regex_spec.rb2
-rw-r--r--spec/migrations/schedule_backfilling_the_namespace_id_for_vulnerability_reads_spec.rb4
-rw-r--r--spec/migrations/schedule_copy_ci_builds_columns_to_security_scans2_spec.rb2
-rw-r--r--spec/migrations/schedule_disable_expiration_policies_linked_to_no_container_images_spec.rb32
-rw-r--r--spec/migrations/schedule_fix_incorrect_max_seats_used2_spec.rb2
-rw-r--r--spec/migrations/schedule_fix_incorrect_max_seats_used_spec.rb2
-rw-r--r--spec/migrations/schedule_fixing_security_scan_statuses_spec.rb77
-rw-r--r--spec/migrations/schedule_populate_requirements_issue_id_spec.rb4
-rw-r--r--spec/migrations/schedule_purging_stale_security_scans_spec.rb23
-rw-r--r--spec/migrations/schedule_recalculate_vulnerability_finding_signatures_for_findings_spec.rb35
-rw-r--r--spec/migrations/schedule_security_setting_creation_spec.rb2
-rw-r--r--spec/migrations/schedule_set_correct_vulnerability_state_spec.rb4
-rw-r--r--spec/migrations/schedule_update_timelogs_null_spent_at_spec.rb24
-rw-r--r--spec/migrations/schedule_update_timelogs_project_id_spec.rb2
-rw-r--r--spec/migrations/schedule_update_users_where_two_factor_auth_required_from_group_spec.rb2
-rw-r--r--spec/migrations/set_default_job_token_scope_true_spec.rb2
-rw-r--r--spec/migrations/set_email_confirmation_setting_before_removing_send_user_confirmation_email_column_spec.rb41
-rw-r--r--spec/migrations/set_email_confirmation_setting_from_send_user_confirmation_email_setting_spec.rb2
-rw-r--r--spec/migrations/slice_merge_request_diff_commit_migrations_spec.rb2
-rw-r--r--spec/migrations/start_backfill_ci_queuing_tables_spec.rb3
-rw-r--r--spec/migrations/steal_merge_request_diff_commit_users_migration_spec.rb2
-rw-r--r--spec/migrations/sync_new_amount_used_for_ci_namespace_monthly_usages_spec.rb3
-rw-r--r--spec/migrations/sync_new_amount_used_for_ci_project_monthly_usages_spec.rb3
-rw-r--r--spec/migrations/toggle_vsa_aggregations_enable_spec.rb2
-rw-r--r--spec/migrations/update_application_settings_container_registry_exp_pol_worker_capacity_default_spec.rb3
-rw-r--r--spec/migrations/update_application_settings_protected_paths_spec.rb9
-rw-r--r--spec/migrations/update_default_scan_method_of_dast_site_profile_spec.rb2
-rw-r--r--spec/migrations/update_integrations_trigger_type_new_on_insert_spec.rb2
-rw-r--r--spec/migrations/update_invalid_member_states_spec.rb2
-rw-r--r--spec/migrations/update_invalid_web_hooks_spec.rb2
286 files changed, 1286 insertions, 554 deletions
diff --git a/spec/migrations/20210406144743_backfill_total_tuple_count_for_batched_migrations_spec.rb b/spec/migrations/20210406144743_backfill_total_tuple_count_for_batched_migrations_spec.rb
index 1f18f7e581a..18aa8e92560 100644
--- a/spec/migrations/20210406144743_backfill_total_tuple_count_for_batched_migrations_spec.rb
+++ b/spec/migrations/20210406144743_backfill_total_tuple_count_for_batched_migrations_spec.rb
@@ -3,12 +3,13 @@
require 'spec_helper'
require_migration!
-RSpec.describe BackfillTotalTupleCountForBatchedMigrations, :migration, schema: 20210406140057 do
- let_it_be(:table_name) { 'projects' }
+RSpec.describe BackfillTotalTupleCountForBatchedMigrations, :migration, schema: 20210406140057,
+ feature_category: :database do
+ let!(:table_name) { 'projects' }
- let_it_be(:migrations) { table(:batched_background_migrations) }
+ let!(:migrations) { table(:batched_background_migrations) }
- let_it_be(:migration) do
+ let!(:migration) do
migrations.create!(
created_at: Time.now,
updated_at: Time.now,
diff --git a/spec/migrations/20210423160427_schedule_drop_invalid_vulnerabilities_spec.rb b/spec/migrations/20210423160427_schedule_drop_invalid_vulnerabilities_spec.rb
index faf440eb117..258bf7a3e69 100644
--- a/spec/migrations/20210423160427_schedule_drop_invalid_vulnerabilities_spec.rb
+++ b/spec/migrations/20210423160427_schedule_drop_invalid_vulnerabilities_spec.rb
@@ -3,33 +3,33 @@
require 'spec_helper'
require_migration!
-RSpec.describe ScheduleDropInvalidVulnerabilities, :migration do
- let_it_be(:namespace) { table(:namespaces).create!(name: 'user', path: 'user') }
- let_it_be(:users) { table(:users) }
- let_it_be(:user) { create_user! }
- let_it_be(:project) { table(:projects).create!(id: 123, namespace_id: namespace.id) }
+RSpec.describe ScheduleDropInvalidVulnerabilities, :migration, feature_category: :value_stream_management do
+ let!(:namespace) { table(:namespaces).create!(name: 'user', path: 'user') }
+ let!(:users) { table(:users) }
+ let!(:user) { create_user! }
+ let!(:project) { table(:projects).create!(id: 123, namespace_id: namespace.id) }
- let_it_be(:scanners) { table(:vulnerability_scanners) }
- let_it_be(:scanner) { scanners.create!(project_id: project.id, external_id: 'test 1', name: 'test scanner 1') }
- let_it_be(:different_scanner) { scanners.create!(project_id: project.id, external_id: 'test 2', name: 'test scanner 2') }
+ let!(:scanners) { table(:vulnerability_scanners) }
+ let!(:scanner) { scanners.create!(project_id: project.id, external_id: 'test 1', name: 'test scanner 1') }
+ let!(:different_scanner) { scanners.create!(project_id: project.id, external_id: 'test 2', name: 'test scanner 2') }
- let_it_be(:vulnerabilities) { table(:vulnerabilities) }
- let_it_be(:vulnerability_with_finding) do
+ let!(:vulnerabilities) { table(:vulnerabilities) }
+ let!(:vulnerability_with_finding) do
create_vulnerability!(
project_id: project.id,
author_id: user.id
)
end
- let_it_be(:vulnerability_without_finding) do
+ let!(:vulnerability_without_finding) do
create_vulnerability!(
project_id: project.id,
author_id: user.id
)
end
- let_it_be(:vulnerability_identifiers) { table(:vulnerability_identifiers) }
- let_it_be(:primary_identifier) do
+ let!(:vulnerability_identifiers) { table(:vulnerability_identifiers) }
+ let!(:primary_identifier) do
vulnerability_identifiers.create!(
project_id: project.id,
external_type: 'uuid-v5',
@@ -38,8 +38,8 @@ RSpec.describe ScheduleDropInvalidVulnerabilities, :migration do
name: 'Identifier for UUIDv5')
end
- let_it_be(:vulnerabilities_findings) { table(:vulnerability_occurrences) }
- let_it_be(:finding) do
+ let!(:vulnerabilities_findings) { table(:vulnerability_occurrences) }
+ let!(:finding) do
create_finding!(
vulnerability_id: vulnerability_with_finding.id,
project_id: project.id,
@@ -82,7 +82,7 @@ RSpec.describe ScheduleDropInvalidVulnerabilities, :migration do
vulnerability_id:, project_id:, scanner_id:, primary_identifier_id:,
name: "test", severity: 7, confidence: 7, report_type: 0,
project_fingerprint: '123qweasdzxc', location_fingerprint: 'test',
- metadata_version: 'test', raw_metadata: 'test', uuid: 'test')
+ metadata_version: 'test', raw_metadata: 'test', uuid: SecureRandom.uuid)
vulnerabilities_findings.create!(
vulnerability_id: vulnerability_id,
project_id: project_id,
diff --git a/spec/migrations/20210430134202_copy_adoption_snapshot_namespace_spec.rb b/spec/migrations/20210430134202_copy_adoption_snapshot_namespace_spec.rb
index ed18820ec8d..688fc5eb23a 100644
--- a/spec/migrations/20210430134202_copy_adoption_snapshot_namespace_spec.rb
+++ b/spec/migrations/20210430134202_copy_adoption_snapshot_namespace_spec.rb
@@ -4,7 +4,7 @@ require 'spec_helper'
require_migration!
-RSpec.describe CopyAdoptionSnapshotNamespace, :migration, schema: 20210430124630 do
+RSpec.describe CopyAdoptionSnapshotNamespace, :migration, schema: 20210430124630, feature_category: :devops_reports do
let(:namespaces_table) { table(:namespaces) }
let(:segments_table) { table(:analytics_devops_adoption_segments) }
let(:snapshots_table) { table(:analytics_devops_adoption_snapshots) }
diff --git a/spec/migrations/20210430135954_copy_adoption_segments_namespace_spec.rb b/spec/migrations/20210430135954_copy_adoption_segments_namespace_spec.rb
index 25dfaa2e314..0fb3029ec6a 100644
--- a/spec/migrations/20210430135954_copy_adoption_segments_namespace_spec.rb
+++ b/spec/migrations/20210430135954_copy_adoption_segments_namespace_spec.rb
@@ -4,7 +4,7 @@ require 'spec_helper'
require_migration!
-RSpec.describe CopyAdoptionSegmentsNamespace, :migration do
+RSpec.describe CopyAdoptionSegmentsNamespace, :migration, feature_category: :devops_reports do
let(:namespaces_table) { table(:namespaces) }
let(:segments_table) { table(:analytics_devops_adoption_segments) }
diff --git a/spec/migrations/20210503105845_add_project_value_stream_id_to_project_stages_spec.rb b/spec/migrations/20210503105845_add_project_value_stream_id_to_project_stages_spec.rb
index 187b9115ba7..07a90c2d276 100644
--- a/spec/migrations/20210503105845_add_project_value_stream_id_to_project_stages_spec.rb
+++ b/spec/migrations/20210503105845_add_project_value_stream_id_to_project_stages_spec.rb
@@ -4,7 +4,8 @@ require 'spec_helper'
require_migration!
-RSpec.describe AddProjectValueStreamIdToProjectStages, schema: 20210503105022 do
+RSpec.describe AddProjectValueStreamIdToProjectStages, schema: 20210503105022,
+ feature_category: :value_stream_management do
let(:stages) { table(:analytics_cycle_analytics_project_stages) }
let(:namespaces) { table(:namespaces) }
let(:projects) { table(:projects) }
diff --git a/spec/migrations/20210511142748_schedule_drop_invalid_vulnerabilities2_spec.rb b/spec/migrations/20210511142748_schedule_drop_invalid_vulnerabilities2_spec.rb
index dd557c833f3..b514c92c52d 100644
--- a/spec/migrations/20210511142748_schedule_drop_invalid_vulnerabilities2_spec.rb
+++ b/spec/migrations/20210511142748_schedule_drop_invalid_vulnerabilities2_spec.rb
@@ -3,35 +3,35 @@
require 'spec_helper'
require_migration!
-RSpec.describe ScheduleDropInvalidVulnerabilities2, :migration do
- let_it_be(:background_migration_jobs) { table(:background_migration_jobs) }
+RSpec.describe ScheduleDropInvalidVulnerabilities2, :migration, feature_category: :value_stream_management do
+ let!(:background_migration_jobs) { table(:background_migration_jobs) }
- let_it_be(:namespace) { table(:namespaces).create!(name: 'user', path: 'user') }
- let_it_be(:users) { table(:users) }
- let_it_be(:user) { create_user! }
- let_it_be(:project) { table(:projects).create!(id: 123, namespace_id: namespace.id) }
+ let!(:namespace) { table(:namespaces).create!(name: 'user', path: 'user') }
+ let!(:users) { table(:users) }
+ let!(:user) { create_user! }
+ let!(:project) { table(:projects).create!(id: 123, namespace_id: namespace.id) }
- let_it_be(:scanners) { table(:vulnerability_scanners) }
- let_it_be(:scanner) { scanners.create!(project_id: project.id, external_id: 'test 1', name: 'test scanner 1') }
- let_it_be(:different_scanner) { scanners.create!(project_id: project.id, external_id: 'test 2', name: 'test scanner 2') }
+ let!(:scanners) { table(:vulnerability_scanners) }
+ let!(:scanner) { scanners.create!(project_id: project.id, external_id: 'test 1', name: 'test scanner 1') }
+ let!(:different_scanner) { scanners.create!(project_id: project.id, external_id: 'test 2', name: 'test scanner 2') }
- let_it_be(:vulnerabilities) { table(:vulnerabilities) }
- let_it_be(:vulnerability_with_finding) do
+ let!(:vulnerabilities) { table(:vulnerabilities) }
+ let!(:vulnerability_with_finding) do
create_vulnerability!(
project_id: project.id,
author_id: user.id
)
end
- let_it_be(:vulnerability_without_finding) do
+ let!(:vulnerability_without_finding) do
create_vulnerability!(
project_id: project.id,
author_id: user.id
)
end
- let_it_be(:vulnerability_identifiers) { table(:vulnerability_identifiers) }
- let_it_be(:primary_identifier) do
+ let!(:vulnerability_identifiers) { table(:vulnerability_identifiers) }
+ let!(:primary_identifier) do
vulnerability_identifiers.create!(
project_id: project.id,
external_type: 'uuid-v5',
@@ -40,8 +40,8 @@ RSpec.describe ScheduleDropInvalidVulnerabilities2, :migration do
name: 'Identifier for UUIDv5')
end
- let_it_be(:vulnerabilities_findings) { table(:vulnerability_occurrences) }
- let_it_be(:finding) do
+ let!(:vulnerabilities_findings) { table(:vulnerability_occurrences) }
+ let!(:finding) do
create_finding!(
vulnerability_id: vulnerability_with_finding.id,
project_id: project.id,
@@ -88,7 +88,7 @@ RSpec.describe ScheduleDropInvalidVulnerabilities2, :migration do
vulnerability_id:, project_id:, scanner_id:, primary_identifier_id:,
name: "test", severity: 7, confidence: 7, report_type: 0,
project_fingerprint: '123qweasdzxc', location_fingerprint: 'test',
- metadata_version: 'test', raw_metadata: 'test', uuid: 'test')
+ metadata_version: 'test', raw_metadata: 'test', uuid: SecureRandom.uuid)
vulnerabilities_findings.create!(
vulnerability_id: vulnerability_id,
project_id: project_id,
diff --git a/spec/migrations/20210514063252_schedule_cleanup_orphaned_lfs_objects_projects_spec.rb b/spec/migrations/20210514063252_schedule_cleanup_orphaned_lfs_objects_projects_spec.rb
index 4ac4af19eb9..8a76f0847e9 100644
--- a/spec/migrations/20210514063252_schedule_cleanup_orphaned_lfs_objects_projects_spec.rb
+++ b/spec/migrations/20210514063252_schedule_cleanup_orphaned_lfs_objects_projects_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe ScheduleCleanupOrphanedLfsObjectsProjects, schema: 20210511165250 do
+RSpec.describe ScheduleCleanupOrphanedLfsObjectsProjects, schema: 20210511165250, feature_category: :git_lfs do
let(:lfs_objects_projects) { table(:lfs_objects_projects) }
let(:projects) { table(:projects) }
let(:namespaces) { table(:namespaces) }
diff --git a/spec/migrations/20210601073400_fix_total_stage_in_vsa_spec.rb b/spec/migrations/20210601073400_fix_total_stage_in_vsa_spec.rb
index fa4b747aaed..24a71e48035 100644
--- a/spec/migrations/20210601073400_fix_total_stage_in_vsa_spec.rb
+++ b/spec/migrations/20210601073400_fix_total_stage_in_vsa_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe FixTotalStageInVsa, :migration, schema: 20210518001450 do
+RSpec.describe FixTotalStageInVsa, :migration, schema: 20210518001450, feature_category: :devops_reports do
let(:namespaces) { table(:namespaces) }
let(:group_value_streams) { table(:analytics_cycle_analytics_group_value_streams) }
let(:group_stages) { table(:analytics_cycle_analytics_group_stages) }
diff --git a/spec/migrations/20210601080039_group_protected_environments_add_index_and_constraint_spec.rb b/spec/migrations/20210601080039_group_protected_environments_add_index_and_constraint_spec.rb
index 8d45f571969..592497805de 100644
--- a/spec/migrations/20210601080039_group_protected_environments_add_index_and_constraint_spec.rb
+++ b/spec/migrations/20210601080039_group_protected_environments_add_index_and_constraint_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe GroupProtectedEnvironmentsAddIndexAndConstraint do
+RSpec.describe GroupProtectedEnvironmentsAddIndexAndConstraint, feature_category: :continuous_delivery do
let(:migration) { described_class.new }
let(:protected_environments) { table(:protected_environments) }
let(:group) { table(:namespaces).create!(name: 'group', path: 'group') }
diff --git a/spec/migrations/20210603222333_remove_builds_email_service_from_services_spec.rb b/spec/migrations/20210603222333_remove_builds_email_service_from_services_spec.rb
index 14aa4fe8da7..706e0b14492 100644
--- a/spec/migrations/20210603222333_remove_builds_email_service_from_services_spec.rb
+++ b/spec/migrations/20210603222333_remove_builds_email_service_from_services_spec.rb
@@ -4,7 +4,7 @@ require 'spec_helper'
require_migration!
-RSpec.describe RemoveBuildsEmailServiceFromServices do
+RSpec.describe RemoveBuildsEmailServiceFromServices, feature_category: :navigation do
let(:namespaces) { table(:namespaces) }
let(:projects) { table(:projects) }
let(:services) { table(:services) }
diff --git a/spec/migrations/20210610153556_delete_legacy_operations_feature_flags_spec.rb b/spec/migrations/20210610153556_delete_legacy_operations_feature_flags_spec.rb
index 17599e75947..300c43b9133 100644
--- a/spec/migrations/20210610153556_delete_legacy_operations_feature_flags_spec.rb
+++ b/spec/migrations/20210610153556_delete_legacy_operations_feature_flags_spec.rb
@@ -4,7 +4,7 @@ require 'spec_helper'
require_migration!
-RSpec.describe DeleteLegacyOperationsFeatureFlags do
+RSpec.describe DeleteLegacyOperationsFeatureFlags, feature_category: :feature_flags do
let(:namespace) { table(:namespaces).create!(name: 'foo', path: 'bar') }
let(:project) { table(:projects).create!(namespace_id: namespace.id) }
let(:issue) { table(:issues).create!(id: 123, project_id: project.id) }
diff --git a/spec/migrations/2021061716138_cascade_delete_freeze_periods_spec.rb b/spec/migrations/2021061716138_cascade_delete_freeze_periods_spec.rb
index 8dfeacc4774..baa5fd7efbd 100644
--- a/spec/migrations/2021061716138_cascade_delete_freeze_periods_spec.rb
+++ b/spec/migrations/2021061716138_cascade_delete_freeze_periods_spec.rb
@@ -4,7 +4,7 @@ require 'spec_helper'
require_migration!
-RSpec.describe CascadeDeleteFreezePeriods, :suppress_gitlab_schemas_validate_connection do
+RSpec.describe CascadeDeleteFreezePeriods, :suppress_gitlab_schemas_validate_connection, feature_category: :continuous_delivery do
let(:namespace) { table(:namespaces).create!(name: 'deploy_freeze', path: 'deploy_freeze') }
let(:project) { table(:projects).create!(id: 1, namespace_id: namespace.id) }
let(:freeze_periods) { table(:ci_freeze_periods) }
diff --git a/spec/migrations/20210708130419_reschedule_merge_request_diff_users_background_migration_spec.rb b/spec/migrations/20210708130419_reschedule_merge_request_diff_users_background_migration_spec.rb
index 7a281611650..604504d2206 100644
--- a/spec/migrations/20210708130419_reschedule_merge_request_diff_users_background_migration_spec.rb
+++ b/spec/migrations/20210708130419_reschedule_merge_request_diff_users_background_migration_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe RescheduleMergeRequestDiffUsersBackgroundMigration, :migration do
+RSpec.describe RescheduleMergeRequestDiffUsersBackgroundMigration, :migration, feature_category: :code_review do
let(:migration) { described_class.new }
describe '#up' do
diff --git a/spec/migrations/20210713042000_fix_ci_sources_pipelines_index_names_spec.rb b/spec/migrations/20210713042000_fix_ci_sources_pipelines_index_names_spec.rb
index adec1e05533..6761b69aed5 100644
--- a/spec/migrations/20210713042000_fix_ci_sources_pipelines_index_names_spec.rb
+++ b/spec/migrations/20210713042000_fix_ci_sources_pipelines_index_names_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe FixCiSourcesPipelinesIndexNames, :migration do
+RSpec.describe FixCiSourcesPipelinesIndexNames, :migration, feature_category: :continuous_integration do
def validate_foreign_keys_and_index!
aggregate_failures do
expect(subject.foreign_key_exists?(:ci_sources_pipelines, :ci_builds, column: :source_job_id, name: 'fk_be5624bf37')).to be_truthy
diff --git a/spec/migrations/20210722042939_update_issuable_slas_where_issue_closed_spec.rb b/spec/migrations/20210722042939_update_issuable_slas_where_issue_closed_spec.rb
index 63802acceb5..5674efbf187 100644
--- a/spec/migrations/20210722042939_update_issuable_slas_where_issue_closed_spec.rb
+++ b/spec/migrations/20210722042939_update_issuable_slas_where_issue_closed_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe UpdateIssuableSlasWhereIssueClosed, :migration do
+RSpec.describe UpdateIssuableSlasWhereIssueClosed, :migration, feature_category: :team_planning do
let(:namespaces) { table(:namespaces) }
let(:projects) { table(:projects) }
let(:issues) { table(:issues) }
diff --git a/spec/migrations/20210722150102_operations_feature_flags_correct_flexible_rollout_values_spec.rb b/spec/migrations/20210722150102_operations_feature_flags_correct_flexible_rollout_values_spec.rb
index 94af2bb1e9a..098dd647b27 100644
--- a/spec/migrations/20210722150102_operations_feature_flags_correct_flexible_rollout_values_spec.rb
+++ b/spec/migrations/20210722150102_operations_feature_flags_correct_flexible_rollout_values_spec.rb
@@ -4,8 +4,8 @@ require 'spec_helper'
require_migration!
-RSpec.describe OperationsFeatureFlagsCorrectFlexibleRolloutValues, :migration do
- let_it_be(:strategies) { table(:operations_strategies) }
+RSpec.describe OperationsFeatureFlagsCorrectFlexibleRolloutValues, :migration, feature_category: :feature_flags do
+ let!(:strategies) { table(:operations_strategies) }
let(:namespace) { table(:namespaces).create!(name: 'feature_flag', path: 'feature_flag') }
let(:project) { table(:projects).create!(namespace_id: namespace.id) }
diff --git a/spec/migrations/20210804150320_create_base_work_item_types_spec.rb b/spec/migrations/20210804150320_create_base_work_item_types_spec.rb
index ae510826fe1..5626b885626 100644
--- a/spec/migrations/20210804150320_create_base_work_item_types_spec.rb
+++ b/spec/migrations/20210804150320_create_base_work_item_types_spec.rb
@@ -3,10 +3,10 @@
require 'spec_helper'
require_migration!
-RSpec.describe CreateBaseWorkItemTypes, :migration do
+RSpec.describe CreateBaseWorkItemTypes, :migration, feature_category: :team_planning do
include MigrationHelpers::WorkItemTypesHelper
- let_it_be(:work_item_types) { table(:work_item_types) }
+ let!(:work_item_types) { table(:work_item_types) }
let(:base_types) do
{
diff --git a/spec/migrations/20210805192450_update_trial_plans_ci_daily_pipeline_schedule_triggers_spec.rb b/spec/migrations/20210805192450_update_trial_plans_ci_daily_pipeline_schedule_triggers_spec.rb
index b1885b96adb..d18673db757 100644
--- a/spec/migrations/20210805192450_update_trial_plans_ci_daily_pipeline_schedule_triggers_spec.rb
+++ b/spec/migrations/20210805192450_update_trial_plans_ci_daily_pipeline_schedule_triggers_spec.rb
@@ -4,7 +4,7 @@ require 'spec_helper'
require_migration!
-RSpec.describe UpdateTrialPlansCiDailyPipelineScheduleTriggers, :migration do
+RSpec.describe UpdateTrialPlansCiDailyPipelineScheduleTriggers, :migration, feature_category: :purchase do
let!(:plans) { table(:plans) }
let!(:plan_limits) { table(:plan_limits) }
let!(:premium_trial_plan) { plans.create!(name: 'premium_trial', title: 'Premium Trial') }
diff --git a/spec/migrations/20210811122206_update_external_project_bots_spec.rb b/spec/migrations/20210811122206_update_external_project_bots_spec.rb
index 365fb8e3218..aa0bce63865 100644
--- a/spec/migrations/20210811122206_update_external_project_bots_spec.rb
+++ b/spec/migrations/20210811122206_update_external_project_bots_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe UpdateExternalProjectBots, :migration do
+RSpec.describe UpdateExternalProjectBots, :migration, feature_category: :users do
def create_user(**extra_options)
defaults = { projects_limit: 0, email: "#{extra_options[:username]}@example.com" }
diff --git a/spec/migrations/20210812013042_remove_duplicate_project_authorizations_spec.rb b/spec/migrations/20210812013042_remove_duplicate_project_authorizations_spec.rb
index c88f94c6426..fcc2e1657d0 100644
--- a/spec/migrations/20210812013042_remove_duplicate_project_authorizations_spec.rb
+++ b/spec/migrations/20210812013042_remove_duplicate_project_authorizations_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!('remove_duplicate_project_authorizations')
-RSpec.describe RemoveDuplicateProjectAuthorizations, :migration do
+RSpec.describe RemoveDuplicateProjectAuthorizations, :migration, feature_category: :authentication_and_authorization do
let(:users) { table(:users) }
let(:namespaces) { table(:namespaces) }
let(:projects) { table(:projects) }
diff --git a/spec/migrations/20210819145000_drop_temporary_columns_and_triggers_for_ci_builds_runner_session_spec.rb b/spec/migrations/20210819145000_drop_temporary_columns_and_triggers_for_ci_builds_runner_session_spec.rb
index 4ad4bea058b..e48f933ad5f 100644
--- a/spec/migrations/20210819145000_drop_temporary_columns_and_triggers_for_ci_builds_runner_session_spec.rb
+++ b/spec/migrations/20210819145000_drop_temporary_columns_and_triggers_for_ci_builds_runner_session_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe DropTemporaryColumnsAndTriggersForCiBuildsRunnerSession, :migration do
+RSpec.describe DropTemporaryColumnsAndTriggersForCiBuildsRunnerSession, :migration, feature_category: :runner do
let(:ci_builds_runner_session_table) { table(:ci_builds_runner_session) }
it 'correctly migrates up and down' do
diff --git a/spec/migrations/20210831203408_upsert_base_work_item_types_spec.rb b/spec/migrations/20210831203408_upsert_base_work_item_types_spec.rb
index 552602983d9..2a19dc025a7 100644
--- a/spec/migrations/20210831203408_upsert_base_work_item_types_spec.rb
+++ b/spec/migrations/20210831203408_upsert_base_work_item_types_spec.rb
@@ -3,10 +3,10 @@
require 'spec_helper'
require_migration!
-RSpec.describe UpsertBaseWorkItemTypes, :migration do
+RSpec.describe UpsertBaseWorkItemTypes, :migration, feature_category: :team_planning do
include MigrationHelpers::WorkItemTypesHelper
- let_it_be(:work_item_types) { table(:work_item_types) }
+ let!(:work_item_types) { table(:work_item_types) }
let(:base_types) do
{
diff --git a/spec/migrations/20210902144144_drop_temporary_columns_and_triggers_for_ci_build_needs_spec.rb b/spec/migrations/20210902144144_drop_temporary_columns_and_triggers_for_ci_build_needs_spec.rb
index 4ec3c5b7211..0d89851cac1 100644
--- a/spec/migrations/20210902144144_drop_temporary_columns_and_triggers_for_ci_build_needs_spec.rb
+++ b/spec/migrations/20210902144144_drop_temporary_columns_and_triggers_for_ci_build_needs_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe DropTemporaryColumnsAndTriggersForCiBuildNeeds do
+RSpec.describe DropTemporaryColumnsAndTriggersForCiBuildNeeds, feature_category: :pipeline_authoring do
let(:ci_build_needs_table) { table(:ci_build_needs) }
it 'correctly migrates up and down' do
diff --git a/spec/migrations/20210906100316_drop_temporary_columns_and_triggers_for_ci_build_trace_chunks_spec.rb b/spec/migrations/20210906100316_drop_temporary_columns_and_triggers_for_ci_build_trace_chunks_spec.rb
index f1408e4ecab..eef4c7bc9fd 100644
--- a/spec/migrations/20210906100316_drop_temporary_columns_and_triggers_for_ci_build_trace_chunks_spec.rb
+++ b/spec/migrations/20210906100316_drop_temporary_columns_and_triggers_for_ci_build_trace_chunks_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe DropTemporaryColumnsAndTriggersForCiBuildTraceChunks do
+RSpec.describe DropTemporaryColumnsAndTriggersForCiBuildTraceChunks, feature_category: :continuous_integration do
let(:ci_build_trace_chunks_table) { table(:ci_build_trace_chunks) }
it 'correctly migrates up and down' do
diff --git a/spec/migrations/20210906130643_drop_temporary_columns_and_triggers_for_taggings_spec.rb b/spec/migrations/20210906130643_drop_temporary_columns_and_triggers_for_taggings_spec.rb
index e4385e501b2..208cbac2ae9 100644
--- a/spec/migrations/20210906130643_drop_temporary_columns_and_triggers_for_taggings_spec.rb
+++ b/spec/migrations/20210906130643_drop_temporary_columns_and_triggers_for_taggings_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe DropTemporaryColumnsAndTriggersForTaggings do
+RSpec.describe DropTemporaryColumnsAndTriggersForTaggings, feature_category: :continuous_integration do
let(:taggings_table) { table(:taggings) }
it 'correctly migrates up and down' do
diff --git a/spec/migrations/20210907013944_cleanup_bigint_conversion_for_ci_builds_metadata_spec.rb b/spec/migrations/20210907013944_cleanup_bigint_conversion_for_ci_builds_metadata_spec.rb
index 194832fbc43..63664803fba 100644
--- a/spec/migrations/20210907013944_cleanup_bigint_conversion_for_ci_builds_metadata_spec.rb
+++ b/spec/migrations/20210907013944_cleanup_bigint_conversion_for_ci_builds_metadata_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe CleanupBigintConversionForCiBuildsMetadata do
+RSpec.describe CleanupBigintConversionForCiBuildsMetadata, feature_category: :continuous_integration do
let(:ci_builds_metadata) { table(:ci_builds_metadata) }
it 'correctly migrates up and down' do
diff --git a/spec/migrations/20210907211557_finalize_ci_builds_bigint_conversion_spec.rb b/spec/migrations/20210907211557_finalize_ci_builds_bigint_conversion_spec.rb
index c0f56da7b4f..663b90f3fa7 100644
--- a/spec/migrations/20210907211557_finalize_ci_builds_bigint_conversion_spec.rb
+++ b/spec/migrations/20210907211557_finalize_ci_builds_bigint_conversion_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe FinalizeCiBuildsBigintConversion, :migration, schema: 20210907182359 do
+RSpec.describe FinalizeCiBuildsBigintConversion, :migration, schema: 20210907182359, feature_category: :continuous_integration do
context 'with an unexpected FK fk_3f0c88d7dc' do
it 'removes the FK and migrates successfully' do
# Add the unexpected FK
diff --git a/spec/migrations/20210910194952_update_report_type_for_existing_approval_project_rules_spec.rb b/spec/migrations/20210910194952_update_report_type_for_existing_approval_project_rules_spec.rb
index 69ee10eb0d1..e9d34fad76d 100644
--- a/spec/migrations/20210910194952_update_report_type_for_existing_approval_project_rules_spec.rb
+++ b/spec/migrations/20210910194952_update_report_type_for_existing_approval_project_rules_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe UpdateReportTypeForExistingApprovalProjectRules, :migration do
+RSpec.describe UpdateReportTypeForExistingApprovalProjectRules, :migration, feature_category: :source_code_management do
using RSpec::Parameterized::TableSyntax
let(:group) { table(:namespaces).create!(name: 'user', path: 'user') }
diff --git a/spec/migrations/20210914095310_cleanup_orphan_project_access_tokens_spec.rb b/spec/migrations/20210914095310_cleanup_orphan_project_access_tokens_spec.rb
index 2b755dfe11c..a9a814f9a48 100644
--- a/spec/migrations/20210914095310_cleanup_orphan_project_access_tokens_spec.rb
+++ b/spec/migrations/20210914095310_cleanup_orphan_project_access_tokens_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe CleanupOrphanProjectAccessTokens, :migration do
+RSpec.describe CleanupOrphanProjectAccessTokens, :migration, feature_category: :users do
def create_user(**extra_options)
defaults = { state: 'active', projects_limit: 0, email: "#{extra_options[:username]}@example.com" }
diff --git a/spec/migrations/20210915022415_cleanup_bigint_conversion_for_ci_builds_spec.rb b/spec/migrations/20210915022415_cleanup_bigint_conversion_for_ci_builds_spec.rb
index cedc62a6565..808c5371018 100644
--- a/spec/migrations/20210915022415_cleanup_bigint_conversion_for_ci_builds_spec.rb
+++ b/spec/migrations/20210915022415_cleanup_bigint_conversion_for_ci_builds_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe CleanupBigintConversionForCiBuilds do
+RSpec.describe CleanupBigintConversionForCiBuilds, feature_category: :continuous_integration do
let(:ci_builds) { table(:ci_builds) }
it 'correctly migrates up and down' do
diff --git a/spec/migrations/20210918201050_remove_old_pending_jobs_for_recalculate_vulnerabilities_occurrences_uuid_spec.rb b/spec/migrations/20210918201050_remove_old_pending_jobs_for_recalculate_vulnerabilities_occurrences_uuid_spec.rb
index d1c04c5d320..b3d1b41c330 100644
--- a/spec/migrations/20210918201050_remove_old_pending_jobs_for_recalculate_vulnerabilities_occurrences_uuid_spec.rb
+++ b/spec/migrations/20210918201050_remove_old_pending_jobs_for_recalculate_vulnerabilities_occurrences_uuid_spec.rb
@@ -21,10 +21,11 @@ def create_background_migration_jobs(ids, status, created_at)
)
end
-RSpec.describe RemoveOldPendingJobsForRecalculateVulnerabilitiesOccurrencesUuid, :migration do
- let_it_be(:background_migration_jobs) { table(:background_migration_jobs) }
- let_it_be(:before_target_date) { -Float::INFINITY..(DateTime.new(2021, 8, 17, 23, 59, 59)) }
- let_it_be(:after_target_date) { (DateTime.new(2021, 8, 18, 0, 0, 0))..Float::INFINITY }
+RSpec.describe RemoveOldPendingJobsForRecalculateVulnerabilitiesOccurrencesUuid, :migration,
+feature_category: :vulnerability_management do
+ let!(:background_migration_jobs) { table(:background_migration_jobs) }
+ let!(:before_target_date) { -Float::INFINITY..(DateTime.new(2021, 8, 17, 23, 59, 59)) }
+ let!(:after_target_date) { (DateTime.new(2021, 8, 18, 0, 0, 0))..Float::INFINITY }
context 'when old RecalculateVulnerabilitiesOccurrencesUuid jobs are pending' do
before do
diff --git a/spec/migrations/20210922021816_drop_int4_columns_for_ci_job_artifacts_spec.rb b/spec/migrations/20210922021816_drop_int4_columns_for_ci_job_artifacts_spec.rb
index a6eede8a8f1..c463f69c80c 100644
--- a/spec/migrations/20210922021816_drop_int4_columns_for_ci_job_artifacts_spec.rb
+++ b/spec/migrations/20210922021816_drop_int4_columns_for_ci_job_artifacts_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe DropInt4ColumnsForCiJobArtifacts do
+RSpec.describe DropInt4ColumnsForCiJobArtifacts, feature_category: :build_artifacts do
let(:ci_job_artifacts) { table(:ci_job_artifacts) }
it 'correctly migrates up and down' do
diff --git a/spec/migrations/20210922025631_drop_int4_column_for_ci_sources_pipelines_spec.rb b/spec/migrations/20210922025631_drop_int4_column_for_ci_sources_pipelines_spec.rb
index 730c9ade1fb..6b0c3a6db9a 100644
--- a/spec/migrations/20210922025631_drop_int4_column_for_ci_sources_pipelines_spec.rb
+++ b/spec/migrations/20210922025631_drop_int4_column_for_ci_sources_pipelines_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe DropInt4ColumnForCiSourcesPipelines do
+RSpec.describe DropInt4ColumnForCiSourcesPipelines, feature_category: :pipeline_authoring do
let(:ci_sources_pipelines) { table(:ci_sources_pipelines) }
it 'correctly migrates up and down' do
diff --git a/spec/migrations/20210922082019_drop_int4_column_for_events_spec.rb b/spec/migrations/20210922082019_drop_int4_column_for_events_spec.rb
index e460612a7d5..f615c8bb50e 100644
--- a/spec/migrations/20210922082019_drop_int4_column_for_events_spec.rb
+++ b/spec/migrations/20210922082019_drop_int4_column_for_events_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe DropInt4ColumnForEvents do
+RSpec.describe DropInt4ColumnForEvents, feature_category: :users do
let(:events) { table(:events) }
it 'correctly migrates up and down' do
diff --git a/spec/migrations/20210922091402_drop_int4_column_for_push_event_payloads_spec.rb b/spec/migrations/20210922091402_drop_int4_column_for_push_event_payloads_spec.rb
index 8c89cd19f7f..5c39e7530ff 100644
--- a/spec/migrations/20210922091402_drop_int4_column_for_push_event_payloads_spec.rb
+++ b/spec/migrations/20210922091402_drop_int4_column_for_push_event_payloads_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe DropInt4ColumnForPushEventPayloads do
+RSpec.describe DropInt4ColumnForPushEventPayloads, feature_category: :users do
let(:push_event_payloads) { table(:push_event_payloads) }
it 'correctly migrates up and down' do
diff --git a/spec/migrations/20211006060436_schedule_populate_topics_total_projects_count_cache_spec.rb b/spec/migrations/20211006060436_schedule_populate_topics_total_projects_count_cache_spec.rb
index 09ce0858b12..2f3903a20a9 100644
--- a/spec/migrations/20211006060436_schedule_populate_topics_total_projects_count_cache_spec.rb
+++ b/spec/migrations/20211006060436_schedule_populate_topics_total_projects_count_cache_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe SchedulePopulateTopicsTotalProjectsCountCache do
+RSpec.describe SchedulePopulateTopicsTotalProjectsCountCache, feature_category: :projects do
let(:topics) { table(:topics) }
let!(:topic_1) { topics.create!(name: 'Topic1') }
let!(:topic_2) { topics.create!(name: 'Topic2') }
diff --git a/spec/migrations/20211012134316_clean_up_migrate_merge_request_diff_commit_users_spec.rb b/spec/migrations/20211012134316_clean_up_migrate_merge_request_diff_commit_users_spec.rb
index 910e6d1d91b..f627ea825b3 100644
--- a/spec/migrations/20211012134316_clean_up_migrate_merge_request_diff_commit_users_spec.rb
+++ b/spec/migrations/20211012134316_clean_up_migrate_merge_request_diff_commit_users_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration! 'clean_up_migrate_merge_request_diff_commit_users'
-RSpec.describe CleanUpMigrateMergeRequestDiffCommitUsers, :migration do
+RSpec.describe CleanUpMigrateMergeRequestDiffCommitUsers, :migration, feature_category: :code_review do
describe '#up' do
context 'when there are pending jobs' do
it 'processes the jobs immediately' do
diff --git a/spec/migrations/20211018152654_schedule_remove_duplicate_vulnerabilities_findings3_spec.rb b/spec/migrations/20211018152654_schedule_remove_duplicate_vulnerabilities_findings3_spec.rb
index 95c5be2fc30..3e8176a36a1 100644
--- a/spec/migrations/20211018152654_schedule_remove_duplicate_vulnerabilities_findings3_spec.rb
+++ b/spec/migrations/20211018152654_schedule_remove_duplicate_vulnerabilities_findings3_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
require_migration!('schedule_remove_duplicate_vulnerabilities_findings3')
-RSpec.describe ScheduleRemoveDuplicateVulnerabilitiesFindings3, :migration do
+RSpec.describe ScheduleRemoveDuplicateVulnerabilitiesFindings3, :migration, feature_category: :vulnerability_management do
let(:namespace) { table(:namespaces).create!(name: 'user', path: 'user') }
let(:users) { table(:users) }
let(:user) { create_user! }
@@ -88,7 +88,6 @@ RSpec.describe ScheduleRemoveDuplicateVulnerabilitiesFindings3, :migration do
let!(:unrelated_finding) do
create_finding!(
id: 9999999,
- uuid: "unreleated_finding",
vulnerability_id: nil,
report_type: 1,
location_fingerprint: 'random_location_fingerprint',
@@ -131,11 +130,10 @@ RSpec.describe ScheduleRemoveDuplicateVulnerabilitiesFindings3, :migration do
# rubocop:disable Metrics/ParameterLists
def create_finding!(
- id: nil,
- vulnerability_id:, project_id:, scanner_id:, primary_identifier_id:,
+ vulnerability_id:, project_id:, scanner_id:, primary_identifier_id:, id: nil,
name: "test", severity: 7, confidence: 7, report_type: 0,
project_fingerprint: '123qweasdzxc', location_fingerprint: 'test',
- metadata_version: 'test', raw_metadata: 'test', uuid: 'test')
+ metadata_version: 'test', raw_metadata: 'test', uuid: SecureRandom.uuid)
vulnerability_findings.create!({
id: id,
vulnerability_id: vulnerability_id,
diff --git a/spec/migrations/20211028155449_schedule_fix_merge_request_diff_commit_users_migration_spec.rb b/spec/migrations/20211028155449_schedule_fix_merge_request_diff_commit_users_migration_spec.rb
index 6511f554436..c7a0b938ca1 100644
--- a/spec/migrations/20211028155449_schedule_fix_merge_request_diff_commit_users_migration_spec.rb
+++ b/spec/migrations/20211028155449_schedule_fix_merge_request_diff_commit_users_migration_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration! 'schedule_fix_merge_request_diff_commit_users_migration'
-RSpec.describe ScheduleFixMergeRequestDiffCommitUsersMigration, :migration do
+RSpec.describe ScheduleFixMergeRequestDiffCommitUsersMigration, :migration, feature_category: :code_review do
let(:migration) { described_class.new }
let(:namespaces) { table(:namespaces) }
let(:projects) { table(:projects) }
diff --git a/spec/migrations/20211101222614_consume_remaining_user_namespace_jobs_spec.rb b/spec/migrations/20211101222614_consume_remaining_user_namespace_jobs_spec.rb
index d78ecc26ebf..1688ebf7cb1 100644
--- a/spec/migrations/20211101222614_consume_remaining_user_namespace_jobs_spec.rb
+++ b/spec/migrations/20211101222614_consume_remaining_user_namespace_jobs_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe ConsumeRemainingUserNamespaceJobs do
+RSpec.describe ConsumeRemainingUserNamespaceJobs, feature_category: :subgroups do
let(:namespaces) { table(:namespaces) }
let!(:namespace) { namespaces.create!(name: 'gitlab', path: 'gitlab-org', type: nil) }
diff --git a/spec/migrations/20211110143306_add_not_null_constraint_to_security_findings_uuid_spec.rb b/spec/migrations/20211110143306_add_not_null_constraint_to_security_findings_uuid_spec.rb
index 946fbf7f568..3b69169b2d6 100644
--- a/spec/migrations/20211110143306_add_not_null_constraint_to_security_findings_uuid_spec.rb
+++ b/spec/migrations/20211110143306_add_not_null_constraint_to_security_findings_uuid_spec.rb
@@ -2,9 +2,9 @@
require 'spec_helper'
require_migration!
-RSpec.describe AddNotNullConstraintToSecurityFindingsUuid do
- let_it_be(:security_findings) { table(:security_findings) }
- let_it_be(:migration) { described_class.new }
+RSpec.describe AddNotNullConstraintToSecurityFindingsUuid, feature_category: :vulnerability_management do
+ let!(:security_findings) { table(:security_findings) }
+ let!(:migration) { described_class.new }
before do
allow(migration).to receive(:transaction_open?).and_return(false)
diff --git a/spec/migrations/20211110151350_schedule_drop_invalid_security_findings_spec.rb b/spec/migrations/20211110151350_schedule_drop_invalid_security_findings_spec.rb
index b35cf5cbf4c..d05828112e6 100644
--- a/spec/migrations/20211110151350_schedule_drop_invalid_security_findings_spec.rb
+++ b/spec/migrations/20211110151350_schedule_drop_invalid_security_findings_spec.rb
@@ -3,20 +3,21 @@
require 'spec_helper'
require_migration!
-RSpec.describe ScheduleDropInvalidSecurityFindings, :migration, schema: 20211108211434 do
- let_it_be(:background_migration_jobs) { table(:background_migration_jobs) }
+RSpec.describe ScheduleDropInvalidSecurityFindings, :migration, :suppress_gitlab_schemas_validate_connection, schema: 20211108211434,
+ feature_category: :vulnerability_management do
+ let!(:background_migration_jobs) { table(:background_migration_jobs) }
- let_it_be(:namespace) { table(:namespaces).create!(name: 'user', path: 'user', type: Namespaces::UserNamespace.sti_name) }
- let_it_be(:project) { table(:projects).create!(namespace_id: namespace.id) }
+ let!(:namespace) { table(:namespaces).create!(name: 'user', path: 'user', type: Namespaces::UserNamespace.sti_name) }
+ let!(:project) { table(:projects).create!(namespace_id: namespace.id) }
- let_it_be(:pipelines) { table(:ci_pipelines) }
- let_it_be(:pipeline) { pipelines.create!(project_id: project.id) }
+ let!(:pipelines) { table(:ci_pipelines) }
+ let!(:pipeline) { pipelines.create!(project_id: project.id) }
- let_it_be(:ci_builds) { table(:ci_builds) }
- let_it_be(:ci_build) { ci_builds.create! }
+ let!(:ci_builds) { table(:ci_builds) }
+ let!(:ci_build) { ci_builds.create! }
- let_it_be(:security_scans) { table(:security_scans) }
- let_it_be(:security_scan) do
+ let!(:security_scans) { table(:security_scans) }
+ let!(:security_scan) do
security_scans.create!(
scan_type: 1,
status: 1,
@@ -26,11 +27,11 @@ RSpec.describe ScheduleDropInvalidSecurityFindings, :migration, schema: 20211108
)
end
- let_it_be(:vulnerability_scanners) { table(:vulnerability_scanners) }
- let_it_be(:vulnerability_scanner) { vulnerability_scanners.create!(project_id: project.id, external_id: 'test 1', name: 'test scanner 1') }
+ let!(:vulnerability_scanners) { table(:vulnerability_scanners) }
+ let!(:vulnerability_scanner) { vulnerability_scanners.create!(project_id: project.id, external_id: 'test 1', name: 'test scanner 1') }
- let_it_be(:security_findings) { table(:security_findings) }
- let_it_be(:security_finding_without_uuid) do
+ let!(:security_findings) { table(:security_findings) }
+ let!(:security_finding_without_uuid) do
security_findings.create!(
severity: 1,
confidence: 1,
@@ -40,7 +41,7 @@ RSpec.describe ScheduleDropInvalidSecurityFindings, :migration, schema: 20211108
)
end
- let_it_be(:security_finding_with_uuid) do
+ let!(:security_finding_with_uuid) do
security_findings.create!(
severity: 1,
confidence: 1,
diff --git a/spec/migrations/20211116111644_schedule_remove_occurrence_pipelines_and_duplicate_vulnerabilities_findings_spec.rb b/spec/migrations/20211116111644_schedule_remove_occurrence_pipelines_and_duplicate_vulnerabilities_findings_spec.rb
index cf6a033b4b8..18513656029 100644
--- a/spec/migrations/20211116111644_schedule_remove_occurrence_pipelines_and_duplicate_vulnerabilities_findings_spec.rb
+++ b/spec/migrations/20211116111644_schedule_remove_occurrence_pipelines_and_duplicate_vulnerabilities_findings_spec.rb
@@ -4,23 +4,23 @@ require 'spec_helper'
require_migration!
RSpec.describe ScheduleRemoveOccurrencePipelinesAndDuplicateVulnerabilitiesFindings,
- :suppress_gitlab_schemas_validate_connection, :migration do
- let_it_be(:background_migration_jobs) { table(:background_migration_jobs) }
- let_it_be(:namespace) { table(:namespaces).create!(name: 'user', path: 'user') }
- let_it_be(:users) { table(:users) }
- let_it_be(:user) { create_user! }
- let_it_be(:project) { table(:projects).create!(id: 14219619, namespace_id: namespace.id) }
- let_it_be(:pipelines) { table(:ci_pipelines) }
- let_it_be(:scanners) { table(:vulnerability_scanners) }
- let_it_be(:scanner1) { scanners.create!(project_id: project.id, external_id: 'test 1', name: 'test scanner 1') }
- let_it_be(:scanner2) { scanners.create!(project_id: project.id, external_id: 'test 2', name: 'test scanner 2') }
- let_it_be(:scanner3) { scanners.create!(project_id: project.id, external_id: 'test 3', name: 'test scanner 3') }
- let_it_be(:unrelated_scanner) { scanners.create!(project_id: project.id, external_id: 'unreleated_scanner', name: 'unrelated scanner') }
- let_it_be(:vulnerabilities) { table(:vulnerabilities) }
- let_it_be(:vulnerability_findings) { table(:vulnerability_occurrences) }
- let_it_be(:vulnerability_finding_pipelines) { table(:vulnerability_occurrence_pipelines) }
- let_it_be(:vulnerability_identifiers) { table(:vulnerability_identifiers) }
- let_it_be(:vulnerability_identifier) do
+ :suppress_gitlab_schemas_validate_connection, :migration, feature_category: :vulnerability_management do
+ let!(:background_migration_jobs) { table(:background_migration_jobs) }
+ let!(:namespace) { table(:namespaces).create!(name: 'user', path: 'user') }
+ let!(:users) { table(:users) }
+ let!(:user) { create_user! }
+ let!(:project) { table(:projects).create!(id: 14219619, namespace_id: namespace.id) }
+ let!(:pipelines) { table(:ci_pipelines) }
+ let!(:scanners) { table(:vulnerability_scanners) }
+ let!(:scanner1) { scanners.create!(project_id: project.id, external_id: 'test 1', name: 'test scanner 1') }
+ let!(:scanner2) { scanners.create!(project_id: project.id, external_id: 'test 2', name: 'test scanner 2') }
+ let!(:scanner3) { scanners.create!(project_id: project.id, external_id: 'test 3', name: 'test scanner 3') }
+ let!(:unrelated_scanner) { scanners.create!(project_id: project.id, external_id: 'unreleated_scanner', name: 'unrelated scanner') }
+ let!(:vulnerabilities) { table(:vulnerabilities) }
+ let!(:vulnerability_findings) { table(:vulnerability_occurrences) }
+ let!(:vulnerability_finding_pipelines) { table(:vulnerability_occurrence_pipelines) }
+ let!(:vulnerability_identifiers) { table(:vulnerability_identifiers) }
+ let!(:vulnerability_identifier) do
vulnerability_identifiers.create!(
id: 1244459,
project_id: project.id,
@@ -30,14 +30,14 @@ RSpec.describe ScheduleRemoveOccurrencePipelinesAndDuplicateVulnerabilitiesFindi
name: 'vulnerability identifier')
end
- let_it_be(:vulnerability_for_first_duplicate) do
+ let!(:vulnerability_for_first_duplicate) do
create_vulnerability!(
project_id: project.id,
author_id: user.id
)
end
- let_it_be(:first_finding_duplicate) do
+ let!(:first_finding_duplicate) do
create_finding!(
id: 5606961,
uuid: "bd95c085-71aa-51d7-9bb6-08ae669c262e",
@@ -50,14 +50,14 @@ RSpec.describe ScheduleRemoveOccurrencePipelinesAndDuplicateVulnerabilitiesFindi
)
end
- let_it_be(:vulnerability_for_second_duplicate) do
+ let!(:vulnerability_for_second_duplicate) do
create_vulnerability!(
project_id: project.id,
author_id: user.id
)
end
- let_it_be(:second_finding_duplicate) do
+ let!(:second_finding_duplicate) do
create_finding!(
id: 8765432,
uuid: "5b714f58-1176-5b26-8fd5-e11dfcb031b5",
@@ -70,14 +70,14 @@ RSpec.describe ScheduleRemoveOccurrencePipelinesAndDuplicateVulnerabilitiesFindi
)
end
- let_it_be(:vulnerability_for_third_duplicate) do
+ let!(:vulnerability_for_third_duplicate) do
create_vulnerability!(
project_id: project.id,
author_id: user.id
)
end
- let_it_be(:third_finding_duplicate) do
+ let!(:third_finding_duplicate) do
create_finding!(
id: 8832995,
uuid: "cfe435fa-b25b-5199-a56d-7b007cc9e2d4",
@@ -90,10 +90,9 @@ RSpec.describe ScheduleRemoveOccurrencePipelinesAndDuplicateVulnerabilitiesFindi
)
end
- let_it_be(:unrelated_finding) do
+ let!(:unrelated_finding) do
create_finding!(
id: 9999999,
- uuid: "unreleated_finding",
vulnerability_id: nil,
report_type: 1,
location_fingerprint: 'random_location_fingerprint',
@@ -149,11 +148,10 @@ RSpec.describe ScheduleRemoveOccurrencePipelinesAndDuplicateVulnerabilitiesFindi
# rubocop:disable Metrics/ParameterLists
def create_finding!(
- id: nil,
- vulnerability_id:, project_id:, scanner_id:, primary_identifier_id:,
+ vulnerability_id:, project_id:, scanner_id:, primary_identifier_id:, id: nil,
name: "test", severity: 7, confidence: 7, report_type: 0,
project_fingerprint: '123qweasdzxc', location_fingerprint: 'test',
- metadata_version: 'test', raw_metadata: 'test', uuid: 'test')
+ metadata_version: 'test', raw_metadata: 'test', uuid: SecureRandom.uuid)
params = {
vulnerability_id: vulnerability_id,
project_id: project_id,
diff --git a/spec/migrations/20211117084814_migrate_remaining_u2f_registrations_spec.rb b/spec/migrations/20211117084814_migrate_remaining_u2f_registrations_spec.rb
index ef6dd94d9e3..bfe2b661a31 100644
--- a/spec/migrations/20211117084814_migrate_remaining_u2f_registrations_spec.rb
+++ b/spec/migrations/20211117084814_migrate_remaining_u2f_registrations_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe MigrateRemainingU2fRegistrations, :migration do
+RSpec.describe MigrateRemainingU2fRegistrations, :migration, feature_category: :authentication_and_authorization do
let(:u2f_registrations) { table(:u2f_registrations) }
let(:webauthn_registrations) { table(:webauthn_registrations) }
let(:users) { table(:users) }
diff --git a/spec/migrations/20211126115449_encrypt_static_objects_external_storage_auth_token_spec.rb b/spec/migrations/20211126115449_encrypt_static_objects_external_storage_auth_token_spec.rb
index bf4094eaa49..09a8bb44d88 100644
--- a/spec/migrations/20211126115449_encrypt_static_objects_external_storage_auth_token_spec.rb
+++ b/spec/migrations/20211126115449_encrypt_static_objects_external_storage_auth_token_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe EncryptStaticObjectsExternalStorageAuthToken, :migration do
+RSpec.describe EncryptStaticObjectsExternalStorageAuthToken, :migration, feature_category: :source_code_management do
let(:application_settings) do
Class.new(ActiveRecord::Base) do
self.table_name = 'application_settings'
diff --git a/spec/migrations/20211126204445_add_task_to_work_item_types_spec.rb b/spec/migrations/20211126204445_add_task_to_work_item_types_spec.rb
index 34a6e2fdd12..32edd3615ff 100644
--- a/spec/migrations/20211126204445_add_task_to_work_item_types_spec.rb
+++ b/spec/migrations/20211126204445_add_task_to_work_item_types_spec.rb
@@ -3,10 +3,10 @@
require 'spec_helper'
require_migration!
-RSpec.describe AddTaskToWorkItemTypes, :migration do
+RSpec.describe AddTaskToWorkItemTypes, :migration, feature_category: :team_planning do
include MigrationHelpers::WorkItemTypesHelper
- let_it_be(:work_item_types) { table(:work_item_types) }
+ let!(:work_item_types) { table(:work_item_types) }
let(:base_types) do
{
diff --git a/spec/migrations/20211130165043_backfill_sequence_column_for_sprints_table_spec.rb b/spec/migrations/20211130165043_backfill_sequence_column_for_sprints_table_spec.rb
index 809ee53462f..91646da4791 100644
--- a/spec/migrations/20211130165043_backfill_sequence_column_for_sprints_table_spec.rb
+++ b/spec/migrations/20211130165043_backfill_sequence_column_for_sprints_table_spec.rb
@@ -4,7 +4,7 @@ require 'spec_helper'
require_migration!
-RSpec.describe BackfillSequenceColumnForSprintsTable, :migration, schema: 20211126042235 do
+RSpec.describe BackfillSequenceColumnForSprintsTable, :migration, schema: 20211126042235, feature_category: :team_planning do
let(:migration) { described_class.new }
let(:namespaces) { table(:namespaces) }
let(:sprints) { table(:sprints) }
diff --git a/spec/migrations/20211203091642_add_index_to_projects_on_marked_for_deletion_at_spec.rb b/spec/migrations/20211203091642_add_index_to_projects_on_marked_for_deletion_at_spec.rb
index 2e1289c58f7..7be54bc13cc 100644
--- a/spec/migrations/20211203091642_add_index_to_projects_on_marked_for_deletion_at_spec.rb
+++ b/spec/migrations/20211203091642_add_index_to_projects_on_marked_for_deletion_at_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe AddIndexToProjectsOnMarkedForDeletionAt do
+RSpec.describe AddIndexToProjectsOnMarkedForDeletionAt, feature_category: :projects do
it 'correctly migrates up and down' do
reversible_migration do |migration|
migration.before -> {
diff --git a/spec/migrations/20211207125331_remove_jobs_for_recalculate_vulnerabilities_occurrences_uuid_spec.rb b/spec/migrations/20211207125331_remove_jobs_for_recalculate_vulnerabilities_occurrences_uuid_spec.rb
index 491aad1b30b..be89ee9d2aa 100644
--- a/spec/migrations/20211207125331_remove_jobs_for_recalculate_vulnerabilities_occurrences_uuid_spec.rb
+++ b/spec/migrations/20211207125331_remove_jobs_for_recalculate_vulnerabilities_occurrences_uuid_spec.rb
@@ -20,8 +20,9 @@ def create_background_migration_jobs(ids, status, created_at)
)
end
-RSpec.describe RemoveJobsForRecalculateVulnerabilitiesOccurrencesUuid, :migration do
- let_it_be(:background_migration_jobs) { table(:background_migration_jobs) }
+RSpec.describe RemoveJobsForRecalculateVulnerabilitiesOccurrencesUuid, :migration,
+feature_category: :vulnerability_management do
+ let!(:background_migration_jobs) { table(:background_migration_jobs) }
context 'when RecalculateVulnerabilitiesOccurrencesUuid jobs are present' do
before do
diff --git a/spec/migrations/20211207135331_schedule_recalculate_uuid_on_vulnerabilities_occurrences4_spec.rb b/spec/migrations/20211207135331_schedule_recalculate_uuid_on_vulnerabilities_occurrences4_spec.rb
index 71ffcafaae1..c7401c4790d 100644
--- a/spec/migrations/20211207135331_schedule_recalculate_uuid_on_vulnerabilities_occurrences4_spec.rb
+++ b/spec/migrations/20211207135331_schedule_recalculate_uuid_on_vulnerabilities_occurrences4_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe ScheduleRecalculateUuidOnVulnerabilitiesOccurrences4 do
+RSpec.describe ScheduleRecalculateUuidOnVulnerabilitiesOccurrences4, feature_category: :vulnerability_management do
let(:namespace) { table(:namespaces).create!(name: 'user', path: 'user') }
let(:users) { table(:users) }
let(:user) { create_user! }
diff --git a/spec/migrations/20211210140629_encrypt_static_object_token_spec.rb b/spec/migrations/20211210140629_encrypt_static_object_token_spec.rb
index 289cf9a93ed..f103ee54990 100644
--- a/spec/migrations/20211210140629_encrypt_static_object_token_spec.rb
+++ b/spec/migrations/20211210140629_encrypt_static_object_token_spec.rb
@@ -3,9 +3,9 @@ require 'spec_helper'
require_migration!
-RSpec.describe EncryptStaticObjectToken, :migration do
- let_it_be(:background_migration_jobs) { table(:background_migration_jobs) }
- let_it_be(:users) { table(:users) }
+RSpec.describe EncryptStaticObjectToken, :migration, feature_category: :source_code_management do
+ let!(:background_migration_jobs) { table(:background_migration_jobs) }
+ let!(:users) { table(:users) }
let!(:user_without_tokens) { create_user!(name: 'notoken') }
let!(:user_with_plaintext_token_1) { create_user!(name: 'plaintext_1', token: 'token') }
diff --git a/spec/migrations/20211214012507_backfill_incident_issue_escalation_statuses_spec.rb b/spec/migrations/20211214012507_backfill_incident_issue_escalation_statuses_spec.rb
index 791c0595f0e..0df52df43d8 100644
--- a/spec/migrations/20211214012507_backfill_incident_issue_escalation_statuses_spec.rb
+++ b/spec/migrations/20211214012507_backfill_incident_issue_escalation_statuses_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe BackfillIncidentIssueEscalationStatuses do
+RSpec.describe BackfillIncidentIssueEscalationStatuses, feature_category: :incident_management do
let(:namespaces) { table(:namespaces) }
let(:projects) { table(:projects) }
let(:issues) { table(:issues) }
diff --git a/spec/migrations/20211217174331_mark_recalculate_finding_signatures_as_completed_spec.rb b/spec/migrations/20211217174331_mark_recalculate_finding_signatures_as_completed_spec.rb
index c5058f30d82..2d808adf578 100644
--- a/spec/migrations/20211217174331_mark_recalculate_finding_signatures_as_completed_spec.rb
+++ b/spec/migrations/20211217174331_mark_recalculate_finding_signatures_as_completed_spec.rb
@@ -20,8 +20,8 @@ def create_background_migration_jobs(ids, status, created_at)
)
end
-RSpec.describe MarkRecalculateFindingSignaturesAsCompleted, :migration do
- let_it_be(:background_migration_jobs) { table(:background_migration_jobs) }
+RSpec.describe MarkRecalculateFindingSignaturesAsCompleted, :migration, feature_category: :vulnerability_management do
+ let!(:background_migration_jobs) { table(:background_migration_jobs) }
context 'when RecalculateVulnerabilitiesOccurrencesUuid jobs are present' do
before do
diff --git a/spec/migrations/20220106111958_add_insert_or_update_vulnerability_reads_trigger_spec.rb b/spec/migrations/20220106111958_add_insert_or_update_vulnerability_reads_trigger_spec.rb
index 3e450546315..263289462ba 100644
--- a/spec/migrations/20220106111958_add_insert_or_update_vulnerability_reads_trigger_spec.rb
+++ b/spec/migrations/20220106111958_add_insert_or_update_vulnerability_reads_trigger_spec.rb
@@ -4,7 +4,7 @@ require 'spec_helper'
require_migration!
-RSpec.describe AddInsertOrUpdateVulnerabilityReadsTrigger do
+RSpec.describe AddInsertOrUpdateVulnerabilityReadsTrigger, feature_category: :vulnerability_management do
let(:migration) { described_class.new }
let(:vulnerabilities) { table(:vulnerabilities) }
let(:vulnerability_reads) { table(:vulnerability_reads) }
@@ -126,7 +126,7 @@ RSpec.describe AddInsertOrUpdateVulnerabilityReadsTrigger do
# rubocop:disable Metrics/ParameterLists
def create_finding!(
- vulnerability_id: nil, project_id:, scanner_id:, primary_identifier_id:,
+ project_id:, scanner_id:, primary_identifier_id:, vulnerability_id: nil,
name: "test", severity: 7, confidence: 7, report_type: 0,
project_fingerprint: '123qweasdzxc', location: { "image" => "alpine:3.4" }, location_fingerprint: 'test',
metadata_version: 'test', raw_metadata: 'test', uuid: SecureRandom.uuid)
diff --git a/spec/migrations/20220106112043_add_update_vulnerability_reads_trigger_spec.rb b/spec/migrations/20220106112043_add_update_vulnerability_reads_trigger_spec.rb
index d988b1e42b9..152a551bc7b 100644
--- a/spec/migrations/20220106112043_add_update_vulnerability_reads_trigger_spec.rb
+++ b/spec/migrations/20220106112043_add_update_vulnerability_reads_trigger_spec.rb
@@ -4,7 +4,7 @@ require 'spec_helper'
require_migration!
-RSpec.describe AddUpdateVulnerabilityReadsTrigger do
+RSpec.describe AddUpdateVulnerabilityReadsTrigger, feature_category: :vulnerability_management do
let(:migration) { described_class.new }
let(:vulnerability_reads) { table(:vulnerability_reads) }
let(:issue_links) { table(:vulnerability_issue_links) }
@@ -103,7 +103,7 @@ RSpec.describe AddUpdateVulnerabilityReadsTrigger do
# rubocop:disable Metrics/ParameterLists
def create_finding!(
- vulnerability_id: nil, project_id:, scanner_id:, primary_identifier_id:,
+ project_id:, scanner_id:, primary_identifier_id:, vulnerability_id: nil,
name: "test", severity: 7, confidence: 7, report_type: 0,
project_fingerprint: '123qweasdzxc', location: { "image" => "alpine:3.4" }, location_fingerprint: 'test',
metadata_version: 'test', raw_metadata: 'test', uuid: SecureRandom.uuid)
diff --git a/spec/migrations/20220106112085_add_update_vulnerability_reads_location_trigger_spec.rb b/spec/migrations/20220106112085_add_update_vulnerability_reads_location_trigger_spec.rb
index 901f1cf6041..9fc40b0b5f1 100644
--- a/spec/migrations/20220106112085_add_update_vulnerability_reads_location_trigger_spec.rb
+++ b/spec/migrations/20220106112085_add_update_vulnerability_reads_location_trigger_spec.rb
@@ -4,7 +4,7 @@ require 'spec_helper'
require_migration!
-RSpec.describe AddUpdateVulnerabilityReadsLocationTrigger do
+RSpec.describe AddUpdateVulnerabilityReadsLocationTrigger, feature_category: :vulnerability_management do
let(:migration) { described_class.new }
let(:vulnerability_reads) { table(:vulnerability_reads) }
let(:issue_links) { table(:vulnerability_issue_links) }
@@ -111,7 +111,7 @@ RSpec.describe AddUpdateVulnerabilityReadsLocationTrigger do
# rubocop:disable Metrics/ParameterLists
def create_finding!(
- vulnerability_id: nil, project_id:, scanner_id:, primary_identifier_id:,
+ project_id:, scanner_id:, primary_identifier_id:, vulnerability_id: nil,
name: "test", severity: 7, confidence: 7, report_type: 0,
project_fingerprint: '123qweasdzxc', location: { "image" => "alpine:3.4" }, location_fingerprint: 'test',
metadata_version: 'test', raw_metadata: 'test', uuid: SecureRandom.uuid)
diff --git a/spec/migrations/20220106163326_add_has_issues_on_vulnerability_reads_trigger_spec.rb b/spec/migrations/20220106163326_add_has_issues_on_vulnerability_reads_trigger_spec.rb
index 8e50b74eb9c..e58fdfb1591 100644
--- a/spec/migrations/20220106163326_add_has_issues_on_vulnerability_reads_trigger_spec.rb
+++ b/spec/migrations/20220106163326_add_has_issues_on_vulnerability_reads_trigger_spec.rb
@@ -4,7 +4,7 @@ require 'spec_helper'
require_migration!
-RSpec.describe AddHasIssuesOnVulnerabilityReadsTrigger do
+RSpec.describe AddHasIssuesOnVulnerabilityReadsTrigger, feature_category: :vulnerability_management do
let(:migration) { described_class.new }
let(:vulnerability_reads) { table(:vulnerability_reads) }
let(:issue_links) { table(:vulnerability_issue_links) }
@@ -109,7 +109,7 @@ RSpec.describe AddHasIssuesOnVulnerabilityReadsTrigger do
# rubocop:disable Metrics/ParameterLists
def create_finding!(
- vulnerability_id: nil, project_id:, scanner_id:, primary_identifier_id:,
+ project_id:, scanner_id:, primary_identifier_id:, vulnerability_id: nil,
name: "test", severity: 7, confidence: 7, report_type: 0,
project_fingerprint: '123qweasdzxc', location: { "image" => "alpine:3.4" }, location_fingerprint: 'test',
metadata_version: 'test', raw_metadata: 'test', uuid: SecureRandom.uuid)
diff --git a/spec/migrations/20220107064845_populate_vulnerability_reads_spec.rb b/spec/migrations/20220107064845_populate_vulnerability_reads_spec.rb
index 063a51227dd..1338f826537 100644
--- a/spec/migrations/20220107064845_populate_vulnerability_reads_spec.rb
+++ b/spec/migrations/20220107064845_populate_vulnerability_reads_spec.rb
@@ -3,17 +3,17 @@ require 'spec_helper'
require_migration!
-RSpec.describe PopulateVulnerabilityReads, :migration do
- let_it_be(:namespace) { table(:namespaces).create!(name: 'user', path: 'user') }
- let_it_be(:user) { table(:users).create!(email: 'author@example.com', username: 'author', projects_limit: 10) }
- let_it_be(:project) { table(:projects).create!(namespace_id: namespace.id) }
- let_it_be(:scanner) { table(:vulnerability_scanners).create!(project_id: project.id, external_id: 'test 1', name: 'test scanner 1') }
- let_it_be(:background_migration_jobs) { table(:background_migration_jobs) }
- let_it_be(:vulnerabilities) { table(:vulnerabilities) }
- let_it_be(:vulnerability_reads) { table(:vulnerability_reads) }
- let_it_be(:vulnerabilities_findings) { table(:vulnerability_occurrences) }
- let_it_be(:vulnerability_issue_links) { table(:vulnerability_issue_links) }
- let_it_be(:vulnerability_ids) { [] }
+RSpec.describe PopulateVulnerabilityReads, :migration, feature_category: :vulnerability_management do
+ let!(:namespace) { table(:namespaces).create!(name: 'user', path: 'user') }
+ let!(:user) { table(:users).create!(email: 'author@example.com', username: 'author', projects_limit: 10) }
+ let!(:project) { table(:projects).create!(namespace_id: namespace.id) }
+ let!(:scanner) { table(:vulnerability_scanners).create!(project_id: project.id, external_id: 'test 1', name: 'test scanner 1') }
+ let!(:background_migration_jobs) { table(:background_migration_jobs) }
+ let!(:vulnerabilities) { table(:vulnerabilities) }
+ let!(:vulnerability_reads) { table(:vulnerability_reads) }
+ let!(:vulnerabilities_findings) { table(:vulnerability_occurrences) }
+ let!(:vulnerability_issue_links) { table(:vulnerability_issue_links) }
+ let!(:vulnerability_ids) { [] }
before do
stub_const("#{described_class}::BATCH_SIZE", 1)
@@ -80,8 +80,7 @@ RSpec.describe PopulateVulnerabilityReads, :migration do
# rubocop:disable Metrics/ParameterLists
def create_finding!(
- id: nil,
- vulnerability_id:, project_id:, scanner_id:, primary_identifier_id:,
+ vulnerability_id:, project_id:, scanner_id:, primary_identifier_id:, id: nil,
name: "test", severity: 7, confidence: 7, report_type: 0,
project_fingerprint: '123qweasdzxc', location_fingerprint: 'test',
metadata_version: 'test', raw_metadata: 'test', uuid: SecureRandom.uuid)
diff --git a/spec/migrations/20220120094340_drop_position_from_security_findings_spec.rb b/spec/migrations/20220120094340_drop_position_from_security_findings_spec.rb
index 2ad9a8220c3..1470f2b3cad 100644
--- a/spec/migrations/20220120094340_drop_position_from_security_findings_spec.rb
+++ b/spec/migrations/20220120094340_drop_position_from_security_findings_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!('drop_position_from_security_findings')
-RSpec.describe DropPositionFromSecurityFindings do
+RSpec.describe DropPositionFromSecurityFindings, feature_category: :vulnerability_management do
let(:events) { table(:security_findings) }
it 'correctly migrates up and down' do
diff --git a/spec/migrations/20220124130028_dedup_runner_projects_spec.rb b/spec/migrations/20220124130028_dedup_runner_projects_spec.rb
index 3429ccc4df1..ee468f40908 100644
--- a/spec/migrations/20220124130028_dedup_runner_projects_spec.rb
+++ b/spec/migrations/20220124130028_dedup_runner_projects_spec.rb
@@ -3,7 +3,8 @@
require 'spec_helper'
require_migration!
-RSpec.describe DedupRunnerProjects, :migration, :suppress_gitlab_schemas_validate_connection, schema: 20220120085655 do
+RSpec.describe DedupRunnerProjects, :migration, :suppress_gitlab_schemas_validate_connection,
+schema: 20220120085655, feature_category: :runner do
let(:namespaces) { table(:namespaces) }
let(:projects) { table(:projects) }
let(:runners) { table(:ci_runners) }
diff --git a/spec/migrations/20220128155251_remove_dangling_running_builds_spec.rb b/spec/migrations/20220128155251_remove_dangling_running_builds_spec.rb
index a23f9995875..ea88cf1a2ce 100644
--- a/spec/migrations/20220128155251_remove_dangling_running_builds_spec.rb
+++ b/spec/migrations/20220128155251_remove_dangling_running_builds_spec.rb
@@ -3,7 +3,8 @@
require 'spec_helper'
require_migration!('remove_dangling_running_builds')
-RSpec.describe RemoveDanglingRunningBuilds, :suppress_gitlab_schemas_validate_connection do
+RSpec.describe RemoveDanglingRunningBuilds, :suppress_gitlab_schemas_validate_connection,
+feature_category: :continuous_integration do
let(:namespace) { table(:namespaces).create!(name: 'user', path: 'user') }
let(:project) { table(:projects).create!(namespace_id: namespace.id) }
let(:runner) { table(:ci_runners).create!(runner_type: 1) }
diff --git a/spec/migrations/20220128155814_fix_approval_rules_code_owners_rule_type_index_spec.rb b/spec/migrations/20220128155814_fix_approval_rules_code_owners_rule_type_index_spec.rb
index 1558facdf96..3f3fdd0889d 100644
--- a/spec/migrations/20220128155814_fix_approval_rules_code_owners_rule_type_index_spec.rb
+++ b/spec/migrations/20220128155814_fix_approval_rules_code_owners_rule_type_index_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!('fix_approval_rules_code_owners_rule_type_index')
-RSpec.describe FixApprovalRulesCodeOwnersRuleTypeIndex, :migration do
+RSpec.describe FixApprovalRulesCodeOwnersRuleTypeIndex, :migration, feature_category: :source_code_management do
let(:table_name) { :approval_merge_request_rules }
let(:index_name) { 'index_approval_rules_code_owners_rule_type' }
diff --git a/spec/migrations/20220202105733_delete_service_template_records_spec.rb b/spec/migrations/20220202105733_delete_service_template_records_spec.rb
index c9f6b5cbe66..41762a3a5c3 100644
--- a/spec/migrations/20220202105733_delete_service_template_records_spec.rb
+++ b/spec/migrations/20220202105733_delete_service_template_records_spec.rb
@@ -3,7 +3,7 @@ require 'spec_helper'
require_migration!
-RSpec.describe DeleteServiceTemplateRecords do
+RSpec.describe DeleteServiceTemplateRecords, feature_category: :integrations do
let(:integrations) { table(:integrations) }
let(:chat_names) { table(:chat_names) }
let(:web_hooks) { table(:web_hooks) }
diff --git a/spec/migrations/20220204095121_backfill_namespace_statistics_with_dependency_proxy_size_spec.rb b/spec/migrations/20220204095121_backfill_namespace_statistics_with_dependency_proxy_size_spec.rb
index 39398fa058d..cbae5674d78 100644
--- a/spec/migrations/20220204095121_backfill_namespace_statistics_with_dependency_proxy_size_spec.rb
+++ b/spec/migrations/20220204095121_backfill_namespace_statistics_with_dependency_proxy_size_spec.rb
@@ -3,23 +3,23 @@
require 'spec_helper'
require_migration!
-RSpec.describe BackfillNamespaceStatisticsWithDependencyProxySize do
- let_it_be(:groups) { table(:namespaces) }
- let_it_be(:group1) { groups.create!(id: 10, name: 'test1', path: 'test1', type: 'Group') }
- let_it_be(:group2) { groups.create!(id: 20, name: 'test2', path: 'test2', type: 'Group') }
- let_it_be(:group3) { groups.create!(id: 30, name: 'test3', path: 'test3', type: 'Group') }
- let_it_be(:group4) { groups.create!(id: 40, name: 'test4', path: 'test4', type: 'Group') }
+RSpec.describe BackfillNamespaceStatisticsWithDependencyProxySize, feature_category: :dependency_proxy do
+ let!(:groups) { table(:namespaces) }
+ let!(:group1) { groups.create!(id: 10, name: 'test1', path: 'test1', type: 'Group') }
+ let!(:group2) { groups.create!(id: 20, name: 'test2', path: 'test2', type: 'Group') }
+ let!(:group3) { groups.create!(id: 30, name: 'test3', path: 'test3', type: 'Group') }
+ let!(:group4) { groups.create!(id: 40, name: 'test4', path: 'test4', type: 'Group') }
- let_it_be(:dependency_proxy_blobs) { table(:dependency_proxy_blobs) }
- let_it_be(:dependency_proxy_manifests) { table(:dependency_proxy_manifests) }
+ let!(:dependency_proxy_blobs) { table(:dependency_proxy_blobs) }
+ let!(:dependency_proxy_manifests) { table(:dependency_proxy_manifests) }
- let_it_be(:group1_manifest) { create_manifest(10, 10) }
- let_it_be(:group2_manifest) { create_manifest(20, 20) }
- let_it_be(:group3_manifest) { create_manifest(30, 30) }
+ let!(:group1_manifest) { create_manifest(10, 10) }
+ let!(:group2_manifest) { create_manifest(20, 20) }
+ let!(:group3_manifest) { create_manifest(30, 30) }
- let_it_be(:group1_blob) { create_blob(10, 10) }
- let_it_be(:group2_blob) { create_blob(20, 20) }
- let_it_be(:group3_blob) { create_blob(30, 30) }
+ let!(:group1_blob) { create_blob(10, 10) }
+ let!(:group2_blob) { create_blob(20, 20) }
+ let!(:group3_blob) { create_blob(30, 30) }
describe '#up' do
it 'correctly schedules background migrations' do
diff --git a/spec/migrations/20220204194347_encrypt_integration_properties_spec.rb b/spec/migrations/20220204194347_encrypt_integration_properties_spec.rb
index 78e3b43ff76..5e728bb396c 100644
--- a/spec/migrations/20220204194347_encrypt_integration_properties_spec.rb
+++ b/spec/migrations/20220204194347_encrypt_integration_properties_spec.rb
@@ -4,7 +4,7 @@ require 'spec_helper'
require_migration!
-RSpec.describe EncryptIntegrationProperties, :migration, schema: 20220204193000 do
+RSpec.describe EncryptIntegrationProperties, :migration, schema: 20220204193000, feature_category: :integrations do
subject(:migration) { described_class.new }
let(:integrations) { table(:integrations) }
diff --git a/spec/migrations/20220208080921_schedule_migrate_personal_namespace_project_maintainer_to_owner_spec.rb b/spec/migrations/20220208080921_schedule_migrate_personal_namespace_project_maintainer_to_owner_spec.rb
index 41f3476dea8..89583d1050b 100644
--- a/spec/migrations/20220208080921_schedule_migrate_personal_namespace_project_maintainer_to_owner_spec.rb
+++ b/spec/migrations/20220208080921_schedule_migrate_personal_namespace_project_maintainer_to_owner_spec.rb
@@ -3,8 +3,8 @@
require 'spec_helper'
require_migration!
-RSpec.describe ScheduleMigratePersonalNamespaceProjectMaintainerToOwner do
- let_it_be(:migration) { described_class::MIGRATION }
+RSpec.describe ScheduleMigratePersonalNamespaceProjectMaintainerToOwner, feature_category: :subgroups do
+ let!(:migration) { described_class::MIGRATION }
describe '#up' do
it 'schedules background jobs for each batch of members' do
diff --git a/spec/migrations/20220211214605_update_integrations_trigger_type_new_on_insert_null_safe_spec.rb b/spec/migrations/20220211214605_update_integrations_trigger_type_new_on_insert_null_safe_spec.rb
index bf79ee02ff1..8a6a542bc5e 100644
--- a/spec/migrations/20220211214605_update_integrations_trigger_type_new_on_insert_null_safe_spec.rb
+++ b/spec/migrations/20220211214605_update_integrations_trigger_type_new_on_insert_null_safe_spec.rb
@@ -4,7 +4,7 @@ require 'spec_helper'
require_migration!
-RSpec.describe UpdateIntegrationsTriggerTypeNewOnInsertNullSafe, :migration do
+RSpec.describe UpdateIntegrationsTriggerTypeNewOnInsertNullSafe, :migration, feature_category: :integrations do
let(:integrations) { table(:integrations) }
before do
diff --git a/spec/migrations/20220213103859_remove_integrations_type_spec.rb b/spec/migrations/20220213103859_remove_integrations_type_spec.rb
index b1a4370700a..8f6d9b0d9b5 100644
--- a/spec/migrations/20220213103859_remove_integrations_type_spec.rb
+++ b/spec/migrations/20220213103859_remove_integrations_type_spec.rb
@@ -4,7 +4,7 @@ require 'spec_helper'
require_migration!
-RSpec.describe RemoveIntegrationsType, :migration do
+RSpec.describe RemoveIntegrationsType, :migration, feature_category: :integrations do
subject(:migration) { described_class.new }
let(:integrations) { table(:integrations) }
diff --git a/spec/migrations/20220222192524_create_not_null_constraint_releases_tag_spec.rb b/spec/migrations/20220222192524_create_not_null_constraint_releases_tag_spec.rb
index bd7d992240a..b8a37dcd6d9 100644
--- a/spec/migrations/20220222192524_create_not_null_constraint_releases_tag_spec.rb
+++ b/spec/migrations/20220222192524_create_not_null_constraint_releases_tag_spec.rb
@@ -2,9 +2,9 @@
require 'spec_helper'
require_migration!
-RSpec.describe CreateNotNullConstraintReleasesTag do
- let_it_be(:releases) { table(:releases) }
- let_it_be(:migration) { described_class.new }
+RSpec.describe CreateNotNullConstraintReleasesTag, feature_category: :release_orchestration do
+ let!(:releases) { table(:releases) }
+ let!(:migration) { described_class.new }
before do
allow(migration).to receive(:transaction_open?).and_return(false)
diff --git a/spec/migrations/20220222192525_remove_null_releases_spec.rb b/spec/migrations/20220222192525_remove_null_releases_spec.rb
index 6043f2c8cc8..ce42dea077d 100644
--- a/spec/migrations/20220222192525_remove_null_releases_spec.rb
+++ b/spec/migrations/20220222192525_remove_null_releases_spec.rb
@@ -3,7 +3,7 @@ require 'spec_helper'
require_migration!
-RSpec.describe RemoveNullReleases do
+RSpec.describe RemoveNullReleases, feature_category: :release_orchestration do
let(:releases) { table(:releases) }
before do
diff --git a/spec/migrations/20220223124428_schedule_merge_topics_with_same_name_spec.rb b/spec/migrations/20220223124428_schedule_merge_topics_with_same_name_spec.rb
index d9f6729475c..425f622581b 100644
--- a/spec/migrations/20220223124428_schedule_merge_topics_with_same_name_spec.rb
+++ b/spec/migrations/20220223124428_schedule_merge_topics_with_same_name_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe ScheduleMergeTopicsWithSameName do
+RSpec.describe ScheduleMergeTopicsWithSameName, feature_category: :projects do
let(:topics) { table(:topics) }
describe '#up' do
diff --git a/spec/migrations/20220305223212_add_security_training_providers_spec.rb b/spec/migrations/20220305223212_add_security_training_providers_spec.rb
index 3d0089aaa8d..f67db3b68cd 100644
--- a/spec/migrations/20220305223212_add_security_training_providers_spec.rb
+++ b/spec/migrations/20220305223212_add_security_training_providers_spec.rb
@@ -3,10 +3,10 @@
require 'spec_helper'
require_migration!
-RSpec.describe AddSecurityTrainingProviders, :migration do
+RSpec.describe AddSecurityTrainingProviders, :migration, feature_category: :vulnerability_management do
include MigrationHelpers::WorkItemTypesHelper
- let_it_be(:security_training_providers) { table(:security_training_providers) }
+ let!(:security_training_providers) { table(:security_training_providers) }
it 'creates default data' do
# Need to delete all as security training providers are seeded before entire test suite
diff --git a/spec/migrations/20220307192610_remove_duplicate_project_tag_releases_spec.rb b/spec/migrations/20220307192610_remove_duplicate_project_tag_releases_spec.rb
index 8a653869a9b..3bdd6e5fab9 100644
--- a/spec/migrations/20220307192610_remove_duplicate_project_tag_releases_spec.rb
+++ b/spec/migrations/20220307192610_remove_duplicate_project_tag_releases_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe RemoveDuplicateProjectTagReleases do
+RSpec.describe RemoveDuplicateProjectTagReleases, feature_category: :release_orchestration do
let(:namespaces) { table(:namespaces) }
let(:projects) { table(:projects) }
let(:users) { table(:users) }
diff --git a/spec/migrations/20220309084954_remove_leftover_external_pull_request_deletions_spec.rb b/spec/migrations/20220309084954_remove_leftover_external_pull_request_deletions_spec.rb
index c471fd86bf5..a57d3633ecf 100644
--- a/spec/migrations/20220309084954_remove_leftover_external_pull_request_deletions_spec.rb
+++ b/spec/migrations/20220309084954_remove_leftover_external_pull_request_deletions_spec.rb
@@ -3,7 +3,7 @@ require 'spec_helper'
require_migration!
-RSpec.describe RemoveLeftoverExternalPullRequestDeletions do
+RSpec.describe RemoveLeftoverExternalPullRequestDeletions, feature_category: :sharding do
let(:deleted_records) { table(:loose_foreign_keys_deleted_records) }
let(:pending_record1) { deleted_records.create!(id: 1, fully_qualified_table_name: 'public.external_pull_requests', primary_key_value: 1, status: 1) }
diff --git a/spec/migrations/20220310141349_remove_dependency_list_usage_data_from_redis_spec.rb b/spec/migrations/20220310141349_remove_dependency_list_usage_data_from_redis_spec.rb
index c00685c1397..f40f9c70833 100644
--- a/spec/migrations/20220310141349_remove_dependency_list_usage_data_from_redis_spec.rb
+++ b/spec/migrations/20220310141349_remove_dependency_list_usage_data_from_redis_spec.rb
@@ -3,7 +3,8 @@
require 'spec_helper'
require_migration!
-RSpec.describe RemoveDependencyListUsageDataFromRedis, :migration, :clean_gitlab_redis_shared_state do
+RSpec.describe RemoveDependencyListUsageDataFromRedis, :migration, :clean_gitlab_redis_shared_state,
+feature_category: :dependency_management do
let(:key) { "DEPENDENCY_LIST_USAGE_COUNTER" }
describe "#up" do
diff --git a/spec/migrations/20220315171129_cleanup_draft_data_from_faulty_regex_spec.rb b/spec/migrations/20220315171129_cleanup_draft_data_from_faulty_regex_spec.rb
index 925f1e573be..1760535e66f 100644
--- a/spec/migrations/20220315171129_cleanup_draft_data_from_faulty_regex_spec.rb
+++ b/spec/migrations/20220315171129_cleanup_draft_data_from_faulty_regex_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe CleanupDraftDataFromFaultyRegex do
+RSpec.describe CleanupDraftDataFromFaultyRegex, feature_category: :code_review do
let(:merge_requests) { table(:merge_requests) }
let!(:namespace) { table(:namespaces).create!(name: 'namespace', path: 'namespace') }
diff --git a/spec/migrations/20220316202640_populate_container_repositories_migration_plan_spec.rb b/spec/migrations/20220316202640_populate_container_repositories_migration_plan_spec.rb
index 7b5c8254163..16ebbf8b004 100644
--- a/spec/migrations/20220316202640_populate_container_repositories_migration_plan_spec.rb
+++ b/spec/migrations/20220316202640_populate_container_repositories_migration_plan_spec.rb
@@ -3,10 +3,10 @@
require 'spec_helper'
require_migration!
-RSpec.describe PopulateContainerRepositoriesMigrationPlan, :aggregate_failures do
- let_it_be(:namespaces) { table(:namespaces) }
- let_it_be(:projects) { table(:projects) }
- let_it_be(:container_repositories) { table(:container_repositories) }
+RSpec.describe PopulateContainerRepositoriesMigrationPlan, :aggregate_failures, feature_category: :container_registry do
+ let!(:namespaces) { table(:namespaces) }
+ let!(:projects) { table(:projects) }
+ let!(:container_repositories) { table(:container_repositories) }
let!(:namespace) { namespaces.create!(id: 1, name: 'namespace', path: 'namespace') }
let!(:project) { projects.create!(id: 1, name: 'project', path: 'project', namespace_id: 1) }
diff --git a/spec/migrations/20220321234317_remove_all_issuable_escalation_statuses_spec.rb b/spec/migrations/20220321234317_remove_all_issuable_escalation_statuses_spec.rb
index 44e20df1130..c645a768969 100644
--- a/spec/migrations/20220321234317_remove_all_issuable_escalation_statuses_spec.rb
+++ b/spec/migrations/20220321234317_remove_all_issuable_escalation_statuses_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe RemoveAllIssuableEscalationStatuses do
+RSpec.describe RemoveAllIssuableEscalationStatuses, feature_category: :incident_management do
let(:namespaces) { table(:namespaces) }
let(:projects) { table(:projects) }
let(:issues) { table(:issues) }
diff --git a/spec/migrations/20220322132242_update_pages_onboarding_state_spec.rb b/spec/migrations/20220322132242_update_pages_onboarding_state_spec.rb
index fbd5fe546fa..6b08b4f853d 100644
--- a/spec/migrations/20220322132242_update_pages_onboarding_state_spec.rb
+++ b/spec/migrations/20220322132242_update_pages_onboarding_state_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe UpdatePagesOnboardingState do
+RSpec.describe UpdatePagesOnboardingState, feature_category: :pages do
let(:migration) { described_class.new }
let!(:namespaces) { table(:namespaces) }
let!(:projects) { table(:projects) }
diff --git a/spec/migrations/20220324032250_migrate_shimo_confluence_service_category_spec.rb b/spec/migrations/20220324032250_migrate_shimo_confluence_service_category_spec.rb
index 38db6d51e7e..15c16a2b232 100644
--- a/spec/migrations/20220324032250_migrate_shimo_confluence_service_category_spec.rb
+++ b/spec/migrations/20220324032250_migrate_shimo_confluence_service_category_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe MigrateShimoConfluenceServiceCategory, :migration do
+RSpec.describe MigrateShimoConfluenceServiceCategory, :migration, feature_category: :integrations do
let(:namespaces) { table(:namespaces) }
let(:projects) { table(:projects) }
let(:integrations) { table(:integrations) }
diff --git a/spec/migrations/20220324165436_schedule_backfill_project_settings_spec.rb b/spec/migrations/20220324165436_schedule_backfill_project_settings_spec.rb
index a8014e73bf0..3fcfb84c214 100644
--- a/spec/migrations/20220324165436_schedule_backfill_project_settings_spec.rb
+++ b/spec/migrations/20220324165436_schedule_backfill_project_settings_spec.rb
@@ -3,8 +3,8 @@
require 'spec_helper'
require_migration!
-RSpec.describe ScheduleBackfillProjectSettings do
- let_it_be(:migration) { described_class::MIGRATION }
+RSpec.describe ScheduleBackfillProjectSettings, feature_category: :projects do
+ let!(:migration) { described_class::MIGRATION }
describe '#up' do
it 'schedules background jobs for each batch of projects' do
diff --git a/spec/migrations/20220329175119_remove_leftover_ci_job_artifact_deletions_spec.rb b/spec/migrations/20220329175119_remove_leftover_ci_job_artifact_deletions_spec.rb
index 13884007af2..555856788b7 100644
--- a/spec/migrations/20220329175119_remove_leftover_ci_job_artifact_deletions_spec.rb
+++ b/spec/migrations/20220329175119_remove_leftover_ci_job_artifact_deletions_spec.rb
@@ -3,7 +3,7 @@ require 'spec_helper'
require_migration!
-RSpec.describe RemoveLeftoverCiJobArtifactDeletions do
+RSpec.describe RemoveLeftoverCiJobArtifactDeletions, feature_category: :sharding do
let(:deleted_records) { table(:loose_foreign_keys_deleted_records) }
target_table_name = Ci::JobArtifact.table_name
diff --git a/spec/migrations/20220331133802_schedule_backfill_topics_title_spec.rb b/spec/migrations/20220331133802_schedule_backfill_topics_title_spec.rb
index 13e8c42269b..b26cd9688ae 100644
--- a/spec/migrations/20220331133802_schedule_backfill_topics_title_spec.rb
+++ b/spec/migrations/20220331133802_schedule_backfill_topics_title_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe ScheduleBackfillTopicsTitle do
+RSpec.describe ScheduleBackfillTopicsTitle, feature_category: :projects do
let(:topics) { table(:topics) }
let!(:topic1) { topics.create!(name: 'topic1') }
diff --git a/spec/migrations/20220412143552_consume_remaining_encrypt_integration_property_jobs_spec.rb b/spec/migrations/20220412143552_consume_remaining_encrypt_integration_property_jobs_spec.rb
index 4a1b68a5a85..77bf80621c4 100644
--- a/spec/migrations/20220412143552_consume_remaining_encrypt_integration_property_jobs_spec.rb
+++ b/spec/migrations/20220412143552_consume_remaining_encrypt_integration_property_jobs_spec.rb
@@ -4,7 +4,7 @@ require 'spec_helper'
require_migration!
-RSpec.describe ConsumeRemainingEncryptIntegrationPropertyJobs, :migration do
+RSpec.describe ConsumeRemainingEncryptIntegrationPropertyJobs, :migration, feature_category: :integrations do
subject(:migration) { described_class.new }
let(:integrations) { table(:integrations) }
diff --git a/spec/migrations/20220416054011_schedule_backfill_project_member_namespace_id_spec.rb b/spec/migrations/20220416054011_schedule_backfill_project_member_namespace_id_spec.rb
index 2838fc9387c..c81ecc07779 100644
--- a/spec/migrations/20220416054011_schedule_backfill_project_member_namespace_id_spec.rb
+++ b/spec/migrations/20220416054011_schedule_backfill_project_member_namespace_id_spec.rb
@@ -3,8 +3,8 @@
require 'spec_helper'
require_migration!
-RSpec.describe ScheduleBackfillProjectMemberNamespaceId do
- let_it_be(:migration) { described_class::MIGRATION }
+RSpec.describe ScheduleBackfillProjectMemberNamespaceId, feature_category: :subgroups do
+ let!(:migration) { described_class::MIGRATION }
describe '#up' do
it 'schedules background jobs for each batch of project members' do
diff --git a/spec/migrations/20220420135946_update_batched_background_migration_arguments_spec.rb b/spec/migrations/20220420135946_update_batched_background_migration_arguments_spec.rb
index 6dbee483e15..c740c893ad6 100644
--- a/spec/migrations/20220420135946_update_batched_background_migration_arguments_spec.rb
+++ b/spec/migrations/20220420135946_update_batched_background_migration_arguments_spec.rb
@@ -4,7 +4,7 @@ require 'spec_helper'
require_migration!
-RSpec.describe UpdateBatchedBackgroundMigrationArguments do
+RSpec.describe UpdateBatchedBackgroundMigrationArguments, feature_category: :database do
let(:batched_migrations) { table(:batched_background_migrations) }
before do
diff --git a/spec/migrations/20220426185933_backfill_deployments_finished_at_spec.rb b/spec/migrations/20220426185933_backfill_deployments_finished_at_spec.rb
index c79325c5077..c41e1402bf1 100644
--- a/spec/migrations/20220426185933_backfill_deployments_finished_at_spec.rb
+++ b/spec/migrations/20220426185933_backfill_deployments_finished_at_spec.rb
@@ -4,7 +4,7 @@ require 'spec_helper'
require_migration!
-RSpec.describe BackfillDeploymentsFinishedAt, :migration do
+RSpec.describe BackfillDeploymentsFinishedAt, :migration, feature_category: :continuous_delivery do
let(:deployments) { table(:deployments) }
let(:namespaces) { table(:namespaces) }
diff --git a/spec/migrations/20220502015011_clean_up_fix_merge_request_diff_commit_users_spec.rb b/spec/migrations/20220502015011_clean_up_fix_merge_request_diff_commit_users_spec.rb
index 2bc3e89a748..e316ad25214 100644
--- a/spec/migrations/20220502015011_clean_up_fix_merge_request_diff_commit_users_spec.rb
+++ b/spec/migrations/20220502015011_clean_up_fix_merge_request_diff_commit_users_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration! 'clean_up_fix_merge_request_diff_commit_users'
-RSpec.describe CleanUpFixMergeRequestDiffCommitUsers, :migration do
+RSpec.describe CleanUpFixMergeRequestDiffCommitUsers, :migration, feature_category: :code_review do
let(:namespaces) { table(:namespaces) }
let(:projects) { table(:projects) }
let(:project_namespace) { namespaces.create!(name: 'project2', path: 'project2', type: 'Project') }
diff --git a/spec/migrations/20220502173045_reset_too_many_tags_skipped_registry_imports_spec.rb b/spec/migrations/20220502173045_reset_too_many_tags_skipped_registry_imports_spec.rb
index cc4041fe151..a65e991d566 100644
--- a/spec/migrations/20220502173045_reset_too_many_tags_skipped_registry_imports_spec.rb
+++ b/spec/migrations/20220502173045_reset_too_many_tags_skipped_registry_imports_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe ResetTooManyTagsSkippedRegistryImports, :aggregate_failures do
+RSpec.describe ResetTooManyTagsSkippedRegistryImports, :aggregate_failures, feature_category: :container_registry do
let(:migration) { described_class::MIGRATION }
let(:namespaces) { table(:namespaces) }
let(:projects) { table(:projects) }
diff --git a/spec/migrations/20220503035221_add_gitlab_schema_to_batched_background_migrations_spec.rb b/spec/migrations/20220503035221_add_gitlab_schema_to_batched_background_migrations_spec.rb
index 5002c665c79..9086700c513 100644
--- a/spec/migrations/20220503035221_add_gitlab_schema_to_batched_background_migrations_spec.rb
+++ b/spec/migrations/20220503035221_add_gitlab_schema_to_batched_background_migrations_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe AddGitlabSchemaToBatchedBackgroundMigrations do
+RSpec.describe AddGitlabSchemaToBatchedBackgroundMigrations, feature_category: :database do
it 'sets gitlab_schema for existing methods to "gitlab_main" and default to NULL' do
batched_migrations = table(:batched_background_migrations)
batched_migration = batched_migrations.create!(
diff --git a/spec/migrations/20220505044348_fix_automatic_iterations_cadences_start_date_spec.rb b/spec/migrations/20220505044348_fix_automatic_iterations_cadences_start_date_spec.rb
index 575157f8331..3a6a8f5dbe5 100644
--- a/spec/migrations/20220505044348_fix_automatic_iterations_cadences_start_date_spec.rb
+++ b/spec/migrations/20220505044348_fix_automatic_iterations_cadences_start_date_spec.rb
@@ -4,7 +4,7 @@ require 'spec_helper'
require_migration!
-RSpec.describe FixAutomaticIterationsCadencesStartDate do
+RSpec.describe FixAutomaticIterationsCadencesStartDate, feature_category: :team_planning do
let(:migration) { described_class.new }
let(:namespaces) { table(:namespaces) }
let(:sprints) { table(:sprints) }
diff --git a/spec/migrations/20220505174658_update_index_on_alerts_to_exclude_null_fingerprints_spec.rb b/spec/migrations/20220505174658_update_index_on_alerts_to_exclude_null_fingerprints_spec.rb
index ec58a54b085..255d99eb8ca 100644
--- a/spec/migrations/20220505174658_update_index_on_alerts_to_exclude_null_fingerprints_spec.rb
+++ b/spec/migrations/20220505174658_update_index_on_alerts_to_exclude_null_fingerprints_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe UpdateIndexOnAlertsToExcludeNullFingerprints do
+RSpec.describe UpdateIndexOnAlertsToExcludeNullFingerprints, feature_category: :incident_management do
let(:alerts) { 'alert_management_alerts' }
let(:old_index) { described_class::OLD_INDEX_NAME }
let(:new_index) { described_class::NEW_INDEX_NAME }
diff --git a/spec/migrations/20220506154054_create_sync_namespace_details_trigger_spec.rb b/spec/migrations/20220506154054_create_sync_namespace_details_trigger_spec.rb
index 411b1eacb86..3e784761dd4 100644
--- a/spec/migrations/20220506154054_create_sync_namespace_details_trigger_spec.rb
+++ b/spec/migrations/20220506154054_create_sync_namespace_details_trigger_spec.rb
@@ -4,7 +4,7 @@ require 'spec_helper'
require_migration!
-RSpec.describe CreateSyncNamespaceDetailsTrigger do
+RSpec.describe CreateSyncNamespaceDetailsTrigger, feature_category: :subgroups do
let(:migration) { described_class.new }
let(:namespaces) { table(:namespaces) }
let(:namespace_details) { table(:namespace_details) }
diff --git a/spec/migrations/20220512190659_remove_web_hooks_web_hook_logs_web_hook_id_fk_spec.rb b/spec/migrations/20220512190659_remove_web_hooks_web_hook_logs_web_hook_id_fk_spec.rb
index fa94a73582d..66649eebf70 100644
--- a/spec/migrations/20220512190659_remove_web_hooks_web_hook_logs_web_hook_id_fk_spec.rb
+++ b/spec/migrations/20220512190659_remove_web_hooks_web_hook_logs_web_hook_id_fk_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe RemoveWebHooksWebHookLogsWebHookIdFk do
+RSpec.describe RemoveWebHooksWebHookLogsWebHookIdFk, feature_category: :integrations do
let(:web_hooks) { table(:web_hooks) }
let(:logs) { table(:web_hook_logs) }
diff --git a/spec/migrations/20220513043344_reschedule_expire_o_auth_tokens_spec.rb b/spec/migrations/20220513043344_reschedule_expire_o_auth_tokens_spec.rb
index 63fff279acc..735232dfac7 100644
--- a/spec/migrations/20220513043344_reschedule_expire_o_auth_tokens_spec.rb
+++ b/spec/migrations/20220513043344_reschedule_expire_o_auth_tokens_spec.rb
@@ -3,8 +3,8 @@
require 'spec_helper'
require_migration!
-RSpec.describe RescheduleExpireOAuthTokens do
- let_it_be(:migration) { described_class::MIGRATION }
+RSpec.describe RescheduleExpireOAuthTokens, feature_category: :authentication_and_authorization do
+ let!(:migration) { described_class::MIGRATION }
describe '#up' do
it 'schedules background jobs for each batch of oauth tokens' do
diff --git a/spec/migrations/20220523171107_drop_deploy_tokens_token_column_spec.rb b/spec/migrations/20220523171107_drop_deploy_tokens_token_column_spec.rb
index 78df6f5fc35..9cbc6dea6a9 100644
--- a/spec/migrations/20220523171107_drop_deploy_tokens_token_column_spec.rb
+++ b/spec/migrations/20220523171107_drop_deploy_tokens_token_column_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe DropDeployTokensTokenColumn do
+RSpec.describe DropDeployTokensTokenColumn, feature_category: :continuous_delivery do
let(:deploy_tokens) { table(:deploy_tokens) }
it 'correctly migrates up and down' do
diff --git a/spec/migrations/20220524074947_finalize_backfill_null_note_discussion_ids_spec.rb b/spec/migrations/20220524074947_finalize_backfill_null_note_discussion_ids_spec.rb
index 74ad4662b3e..9071c61ca0e 100644
--- a/spec/migrations/20220524074947_finalize_backfill_null_note_discussion_ids_spec.rb
+++ b/spec/migrations/20220524074947_finalize_backfill_null_note_discussion_ids_spec.rb
@@ -4,7 +4,7 @@ require 'spec_helper'
require_migration!
-RSpec.describe FinalizeBackfillNullNoteDiscussionIds, :migration do
+RSpec.describe FinalizeBackfillNullNoteDiscussionIds, :migration, feature_category: :team_planning do
subject(:migration) { described_class.new }
let(:notes) { table(:notes) }
diff --git a/spec/migrations/20220524184149_create_sync_project_namespace_details_trigger_spec.rb b/spec/migrations/20220524184149_create_sync_project_namespace_details_trigger_spec.rb
index f85a59357e1..21fddb08771 100644
--- a/spec/migrations/20220524184149_create_sync_project_namespace_details_trigger_spec.rb
+++ b/spec/migrations/20220524184149_create_sync_project_namespace_details_trigger_spec.rb
@@ -4,7 +4,7 @@ require 'spec_helper'
require_migration!
-RSpec.describe CreateSyncProjectNamespaceDetailsTrigger do
+RSpec.describe CreateSyncProjectNamespaceDetailsTrigger, feature_category: :projects do
let(:migration) { described_class.new }
let(:projects) { table(:projects) }
let(:namespaces) { table(:namespaces) }
diff --git a/spec/migrations/20220525221133_schedule_backfill_vulnerability_reads_cluster_agent_spec.rb b/spec/migrations/20220525221133_schedule_backfill_vulnerability_reads_cluster_agent_spec.rb
index 3f1a2d8c4b9..9e414157b3f 100644
--- a/spec/migrations/20220525221133_schedule_backfill_vulnerability_reads_cluster_agent_spec.rb
+++ b/spec/migrations/20220525221133_schedule_backfill_vulnerability_reads_cluster_agent_spec.rb
@@ -3,8 +3,8 @@
require 'spec_helper'
require_migration!
-RSpec.describe ScheduleBackfillVulnerabilityReadsClusterAgent do
- let_it_be(:batched_migration) { described_class::MIGRATION_NAME }
+RSpec.describe ScheduleBackfillVulnerabilityReadsClusterAgent, feature_category: :vulnerability_management do
+ let!(:batched_migration) { described_class::MIGRATION_NAME }
it 'schedules background jobs for each batch of vulnerability reads' do
reversible_migration do |migration|
diff --git a/spec/migrations/20220601110011_schedule_remove_self_managed_wiki_notes_spec.rb b/spec/migrations/20220601110011_schedule_remove_self_managed_wiki_notes_spec.rb
index 44e80980b27..63174d054d7 100644
--- a/spec/migrations/20220601110011_schedule_remove_self_managed_wiki_notes_spec.rb
+++ b/spec/migrations/20220601110011_schedule_remove_self_managed_wiki_notes_spec.rb
@@ -3,8 +3,8 @@
require 'spec_helper'
require_migration!
-RSpec.describe ScheduleRemoveSelfManagedWikiNotes do
- let_it_be(:batched_migration) { described_class::MIGRATION }
+RSpec.describe ScheduleRemoveSelfManagedWikiNotes, feature_category: :wiki do
+ let!(:batched_migration) { described_class::MIGRATION }
it 'schedules new batched migration' do
reversible_migration do |migration|
diff --git a/spec/migrations/20220601152916_add_user_id_and_ip_address_success_index_to_authentication_events_spec.rb b/spec/migrations/20220601152916_add_user_id_and_ip_address_success_index_to_authentication_events_spec.rb
index 8cb6ab23fef..1b8ec47f61b 100644
--- a/spec/migrations/20220601152916_add_user_id_and_ip_address_success_index_to_authentication_events_spec.rb
+++ b/spec/migrations/20220601152916_add_user_id_and_ip_address_success_index_to_authentication_events_spec.rb
@@ -3,7 +3,8 @@
require 'spec_helper'
require_migration!
-RSpec.describe AddUserIdAndIpAddressSuccessIndexToAuthenticationEvents do
+RSpec.describe AddUserIdAndIpAddressSuccessIndexToAuthenticationEvents,
+feature_category: :authentication_and_authorization do
let(:db) { described_class.new }
let(:old_index) { described_class::OLD_INDEX_NAME }
let(:new_index) { described_class::NEW_INDEX_NAME }
diff --git a/spec/migrations/20220606080509_fix_incorrect_job_artifacts_expire_at_spec.rb b/spec/migrations/20220606080509_fix_incorrect_job_artifacts_expire_at_spec.rb
index 5921dd64c0e..314385e35da 100644
--- a/spec/migrations/20220606080509_fix_incorrect_job_artifacts_expire_at_spec.rb
+++ b/spec/migrations/20220606080509_fix_incorrect_job_artifacts_expire_at_spec.rb
@@ -3,8 +3,8 @@
require 'spec_helper'
require_migration!
-RSpec.describe FixIncorrectJobArtifactsExpireAt, migration: :gitlab_ci do
- let_it_be(:batched_migration) { described_class::MIGRATION }
+RSpec.describe FixIncorrectJobArtifactsExpireAt, migration: :gitlab_ci, feature_category: :build_artifacts do
+ let!(:batched_migration) { described_class::MIGRATION }
it 'does not schedule background jobs when Gitlab.com is true' do
allow(Gitlab).to receive(:com?).and_return(true)
diff --git a/spec/migrations/20220606082910_add_tmp_index_for_potentially_misassociated_vulnerability_occurrences_spec.rb b/spec/migrations/20220606082910_add_tmp_index_for_potentially_misassociated_vulnerability_occurrences_spec.rb
index 1450811b3b9..b74e15d804f 100644
--- a/spec/migrations/20220606082910_add_tmp_index_for_potentially_misassociated_vulnerability_occurrences_spec.rb
+++ b/spec/migrations/20220606082910_add_tmp_index_for_potentially_misassociated_vulnerability_occurrences_spec.rb
@@ -4,7 +4,8 @@ require "spec_helper"
require_migration!
-RSpec.describe AddTmpIndexForPotentiallyMisassociatedVulnerabilityOccurrences do
+RSpec.describe AddTmpIndexForPotentiallyMisassociatedVulnerabilityOccurrences,
+feature_category: :vulnerability_management do
let(:async_index) { Gitlab::Database::AsyncIndexes::PostgresAsyncIndex }
let(:index_name) { described_class::INDEX_NAME }
diff --git a/spec/migrations/20220607082910_add_sync_tmp_index_for_potentially_misassociated_vulnerability_occurrences_spec.rb b/spec/migrations/20220607082910_add_sync_tmp_index_for_potentially_misassociated_vulnerability_occurrences_spec.rb
index 68fac1c2221..8d3ef9a46d7 100644
--- a/spec/migrations/20220607082910_add_sync_tmp_index_for_potentially_misassociated_vulnerability_occurrences_spec.rb
+++ b/spec/migrations/20220607082910_add_sync_tmp_index_for_potentially_misassociated_vulnerability_occurrences_spec.rb
@@ -4,7 +4,8 @@ require "spec_helper"
require_migration!
-RSpec.describe AddSyncTmpIndexForPotentiallyMisassociatedVulnerabilityOccurrences do
+RSpec.describe AddSyncTmpIndexForPotentiallyMisassociatedVulnerabilityOccurrences,
+feature_category: :vulnerability_management do
let(:table) { "vulnerability_occurrences" }
let(:index) { described_class::INDEX_NAME }
diff --git a/spec/migrations/20220620132300_update_last_run_date_for_iterations_cadences_spec.rb b/spec/migrations/20220620132300_update_last_run_date_for_iterations_cadences_spec.rb
index d23ca8741a2..5ac4bba4cb5 100644
--- a/spec/migrations/20220620132300_update_last_run_date_for_iterations_cadences_spec.rb
+++ b/spec/migrations/20220620132300_update_last_run_date_for_iterations_cadences_spec.rb
@@ -4,7 +4,7 @@ require 'spec_helper'
require_migration!
-RSpec.describe UpdateLastRunDateForIterationsCadences, :migration do
+RSpec.describe UpdateLastRunDateForIterationsCadences, :migration, feature_category: :team_planning do
let(:current_date) { Date.parse(ApplicationRecord.connection.execute("SELECT CURRENT_DATE").first["current_date"]) }
let(:namespaces) { table(:namespaces) }
let(:iterations_cadences) { table(:iterations_cadences) }
diff --git a/spec/migrations/20220622080547_backfill_project_statistics_with_container_registry_size_spec.rb b/spec/migrations/20220622080547_backfill_project_statistics_with_container_registry_size_spec.rb
index 52b75f0b8a9..3ca8c1709f3 100644
--- a/spec/migrations/20220622080547_backfill_project_statistics_with_container_registry_size_spec.rb
+++ b/spec/migrations/20220622080547_backfill_project_statistics_with_container_registry_size_spec.rb
@@ -3,8 +3,8 @@
require 'spec_helper'
require_migration!
-RSpec.describe BackfillProjectStatisticsWithContainerRegistrySize do
- let_it_be(:batched_migration) { described_class::MIGRATION_CLASS }
+RSpec.describe BackfillProjectStatisticsWithContainerRegistrySize, feature_category: :container_registry do
+ let!(:batched_migration) { described_class::MIGRATION_CLASS }
it 'does not schedule background jobs when Gitlab.com is false' do
allow(Gitlab).to receive(:com?).and_return(false)
diff --git a/spec/migrations/20220627090231_schedule_disable_legacy_open_source_license_for_inactive_public_projects_spec.rb b/spec/migrations/20220627090231_schedule_disable_legacy_open_source_license_for_inactive_public_projects_spec.rb
index 3e7f2a3457b..edefc378575 100644
--- a/spec/migrations/20220627090231_schedule_disable_legacy_open_source_license_for_inactive_public_projects_spec.rb
+++ b/spec/migrations/20220627090231_schedule_disable_legacy_open_source_license_for_inactive_public_projects_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe ScheduleDisableLegacyOpenSourceLicenseForInactivePublicProjects do
+RSpec.describe ScheduleDisableLegacyOpenSourceLicenseForInactivePublicProjects, feature_category: :projects do
context 'on gitlab.com' do
let(:migration) { described_class::MIGRATION }
diff --git a/spec/migrations/20220627152642_queue_update_delayed_project_removal_to_null_for_user_namespace_spec.rb b/spec/migrations/20220627152642_queue_update_delayed_project_removal_to_null_for_user_namespace_spec.rb
index 190f1c830ae..fe46d6a8608 100644
--- a/spec/migrations/20220627152642_queue_update_delayed_project_removal_to_null_for_user_namespace_spec.rb
+++ b/spec/migrations/20220627152642_queue_update_delayed_project_removal_to_null_for_user_namespace_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe QueueUpdateDelayedProjectRemovalToNullForUserNamespace do
+RSpec.describe QueueUpdateDelayedProjectRemovalToNullForUserNamespace, feature_category: :subgroups do
let(:migration) { described_class::MIGRATION }
describe '#up' do
diff --git a/spec/migrations/20220628012902_finalise_project_namespace_members_spec.rb b/spec/migrations/20220628012902_finalise_project_namespace_members_spec.rb
index 1f116cf6a7e..55cabc21997 100644
--- a/spec/migrations/20220628012902_finalise_project_namespace_members_spec.rb
+++ b/spec/migrations/20220628012902_finalise_project_namespace_members_spec.rb
@@ -3,10 +3,10 @@
require 'spec_helper'
require_migration!
-RSpec.describe FinaliseProjectNamespaceMembers, :migration do
+RSpec.describe FinaliseProjectNamespaceMembers, :migration, feature_category: :subgroups do
let(:batched_migrations) { table(:batched_background_migrations) }
- let_it_be(:migration) { described_class::MIGRATION }
+ let!(:migration) { described_class::MIGRATION }
describe '#up' do
shared_examples 'finalizes the migration' do
diff --git a/spec/migrations/20220629184402_unset_escalation_policies_for_alert_incidents_spec.rb b/spec/migrations/20220629184402_unset_escalation_policies_for_alert_incidents_spec.rb
index bd821714605..e01cca038ea 100644
--- a/spec/migrations/20220629184402_unset_escalation_policies_for_alert_incidents_spec.rb
+++ b/spec/migrations/20220629184402_unset_escalation_policies_for_alert_incidents_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe UnsetEscalationPoliciesForAlertIncidents do
+RSpec.describe UnsetEscalationPoliciesForAlertIncidents, feature_category: :incident_management do
let(:namespaces) { table(:namespaces) }
let(:projects) { table(:projects) }
let(:issues) { table(:issues) }
@@ -45,7 +45,7 @@ RSpec.describe UnsetEscalationPoliciesForAlertIncidents do
private
def create_issue
- issues.create!(project_id: project.id)
+ issues.create!(project_id: project.id, namespace_id: project.project_namespace_id)
end
def create_status(issue, policy = nil, escalations_started_at = nil)
diff --git a/spec/migrations/20220715163254_update_notes_in_past_spec.rb b/spec/migrations/20220715163254_update_notes_in_past_spec.rb
index 58e6cabc129..6250229a1f9 100644
--- a/spec/migrations/20220715163254_update_notes_in_past_spec.rb
+++ b/spec/migrations/20220715163254_update_notes_in_past_spec.rb
@@ -4,7 +4,7 @@ require 'spec_helper'
require_migration!
-RSpec.describe UpdateNotesInPast, :migration do
+RSpec.describe UpdateNotesInPast, :migration, feature_category: :team_planning do
let(:notes) { table(:notes) }
it 'updates created_at when it is too much in the past' do
diff --git a/spec/migrations/20220721031446_schedule_disable_legacy_open_source_license_for_one_member_no_repo_projects_spec.rb b/spec/migrations/20220721031446_schedule_disable_legacy_open_source_license_for_one_member_no_repo_projects_spec.rb
index b17a0215f4e..2dff9eb90cd 100644
--- a/spec/migrations/20220721031446_schedule_disable_legacy_open_source_license_for_one_member_no_repo_projects_spec.rb
+++ b/spec/migrations/20220721031446_schedule_disable_legacy_open_source_license_for_one_member_no_repo_projects_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe ScheduleDisableLegacyOpenSourceLicenseForOneMemberNoRepoProjects do
+RSpec.describe ScheduleDisableLegacyOpenSourceLicenseForOneMemberNoRepoProjects, feature_category: :projects do
context 'when on gitlab.com' do
let(:migration) { described_class::MIGRATION }
diff --git a/spec/migrations/20220722084543_schedule_disable_legacy_open_source_license_for_no_issues_no_repo_projects_spec.rb b/spec/migrations/20220722084543_schedule_disable_legacy_open_source_license_for_no_issues_no_repo_projects_spec.rb
index cb0f941aea1..a994ddad850 100644
--- a/spec/migrations/20220722084543_schedule_disable_legacy_open_source_license_for_no_issues_no_repo_projects_spec.rb
+++ b/spec/migrations/20220722084543_schedule_disable_legacy_open_source_license_for_no_issues_no_repo_projects_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe ScheduleDisableLegacyOpenSourceLicenseForNoIssuesNoRepoProjects do
+RSpec.describe ScheduleDisableLegacyOpenSourceLicenseForNoIssuesNoRepoProjects, feature_category: :projects do
context 'when on gitlab.com' do
let(:migration) { described_class::MIGRATION }
diff --git a/spec/migrations/20220722110026_reschedule_set_legacy_open_source_license_available_for_non_public_projects_spec.rb b/spec/migrations/20220722110026_reschedule_set_legacy_open_source_license_available_for_non_public_projects_spec.rb
index 99a30c7f2a9..ab246ea1b10 100644
--- a/spec/migrations/20220722110026_reschedule_set_legacy_open_source_license_available_for_non_public_projects_spec.rb
+++ b/spec/migrations/20220722110026_reschedule_set_legacy_open_source_license_available_for_non_public_projects_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe RescheduleSetLegacyOpenSourceLicenseAvailableForNonPublicProjects do
+RSpec.describe RescheduleSetLegacyOpenSourceLicenseAvailableForNonPublicProjects, feature_category: :projects do
context 'when on gitlab.com' do
let(:migration) { described_class::MIGRATION }
diff --git a/spec/migrations/20220725150127_update_jira_tracker_data_deployment_type_based_on_url_spec.rb b/spec/migrations/20220725150127_update_jira_tracker_data_deployment_type_based_on_url_spec.rb
index 2651e46ba53..1bd186a77e7 100644
--- a/spec/migrations/20220725150127_update_jira_tracker_data_deployment_type_based_on_url_spec.rb
+++ b/spec/migrations/20220725150127_update_jira_tracker_data_deployment_type_based_on_url_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe UpdateJiraTrackerDataDeploymentTypeBasedOnUrl, :migration do
+RSpec.describe UpdateJiraTrackerDataDeploymentTypeBasedOnUrl, :migration, feature_category: :integrations do
let(:integrations_table) { table(:integrations) }
let(:service_jira_cloud) { integrations_table.create!(id: 1, type_new: 'JiraService') }
let(:service_jira_server) { integrations_table.create!(id: 2, type_new: 'JiraService') }
diff --git a/spec/migrations/20220801155858_schedule_disable_legacy_open_source_licence_for_recent_public_projects_spec.rb b/spec/migrations/20220801155858_schedule_disable_legacy_open_source_licence_for_recent_public_projects_spec.rb
index fdd97f2d008..f8f1565fe4c 100644
--- a/spec/migrations/20220801155858_schedule_disable_legacy_open_source_licence_for_recent_public_projects_spec.rb
+++ b/spec/migrations/20220801155858_schedule_disable_legacy_open_source_licence_for_recent_public_projects_spec.rb
@@ -3,7 +3,8 @@
require 'spec_helper'
require_migration!
-RSpec.describe ScheduleDisableLegacyOpenSourceLicenceForRecentPublicProjects, schema: 20220801155858 do
+RSpec.describe ScheduleDisableLegacyOpenSourceLicenceForRecentPublicProjects, schema: 20220801155858,
+ feature_category: :projects do
context 'when on gitlab.com' do
let(:background_migration) { described_class::MIGRATION }
let(:migration) { described_class.new }
diff --git a/spec/migrations/20220802114351_reschedule_backfill_container_registry_size_into_project_statistics_spec.rb b/spec/migrations/20220802114351_reschedule_backfill_container_registry_size_into_project_statistics_spec.rb
index cc1c1dac4c3..35d0cdfa25e 100644
--- a/spec/migrations/20220802114351_reschedule_backfill_container_registry_size_into_project_statistics_spec.rb
+++ b/spec/migrations/20220802114351_reschedule_backfill_container_registry_size_into_project_statistics_spec.rb
@@ -3,8 +3,8 @@
require 'spec_helper'
require_migration!
-RSpec.describe RescheduleBackfillContainerRegistrySizeIntoProjectStatistics do
- let_it_be(:batched_migration) { described_class::MIGRATION_CLASS }
+RSpec.describe RescheduleBackfillContainerRegistrySizeIntoProjectStatistics, feature_category: :container_registry do
+ let!(:batched_migration) { described_class::MIGRATION_CLASS }
it 'does not schedule background jobs when Gitlab.com is false' do
allow(Gitlab).to receive(:com?).and_return(false)
diff --git a/spec/migrations/20220802204737_remove_deactivated_user_highest_role_stats_spec.rb b/spec/migrations/20220802204737_remove_deactivated_user_highest_role_stats_spec.rb
index 3ea286ca138..dd77ce503b8 100644
--- a/spec/migrations/20220802204737_remove_deactivated_user_highest_role_stats_spec.rb
+++ b/spec/migrations/20220802204737_remove_deactivated_user_highest_role_stats_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe RemoveDeactivatedUserHighestRoleStats do
+RSpec.describe RemoveDeactivatedUserHighestRoleStats, feature_category: :utilization do
let!(:users) { table(:users) }
let!(:user_highest_roles) { table(:user_highest_roles) }
diff --git a/spec/migrations/20220816163444_update_start_date_for_iterations_cadences_spec.rb b/spec/migrations/20220816163444_update_start_date_for_iterations_cadences_spec.rb
index 5a5e2362a53..25b2b5c2e18 100644
--- a/spec/migrations/20220816163444_update_start_date_for_iterations_cadences_spec.rb
+++ b/spec/migrations/20220816163444_update_start_date_for_iterations_cadences_spec.rb
@@ -4,7 +4,7 @@ require 'spec_helper'
require_migration!
-RSpec.describe UpdateStartDateForIterationsCadences, :freeze_time do
+RSpec.describe UpdateStartDateForIterationsCadences, :freeze_time, feature_category: :team_planning do
let(:migration) { described_class.new }
let(:namespaces) { table(:namespaces) }
let(:sprints) { table(:sprints) }
diff --git a/spec/migrations/20220819153725_add_vulnerability_advisory_foreign_key_to_sbom_vulnerable_component_versions_spec.rb b/spec/migrations/20220819153725_add_vulnerability_advisory_foreign_key_to_sbom_vulnerable_component_versions_spec.rb
index c53dd9de649..5a61f49485c 100644
--- a/spec/migrations/20220819153725_add_vulnerability_advisory_foreign_key_to_sbom_vulnerable_component_versions_spec.rb
+++ b/spec/migrations/20220819153725_add_vulnerability_advisory_foreign_key_to_sbom_vulnerable_component_versions_spec.rb
@@ -4,7 +4,8 @@ require "spec_helper"
require_migration!
-RSpec.describe AddVulnerabilityAdvisoryForeignKeyToSbomVulnerableComponentVersions do
+RSpec.describe AddVulnerabilityAdvisoryForeignKeyToSbomVulnerableComponentVersions,
+feature_category: :dependency_management do
let(:table) { described_class::SOURCE_TABLE }
let(:column) { described_class::COLUMN }
let(:foreign_key) { -> { described_class.new.foreign_keys_for(table, column).first } }
diff --git a/spec/migrations/20220819162852_add_sbom_component_version_foreign_key_to_sbom_vulnerable_component_versions_spec.rb b/spec/migrations/20220819162852_add_sbom_component_version_foreign_key_to_sbom_vulnerable_component_versions_spec.rb
index b9cb6891681..999c833f9e3 100644
--- a/spec/migrations/20220819162852_add_sbom_component_version_foreign_key_to_sbom_vulnerable_component_versions_spec.rb
+++ b/spec/migrations/20220819162852_add_sbom_component_version_foreign_key_to_sbom_vulnerable_component_versions_spec.rb
@@ -4,7 +4,8 @@ require "spec_helper"
require_migration!
-RSpec.describe AddSbomComponentVersionForeignKeyToSbomVulnerableComponentVersions do
+RSpec.describe AddSbomComponentVersionForeignKeyToSbomVulnerableComponentVersions,
+feature_category: :dependency_management do
let(:table) { described_class::SOURCE_TABLE }
let(:column) { described_class::COLUMN }
let(:foreign_key) { -> { described_class.new.foreign_keys_for(table, column).first } }
diff --git a/spec/migrations/20220906074449_schedule_disable_legacy_open_source_license_for_projects_less_than_one_mb_spec.rb b/spec/migrations/20220906074449_schedule_disable_legacy_open_source_license_for_projects_less_than_one_mb_spec.rb
index e4ac094ab48..852748bcdc1 100644
--- a/spec/migrations/20220906074449_schedule_disable_legacy_open_source_license_for_projects_less_than_one_mb_spec.rb
+++ b/spec/migrations/20220906074449_schedule_disable_legacy_open_source_license_for_projects_less_than_one_mb_spec.rb
@@ -3,9 +3,9 @@
require 'spec_helper'
require_migration!
-RSpec.describe ScheduleDisableLegacyOpenSourceLicenseForProjectsLessThanOneMb do
- let_it_be(:migration) { described_class.new }
- let_it_be(:post_migration) { described_class::MIGRATION }
+RSpec.describe ScheduleDisableLegacyOpenSourceLicenseForProjectsLessThanOneMb, feature_category: :projects do
+ let!(:migration) { described_class.new }
+ let!(:post_migration) { described_class::MIGRATION }
context 'when on gitlab.com' do
before do
diff --git a/spec/migrations/20220913030624_cleanup_attention_request_related_system_notes_spec.rb b/spec/migrations/20220913030624_cleanup_attention_request_related_system_notes_spec.rb
index 7338a6ab9ae..03e53a406ed 100644
--- a/spec/migrations/20220913030624_cleanup_attention_request_related_system_notes_spec.rb
+++ b/spec/migrations/20220913030624_cleanup_attention_request_related_system_notes_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe CleanupAttentionRequestRelatedSystemNotes, :migration do
+RSpec.describe CleanupAttentionRequestRelatedSystemNotes, :migration, feature_category: :team_planning do
let(:notes) { table(:notes) }
let(:system_note_metadata) { table(:system_note_metadata) }
diff --git a/spec/migrations/20220920124709_backfill_internal_on_notes_spec.rb b/spec/migrations/20220920124709_backfill_internal_on_notes_spec.rb
index f4ac6e6fc8e..6e3a058f245 100644
--- a/spec/migrations/20220920124709_backfill_internal_on_notes_spec.rb
+++ b/spec/migrations/20220920124709_backfill_internal_on_notes_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe BackfillInternalOnNotes, :migration do
+RSpec.describe BackfillInternalOnNotes, :migration, feature_category: :team_planning do
let(:migration) { described_class::MIGRATION }
describe '#up' do
diff --git a/spec/migrations/20220920180451_schedule_vulnerabilities_feedback_migration_spec.rb b/spec/migrations/20220920180451_schedule_vulnerabilities_feedback_migration_spec.rb
new file mode 100644
index 00000000000..4f2b5f6b50f
--- /dev/null
+++ b/spec/migrations/20220920180451_schedule_vulnerabilities_feedback_migration_spec.rb
@@ -0,0 +1,31 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+require_migration!
+
+RSpec.describe ScheduleVulnerabilitiesFeedbackMigration, feature_category: :vulnerability_management do
+ let(:migration) { described_class::MIGRATION }
+
+ describe '#up' do
+ it 'schedules background jobs for each batch of Vulnerabilities::Feedback' do
+ migrate!
+
+ expect(migration).to have_scheduled_batched_migration(
+ table_name: :vulnerability_feedback,
+ column_name: :id,
+ interval: described_class::DELAY_INTERVAL,
+ batch_size: described_class::BATCH_SIZE,
+ max_batch_size: described_class::MAX_BATCH_SIZE
+ )
+ end
+ 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
+end
diff --git a/spec/migrations/20220921093355_schedule_backfill_namespace_details_spec.rb b/spec/migrations/20220921093355_schedule_backfill_namespace_details_spec.rb
index 61e4af3d10c..5ac49762dbf 100644
--- a/spec/migrations/20220921093355_schedule_backfill_namespace_details_spec.rb
+++ b/spec/migrations/20220921093355_schedule_backfill_namespace_details_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe ScheduleBackfillNamespaceDetails, schema: 20220921093355 do
+RSpec.describe ScheduleBackfillNamespaceDetails, schema: 20220921093355, feature_category: :subgroups do
context 'when on gitlab.com' do
let(:background_migration) { described_class::MIGRATION }
let(:migration) { described_class.new }
diff --git a/spec/migrations/20220921144258_remove_orphan_group_token_users_spec.rb b/spec/migrations/20220921144258_remove_orphan_group_token_users_spec.rb
index 174cfda1a46..19cf3b2fb69 100644
--- a/spec/migrations/20220921144258_remove_orphan_group_token_users_spec.rb
+++ b/spec/migrations/20220921144258_remove_orphan_group_token_users_spec.rb
@@ -4,7 +4,8 @@ require 'spec_helper'
require_migration!
-RSpec.describe RemoveOrphanGroupTokenUsers, :migration, :sidekiq_inline do
+RSpec.describe RemoveOrphanGroupTokenUsers, :migration, :sidekiq_inline,
+feature_category: :authentication_and_authorization do
subject(:migration) { described_class.new }
let(:users) { table(:users) }
diff --git a/spec/migrations/20220922143143_schedule_reset_duplicate_ci_runners_token_values_spec.rb b/spec/migrations/20220922143143_schedule_reset_duplicate_ci_runners_token_values_spec.rb
index 409f7d544ee..07627725ed0 100644
--- a/spec/migrations/20220922143143_schedule_reset_duplicate_ci_runners_token_values_spec.rb
+++ b/spec/migrations/20220922143143_schedule_reset_duplicate_ci_runners_token_values_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe ScheduleResetDuplicateCiRunnersTokenValues, migration: :gitlab_ci do
+RSpec.describe ScheduleResetDuplicateCiRunnersTokenValues, feature_category: :runner_fleet, migration: :gitlab_ci do
let(:migration) { described_class::MIGRATION }
describe '#up' do
diff --git a/spec/migrations/20220922143634_schedule_reset_duplicate_ci_runners_token_encrypted_values_spec.rb b/spec/migrations/20220922143634_schedule_reset_duplicate_ci_runners_token_encrypted_values_spec.rb
index 4f3103927d5..42f200e0d6f 100644
--- a/spec/migrations/20220922143634_schedule_reset_duplicate_ci_runners_token_encrypted_values_spec.rb
+++ b/spec/migrations/20220922143634_schedule_reset_duplicate_ci_runners_token_encrypted_values_spec.rb
@@ -3,7 +3,9 @@
require 'spec_helper'
require_migration!
-RSpec.describe ScheduleResetDuplicateCiRunnersTokenEncryptedValues, migration: :gitlab_ci do
+RSpec.describe ScheduleResetDuplicateCiRunnersTokenEncryptedValues,
+ feature_category: :runner_fleet,
+ migration: :gitlab_ci do
let(:migration) { described_class::MIGRATION }
describe '#up' do
diff --git a/spec/migrations/20220928225711_schedule_update_ci_pipeline_artifacts_locked_status_spec.rb b/spec/migrations/20220928225711_schedule_update_ci_pipeline_artifacts_locked_status_spec.rb
index 7e3f8caa966..5c1b5c8f2a7 100644
--- a/spec/migrations/20220928225711_schedule_update_ci_pipeline_artifacts_locked_status_spec.rb
+++ b/spec/migrations/20220928225711_schedule_update_ci_pipeline_artifacts_locked_status_spec.rb
@@ -3,8 +3,9 @@
require 'spec_helper'
require_migration!
-RSpec.describe ScheduleUpdateCiPipelineArtifactsLockedStatus, migration: :gitlab_ci do
- let_it_be(:migration) { described_class::MIGRATION }
+RSpec.describe ScheduleUpdateCiPipelineArtifactsLockedStatus, migration: :gitlab_ci,
+ feature_category: :build_artifacts do
+ let!(:migration) { described_class::MIGRATION }
describe '#up' do
it 'schedules background jobs for each batch of ci_pipeline_artifacts' do
diff --git a/spec/migrations/20220929213730_schedule_delete_orphaned_operational_vulnerabilities_spec.rb b/spec/migrations/20220929213730_schedule_delete_orphaned_operational_vulnerabilities_spec.rb
index 9220b5e8a95..2e391868060 100644
--- a/spec/migrations/20220929213730_schedule_delete_orphaned_operational_vulnerabilities_spec.rb
+++ b/spec/migrations/20220929213730_schedule_delete_orphaned_operational_vulnerabilities_spec.rb
@@ -3,9 +3,9 @@
require 'spec_helper'
require_migration!
-RSpec.describe ScheduleDeleteOrphanedOperationalVulnerabilities do
- let_it_be(:migration) { described_class.new }
- let_it_be(:post_migration) { described_class::MIGRATION }
+RSpec.describe ScheduleDeleteOrphanedOperationalVulnerabilities, feature_category: :vulnerability_management do
+ let!(:migration) { described_class.new }
+ let!(:post_migration) { described_class::MIGRATION }
describe '#up' do
it 'schedules background jobs for each batch of vulnerabilities' do
diff --git a/spec/migrations/20221002234454_finalize_group_member_namespace_id_migration_spec.rb b/spec/migrations/20221002234454_finalize_group_member_namespace_id_migration_spec.rb
index 9c27005065d..4ff16111417 100644
--- a/spec/migrations/20221002234454_finalize_group_member_namespace_id_migration_spec.rb
+++ b/spec/migrations/20221002234454_finalize_group_member_namespace_id_migration_spec.rb
@@ -3,10 +3,10 @@
require 'spec_helper'
require_migration!
-RSpec.describe FinalizeGroupMemberNamespaceIdMigration, :migration do
+RSpec.describe FinalizeGroupMemberNamespaceIdMigration, :migration, feature_category: :subgroups do
let(:batched_migrations) { table(:batched_background_migrations) }
- let_it_be(:migration) { described_class::MIGRATION }
+ let!(:migration) { described_class::MIGRATION }
describe '#up' do
shared_examples 'finalizes the migration' do
diff --git a/spec/migrations/20221004094814_schedule_destroy_invalid_members_spec.rb b/spec/migrations/20221004094814_schedule_destroy_invalid_members_spec.rb
index 73fdfa78eb4..8bffa4b9b99 100644
--- a/spec/migrations/20221004094814_schedule_destroy_invalid_members_spec.rb
+++ b/spec/migrations/20221004094814_schedule_destroy_invalid_members_spec.rb
@@ -3,8 +3,8 @@
require 'spec_helper'
require_migration!
-RSpec.describe ScheduleDestroyInvalidMembers, :migration do
- let_it_be(:migration) { described_class::MIGRATION }
+RSpec.describe ScheduleDestroyInvalidMembers, :migration, feature_category: :subgroups do
+ let!(:migration) { described_class::MIGRATION }
describe '#up' do
it 'schedules background jobs for each batch of members' do
diff --git a/spec/migrations/20221008032350_add_password_expiration_migration_spec.rb b/spec/migrations/20221008032350_add_password_expiration_migration_spec.rb
index 05e557f1f52..1663966816c 100644
--- a/spec/migrations/20221008032350_add_password_expiration_migration_spec.rb
+++ b/spec/migrations/20221008032350_add_password_expiration_migration_spec.rb
@@ -4,7 +4,7 @@ require 'spec_helper'
require_migration!
-RSpec.describe AddPasswordExpirationMigration do
+RSpec.describe AddPasswordExpirationMigration, feature_category: :users do
let(:application_setting) { table(:application_settings).create! }
describe "#up" do
diff --git a/spec/migrations/20221012033107_add_password_last_changed_at_to_user_details_spec.rb b/spec/migrations/20221012033107_add_password_last_changed_at_to_user_details_spec.rb
index 46a7b097d02..e2c508938fd 100644
--- a/spec/migrations/20221012033107_add_password_last_changed_at_to_user_details_spec.rb
+++ b/spec/migrations/20221012033107_add_password_last_changed_at_to_user_details_spec.rb
@@ -4,10 +4,10 @@ require 'spec_helper'
require_migration!
-RSpec.describe AddPasswordLastChangedAtToUserDetails do
- let_it_be(:namespace) { table(:namespaces).create!(name: 'user', path: 'user') }
- let_it_be(:users) { table(:users) }
- let_it_be(:user) { create_user! }
+RSpec.describe AddPasswordLastChangedAtToUserDetails, feature_category: :users do
+ let!(:namespace) { table(:namespaces).create!(name: 'user', path: 'user') }
+ let!(:users) { table(:users) }
+ let!(:user) { create_user! }
let(:user_detail) { table(:user_details).create!(user_id: user.id, provisioned_by_group_id: namespace.id) }
describe "#up" do
diff --git a/spec/migrations/20221013154159_update_invalid_dormant_user_setting_spec.rb b/spec/migrations/20221013154159_update_invalid_dormant_user_setting_spec.rb
index eac71e428be..0686d9ca786 100644
--- a/spec/migrations/20221013154159_update_invalid_dormant_user_setting_spec.rb
+++ b/spec/migrations/20221013154159_update_invalid_dormant_user_setting_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe UpdateInvalidDormantUserSetting, :migration do
+RSpec.describe UpdateInvalidDormantUserSetting, :migration, feature_category: :users do
let(:settings) { table(:application_settings) }
context 'with no rows in the application_settings table' do
diff --git a/spec/migrations/20221018050323_add_objective_and_keyresult_to_work_item_types_spec.rb b/spec/migrations/20221018050323_add_objective_and_keyresult_to_work_item_types_spec.rb
index 4de897802b9..3ab33367303 100644
--- a/spec/migrations/20221018050323_add_objective_and_keyresult_to_work_item_types_spec.rb
+++ b/spec/migrations/20221018050323_add_objective_and_keyresult_to_work_item_types_spec.rb
@@ -3,10 +3,10 @@
require 'spec_helper'
require_migration!
-RSpec.describe AddObjectiveAndKeyresultToWorkItemTypes, :migration do
+RSpec.describe AddObjectiveAndKeyresultToWorkItemTypes, :migration, feature_category: :team_planning do
include MigrationHelpers::WorkItemTypesHelper
- let_it_be(:work_item_types) { table(:work_item_types) }
+ let!(:work_item_types) { table(:work_item_types) }
let(:base_types) do
{
diff --git a/spec/migrations/20221018062308_schedule_backfill_project_namespace_details_spec.rb b/spec/migrations/20221018062308_schedule_backfill_project_namespace_details_spec.rb
index 4dd6d5757ce..4175d9b1ad8 100644
--- a/spec/migrations/20221018062308_schedule_backfill_project_namespace_details_spec.rb
+++ b/spec/migrations/20221018062308_schedule_backfill_project_namespace_details_spec.rb
@@ -3,10 +3,10 @@
require 'spec_helper'
require_migration!
-RSpec.describe ScheduleBackfillProjectNamespaceDetails, schema: 20221018062308 do
+RSpec.describe ScheduleBackfillProjectNamespaceDetails, schema: 20221018062308, feature_category: :projects do
context 'when on gitlab.com' do
- let_it_be(:background_migration) { described_class::MIGRATION }
- let_it_be(:migration) { described_class.new }
+ let!(:background_migration) { described_class::MIGRATION }
+ let!(:migration) { described_class.new }
before do
migration.up
diff --git a/spec/migrations/20221018095434_schedule_disable_legacy_open_source_license_for_projects_less_than_five_mb_spec.rb b/spec/migrations/20221018095434_schedule_disable_legacy_open_source_license_for_projects_less_than_five_mb_spec.rb
new file mode 100644
index 00000000000..34bba8ed9c8
--- /dev/null
+++ b/spec/migrations/20221018095434_schedule_disable_legacy_open_source_license_for_projects_less_than_five_mb_spec.rb
@@ -0,0 +1,62 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+require_migration!
+
+RSpec.describe ScheduleDisableLegacyOpenSourceLicenseForProjectsLessThanFiveMb, feature_category: :projects do
+ let!(:migration) { described_class.new }
+ let!(:post_migration) { described_class::MIGRATION }
+
+ context 'when on gitlab.com' do
+ before do
+ allow(Gitlab).to receive(:com?).and_return(true)
+ end
+
+ describe '#up' do
+ it 'schedules background jobs for each batch of project_settings' do
+ migration.up
+
+ expect(post_migration).to(
+ have_scheduled_batched_migration(
+ table_name: :project_settings,
+ column_name: :project_id,
+ interval: described_class::INTERVAL,
+ batch_size: described_class::BATCH_SIZE,
+ max_batch_size: described_class::MAX_BATCH_SIZE,
+ sub_batch_size: described_class::SUB_BATCH_SIZE
+ )
+ )
+ end
+ end
+
+ describe '#down' do
+ it 'deletes all batched migration records' do
+ migration.down
+
+ expect(post_migration).not_to have_scheduled_batched_migration
+ end
+ end
+ end
+
+ context 'when on self-managed instance' do
+ before do
+ allow(Gitlab).to receive(:com?).and_return(false)
+ end
+
+ describe '#up' do
+ it 'does not schedule background job' do
+ expect(migration).not_to receive(:queue_batched_background_migration)
+
+ migration.up
+ end
+ end
+
+ describe '#down' do
+ it 'does not delete background job' do
+ expect(migration).not_to receive(:delete_batched_background_migration)
+
+ migration.down
+ end
+ end
+ end
+end
diff --git a/spec/migrations/20221018193635_ensure_task_note_renaming_background_migration_finished_spec.rb b/spec/migrations/20221018193635_ensure_task_note_renaming_background_migration_finished_spec.rb
index ea95c34674e..8b599881359 100644
--- a/spec/migrations/20221018193635_ensure_task_note_renaming_background_migration_finished_spec.rb
+++ b/spec/migrations/20221018193635_ensure_task_note_renaming_background_migration_finished_spec.rb
@@ -3,12 +3,12 @@
require 'spec_helper'
require_migration!
-RSpec.describe EnsureTaskNoteRenamingBackgroundMigrationFinished, :migration do
+RSpec.describe EnsureTaskNoteRenamingBackgroundMigrationFinished, :migration, feature_category: :team_planning do
let(:batched_migrations) { table(:batched_background_migrations) }
let(:batch_failed_status) { 2 }
let(:batch_finalized_status) { 3 }
- let_it_be(:migration) { described_class::MIGRATION }
+ let!(:migration) { described_class::MIGRATION }
describe '#up' do
shared_examples 'finalizes the migration' do
diff --git a/spec/migrations/20221021145820_create_routing_table_for_builds_metadata_v2_spec.rb b/spec/migrations/20221021145820_create_routing_table_for_builds_metadata_v2_spec.rb
index 48a00df430d..235351956c4 100644
--- a/spec/migrations/20221021145820_create_routing_table_for_builds_metadata_v2_spec.rb
+++ b/spec/migrations/20221021145820_create_routing_table_for_builds_metadata_v2_spec.rb
@@ -3,8 +3,8 @@
require 'spec_helper'
require_migration!
-RSpec.describe CreateRoutingTableForBuildsMetadataV2, :migration do
- let_it_be(:migration) { described_class.new }
+RSpec.describe CreateRoutingTableForBuildsMetadataV2, :migration, feature_category: :continuous_integration do
+ let!(:migration) { described_class.new }
describe '#up' do
context 'when the table is already partitioned' do
diff --git a/spec/migrations/20221025043930_change_default_value_on_password_last_changed_at_to_user_details_spec.rb b/spec/migrations/20221025043930_change_default_value_on_password_last_changed_at_to_user_details_spec.rb
index 4d6f06eb146..d6acf31fdc6 100644
--- a/spec/migrations/20221025043930_change_default_value_on_password_last_changed_at_to_user_details_spec.rb
+++ b/spec/migrations/20221025043930_change_default_value_on_password_last_changed_at_to_user_details_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe ChangeDefaultValueOnPasswordLastChangedAtToUserDetails, :migration do
+RSpec.describe ChangeDefaultValueOnPasswordLastChangedAtToUserDetails, :migration, feature_category: :users do
let(:namespace) { table(:namespaces).create!(name: 'user', path: 'user') }
let(:users) { table(:users) }
let(:user_details) { table(:user_details) }
diff --git a/spec/migrations/20221028022627_add_index_on_password_last_changed_at_to_user_details_spec.rb b/spec/migrations/20221028022627_add_index_on_password_last_changed_at_to_user_details_spec.rb
index 5f8467f9307..6b6fb553b1f 100644
--- a/spec/migrations/20221028022627_add_index_on_password_last_changed_at_to_user_details_spec.rb
+++ b/spec/migrations/20221028022627_add_index_on_password_last_changed_at_to_user_details_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe AddIndexOnPasswordLastChangedAtToUserDetails, :migration do
+RSpec.describe AddIndexOnPasswordLastChangedAtToUserDetails, :migration, feature_category: :users do
let(:index_name) { 'index_user_details_on_password_last_changed_at' }
it 'correctly migrates up and down' do
diff --git a/spec/migrations/20221101032521_add_default_preferred_language_to_application_settings_spec.rb b/spec/migrations/20221101032521_add_default_preferred_language_to_application_settings_spec.rb
index 3ae4287f3c4..deca498146b 100644
--- a/spec/migrations/20221101032521_add_default_preferred_language_to_application_settings_spec.rb
+++ b/spec/migrations/20221101032521_add_default_preferred_language_to_application_settings_spec.rb
@@ -4,7 +4,7 @@ require 'spec_helper'
require_migration!
-RSpec.describe AddDefaultPreferredLanguageToApplicationSettings do
+RSpec.describe AddDefaultPreferredLanguageToApplicationSettings, feature_category: :internationalization do
let(:application_setting) { table(:application_settings).create! }
describe "#up" do
diff --git a/spec/migrations/20221101032600_add_text_limit_to_default_preferred_language_on_application_settings_spec.rb b/spec/migrations/20221101032600_add_text_limit_to_default_preferred_language_on_application_settings_spec.rb
index e0370e48db6..3e36e99a0ca 100644
--- a/spec/migrations/20221101032600_add_text_limit_to_default_preferred_language_on_application_settings_spec.rb
+++ b/spec/migrations/20221101032600_add_text_limit_to_default_preferred_language_on_application_settings_spec.rb
@@ -4,7 +4,7 @@ require 'spec_helper'
require_migration!
-RSpec.describe AddTextLimitToDefaultPreferredLanguageOnApplicationSettings do
+RSpec.describe AddTextLimitToDefaultPreferredLanguageOnApplicationSettings, feature_category: :internationalization do
let(:application_setting) { table(:application_settings).create! }
let(:too_long_text) { SecureRandom.alphanumeric(described_class::MAXIMUM_LIMIT + 1) }
diff --git a/spec/migrations/20221102090940_create_next_ci_partitions_record_spec.rb b/spec/migrations/20221102090940_create_next_ci_partitions_record_spec.rb
index c55e4bcfba7..dc6f365fe2b 100644
--- a/spec/migrations/20221102090940_create_next_ci_partitions_record_spec.rb
+++ b/spec/migrations/20221102090940_create_next_ci_partitions_record_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe CreateNextCiPartitionsRecord, migration: :gitlab_ci do
+RSpec.describe CreateNextCiPartitionsRecord, migration: :gitlab_ci, feature_category: :continuous_integration do
let(:migration) { described_class.new }
let(:partitions) { table(:ci_partitions) }
diff --git a/spec/migrations/20221102090943_create_second_partition_for_builds_metadata_spec.rb b/spec/migrations/20221102090943_create_second_partition_for_builds_metadata_spec.rb
index 99754d609ed..b4bd5136383 100644
--- a/spec/migrations/20221102090943_create_second_partition_for_builds_metadata_spec.rb
+++ b/spec/migrations/20221102090943_create_second_partition_for_builds_metadata_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe CreateSecondPartitionForBuildsMetadata, :migration do
+RSpec.describe CreateSecondPartitionForBuildsMetadata, :migration, feature_category: :continuous_integration do
let(:migration) { described_class.new }
let(:partitions) { table(:ci_partitions) }
diff --git a/spec/migrations/20221104115712_backfill_project_statistics_storage_size_without_uploads_size_spec.rb b/spec/migrations/20221104115712_backfill_project_statistics_storage_size_without_uploads_size_spec.rb
new file mode 100644
index 00000000000..d86720365c4
--- /dev/null
+++ b/spec/migrations/20221104115712_backfill_project_statistics_storage_size_without_uploads_size_spec.rb
@@ -0,0 +1,43 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+require_migration!
+
+RSpec.describe BackfillProjectStatisticsStorageSizeWithoutUploadsSize,
+ feature_category: :subscription_cost_management do
+ let!(:batched_migration) { described_class::MIGRATION_CLASS }
+
+ it 'does not schedule background jobs when Gitlab.org_or_com? is false' do
+ allow(Gitlab).to receive(:dev_or_test_env?).and_return(false)
+ allow(Gitlab).to receive(:org_or_com?).and_return(false)
+
+ reversible_migration do |migration|
+ migration.before -> {
+ expect(batched_migration).not_to have_scheduled_batched_migration
+ }
+
+ migration.after -> {
+ expect(batched_migration).not_to have_scheduled_batched_migration
+ }
+ end
+ end
+
+ it 'schedules background jobs for each batch of project_statistics' do
+ allow(Gitlab).to receive(:dev_or_test_env?).and_return(false)
+ allow(Gitlab).to receive(:org_or_com?).and_return(true)
+
+ reversible_migration do |migration|
+ migration.before -> {
+ expect(batched_migration).not_to have_scheduled_batched_migration
+ }
+
+ migration.after -> {
+ expect(batched_migration).to have_scheduled_batched_migration(
+ table_name: :project_statistics,
+ column_name: :project_id,
+ interval: described_class::DELAY_INTERVAL
+ )
+ }
+ end
+ end
+end
diff --git a/spec/migrations/20221110152133_delete_orphans_approval_rules_spec.rb b/spec/migrations/20221110152133_delete_orphans_approval_rules_spec.rb
new file mode 100644
index 00000000000..3efee67f7af
--- /dev/null
+++ b/spec/migrations/20221110152133_delete_orphans_approval_rules_spec.rb
@@ -0,0 +1,22 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+require_migration!
+
+RSpec.describe DeleteOrphansApprovalRules, feature_category: :source_code_management do
+ describe '#up' do
+ it 'schedules background migration for both levels of approval rules' do
+ migrate!
+
+ expect(described_class::MERGE_REQUEST_MIGRATION).to have_scheduled_batched_migration(
+ table_name: :approval_merge_request_rules,
+ column_name: :id,
+ interval: described_class::INTERVAL)
+
+ expect(described_class::PROJECT_MIGRATION).to have_scheduled_batched_migration(
+ table_name: :approval_project_rules,
+ column_name: :id,
+ interval: described_class::INTERVAL)
+ end
+ end
+end
diff --git a/spec/migrations/20221115173607_ensure_work_item_type_backfill_migration_finished_spec.rb b/spec/migrations/20221115173607_ensure_work_item_type_backfill_migration_finished_spec.rb
new file mode 100644
index 00000000000..e9250625832
--- /dev/null
+++ b/spec/migrations/20221115173607_ensure_work_item_type_backfill_migration_finished_spec.rb
@@ -0,0 +1,102 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+require_migration!
+
+RSpec.describe EnsureWorkItemTypeBackfillMigrationFinished, :migration, feature_category: :team_planning do
+ let(:batched_migrations) { table(:batched_background_migrations) }
+ let(:work_item_types) { table(:work_item_types) }
+ let(:batch_failed_status) { 2 }
+ let(:batch_finalized_status) { 3 }
+
+ let!(:migration_class) { described_class::MIGRATION }
+
+ describe '#up', :redis do
+ context 'when migration is missing' do
+ it 'warns migration not found' do
+ expect(Gitlab::AppLogger)
+ .to receive(:warn).with(/Could not find batched background migration for the given configuration:/)
+ .exactly(5).times
+
+ migrate!
+ end
+ end
+
+ context 'with migration present' do
+ let(:relevant_types) do
+ {
+ issue: 0,
+ incident: 1,
+ test_case: 2,
+ requirement: 3,
+ task: 4
+ }
+ end
+
+ let!(:backfill_migrations) do
+ relevant_types.map do |_base_type, enum_value|
+ type_id = work_item_types.find_by!(namespace_id: nil, base_type: enum_value).id
+
+ create_migration_with(status, enum_value, type_id)
+ end
+ end
+
+ context 'when migrations have finished' do
+ let(:status) { 3 } # finished enum value
+
+ it 'does not raise an error' do
+ expect { migrate! }.not_to raise_error
+ end
+ end
+
+ context 'with different migration statuses' do
+ using RSpec::Parameterized::TableSyntax
+
+ where(:status, :description) do
+ 0 | 'paused'
+ 1 | 'active'
+ 4 | 'failed'
+ 5 | 'finalizing'
+ end
+
+ with_them do
+ it 'finalizes the migration' do
+ expect do
+ migrate!
+
+ backfill_migrations.each(&:reload)
+ end.to change { backfill_migrations.map(&:status).uniq }.from([status]).to([3])
+ end
+ end
+ end
+ end
+ end
+
+ def create_migration_with(status, base_type, type_id)
+ migration = batched_migrations.create!(
+ job_class_name: migration_class,
+ table_name: :issues,
+ column_name: :id,
+ job_arguments: [base_type, type_id],
+ interval: 2.minutes,
+ min_value: 1,
+ max_value: 2,
+ batch_size: 1000,
+ sub_batch_size: 200,
+ gitlab_schema: :gitlab_main,
+ status: status
+ )
+
+ table(:batched_background_migration_jobs).create!(
+ batched_background_migration_id: migration.id,
+ status: batch_failed_status,
+ min_value: 1,
+ max_value: 10,
+ attempts: 2,
+ batch_size: 100,
+ sub_batch_size: 10
+ )
+
+ migration
+ end
+end
diff --git a/spec/migrations/20221122132812_schedule_prune_stale_project_export_jobs_spec.rb b/spec/migrations/20221122132812_schedule_prune_stale_project_export_jobs_spec.rb
new file mode 100644
index 00000000000..5a5bc42a37b
--- /dev/null
+++ b/spec/migrations/20221122132812_schedule_prune_stale_project_export_jobs_spec.rb
@@ -0,0 +1,24 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+require_migration!
+
+RSpec.describe SchedulePruneStaleProjectExportJobs, category: :importers do
+ let!(:batched_migration) { described_class::MIGRATION }
+
+ it 'schedules a new batched migration' do
+ reversible_migration do |migration|
+ migration.before -> {
+ expect(batched_migration).not_to have_scheduled_batched_migration
+ }
+
+ migration.after -> {
+ expect(batched_migration).to have_scheduled_batched_migration(
+ table_name: :project_export_jobs,
+ column_name: :id,
+ interval: described_class::DELAY_INTERVAL
+ )
+ }
+ end
+ end
+end
diff --git a/spec/migrations/20221123133054_queue_reset_status_on_container_repositories_spec.rb b/spec/migrations/20221123133054_queue_reset_status_on_container_repositories_spec.rb
new file mode 100644
index 00000000000..2951b738243
--- /dev/null
+++ b/spec/migrations/20221123133054_queue_reset_status_on_container_repositories_spec.rb
@@ -0,0 +1,51 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+require_migration!
+
+RSpec.describe QueueResetStatusOnContainerRepositories, feature_category: :container_registry do
+ let!(:batched_migration) { described_class::MIGRATION }
+
+ before do
+ stub_container_registry_config(
+ enabled: true,
+ api_url: 'http://example.com',
+ key: 'spec/fixtures/x509_certificate_pk.key'
+ )
+ end
+
+ it 'schedules a new batched migration' do
+ reversible_migration do |migration|
+ migration.before -> {
+ expect(batched_migration).not_to have_scheduled_batched_migration
+ }
+
+ migration.after -> {
+ expect(batched_migration).to have_scheduled_batched_migration(
+ table_name: :container_repositories,
+ column_name: :id,
+ interval: described_class::DELAY_INTERVAL,
+ sub_batch_size: described_class::BATCH_SIZE
+ )
+ }
+ end
+ end
+
+ context 'with the container registry disabled' do
+ before do
+ allow(::Gitlab.config.registry).to receive(:enabled).and_return(false)
+ end
+
+ it 'does not schedule a new batched migration' do
+ reversible_migration do |migration|
+ migration.before -> {
+ expect(batched_migration).not_to have_scheduled_batched_migration
+ }
+
+ migration.after -> {
+ expect(batched_migration).not_to have_scheduled_batched_migration
+ }
+ end
+ end
+ end
+end
diff --git a/spec/migrations/20221205151917_schedule_backfill_environment_tier_spec.rb b/spec/migrations/20221205151917_schedule_backfill_environment_tier_spec.rb
new file mode 100644
index 00000000000..b76f889d743
--- /dev/null
+++ b/spec/migrations/20221205151917_schedule_backfill_environment_tier_spec.rb
@@ -0,0 +1,24 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+require_migration!
+
+RSpec.describe ScheduleBackfillEnvironmentTier, category: :continuous_delivery do
+ let!(:batched_migration) { described_class::MIGRATION }
+
+ it 'schedules a new batched migration' do
+ reversible_migration do |migration|
+ migration.before -> {
+ expect(batched_migration).not_to have_scheduled_batched_migration
+ }
+
+ migration.after -> {
+ expect(batched_migration).to have_scheduled_batched_migration(
+ table_name: :environments,
+ column_name: :id,
+ interval: described_class::DELAY_INTERVAL
+ )
+ }
+ end
+ end
+end
diff --git a/spec/migrations/20221209110934_update_import_sources_on_application_settings_spec.rb b/spec/migrations/20221209110934_update_import_sources_on_application_settings_spec.rb
new file mode 100644
index 00000000000..899074399a1
--- /dev/null
+++ b/spec/migrations/20221209110934_update_import_sources_on_application_settings_spec.rb
@@ -0,0 +1,21 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+require_migration!
+
+RSpec.describe UpdateImportSourcesOnApplicationSettings, feature_category: :migration do
+ let(:settings) { table(:application_settings) }
+ let(:import_sources_with_google) { %w[google_code github git bitbucket bitbucket_server] }
+ let(:import_sources_without_google) { %w[github git bitbucket bitbucket_server] }
+
+ describe "#up" do
+ it 'removes google_code and preserves existing valid import sources' do
+ record = settings.create!(import_sources: import_sources_with_google.to_yaml)
+
+ migrate!
+
+ expect(record.reload.import_sources).to start_with('---')
+ expect(ApplicationSetting.last.import_sources).to eq(import_sources_without_google)
+ end
+ end
+end
diff --git a/spec/migrations/20221209110935_fix_update_import_sources_on_application_settings_spec.rb b/spec/migrations/20221209110935_fix_update_import_sources_on_application_settings_spec.rb
new file mode 100644
index 00000000000..e5b20b2d48a
--- /dev/null
+++ b/spec/migrations/20221209110935_fix_update_import_sources_on_application_settings_spec.rb
@@ -0,0 +1,34 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+require_migration!
+
+RSpec.describe FixUpdateImportSourcesOnApplicationSettings, feature_category: :migration do
+ let(:settings) { table(:application_settings) }
+ let(:import_sources) { %w[github git bitbucket bitbucket_server] }
+
+ describe "#up" do
+ shared_examples 'fixes import_sources on application_settings' do
+ it 'ensures YAML is stored' do
+ record = settings.create!(import_sources: data)
+
+ migrate!
+
+ expect(record.reload.import_sources).to start_with('---')
+ expect(ApplicationSetting.last.import_sources).to eq(import_sources)
+ end
+ end
+
+ context 'when import_sources is a String' do
+ let(:data) { import_sources.to_s }
+
+ it_behaves_like 'fixes import_sources on application_settings'
+ end
+
+ context 'when import_sources is already YAML' do
+ let(:data) { import_sources.to_yaml }
+
+ it_behaves_like 'fixes import_sources on application_settings'
+ end
+ end
+end
diff --git a/spec/migrations/20221210154044_update_active_billable_users_index_spec.rb b/spec/migrations/20221210154044_update_active_billable_users_index_spec.rb
new file mode 100644
index 00000000000..3341df2ce51
--- /dev/null
+++ b/spec/migrations/20221210154044_update_active_billable_users_index_spec.rb
@@ -0,0 +1,33 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+require_migration!
+
+RSpec.describe UpdateActiveBillableUsersIndex, feature_category: :database do
+ let(:db) { described_class.new }
+ let(:table_name) { described_class::TABLE_NAME }
+ let(:old_index_name) { described_class::OLD_INDEX_NAME }
+ let(:new_index_name) { described_class::NEW_INDEX_NAME }
+ let(:old_filter_condition) { "(user_type <> ALL ('{2,6,1,3,7,8}'::smallint[])))" }
+ let(:new_filter_condition) { "(user_type <> ALL ('{1,2,3,4,5,6,7,8,9,11}'::smallint[])))" }
+
+ it 'correctly migrates up and down' do
+ reversible_migration do |migration|
+ migration.before -> {
+ expect(subject.index_exists_by_name?(table_name, new_index_name)).to be_falsy
+ expect(subject.index_exists_by_name?(table_name, old_index_name)).to be_truthy
+ expect(db.connection.indexes(table_name).find do |i|
+ i.name == old_index_name
+ end.where).to include(old_filter_condition)
+ }
+
+ migration.after -> {
+ expect(subject.index_exists_by_name?(table_name, old_index_name)).to be_falsy
+ expect(subject.index_exists_by_name?(table_name, new_index_name)).to be_truthy
+ expect(db.connection.indexes(table_name).find do |i|
+ i.name == new_index_name
+ end.where).to include(new_filter_condition)
+ }
+ end
+ end
+end
diff --git a/spec/migrations/active_record/schema_spec.rb b/spec/migrations/active_record/schema_spec.rb
index 042b5710dce..f3adffb9a37 100644
--- a/spec/migrations/active_record/schema_spec.rb
+++ b/spec/migrations/active_record/schema_spec.rb
@@ -5,7 +5,7 @@ require 'spec_helper'
# Check consistency of db/structure.sql version, migrations' timestamps, and the latest migration timestamp
# stored in the database's schema_migrations table.
-RSpec.describe ActiveRecord::Schema, schema: :latest do
+RSpec.describe ActiveRecord::Schema, schema: :latest, feature_category: :database do
let(:all_migrations) do
migrations_directories = Rails.application.paths["db/migrate"].paths.map(&:to_s)
migrations_paths = migrations_directories.map { |path| File.join(path, '*') }
diff --git a/spec/migrations/add_default_project_approval_rules_vuln_allowed_spec.rb b/spec/migrations/add_default_project_approval_rules_vuln_allowed_spec.rb
index 057e95eb158..a6c892db131 100644
--- a/spec/migrations/add_default_project_approval_rules_vuln_allowed_spec.rb
+++ b/spec/migrations/add_default_project_approval_rules_vuln_allowed_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe AddDefaultProjectApprovalRulesVulnAllowed do
+RSpec.describe AddDefaultProjectApprovalRulesVulnAllowed, feature_category: :source_code_management do
let(:namespaces) { table(:namespaces) }
let(:projects) { table(:projects) }
let(:namespace) { namespaces.create!(name: 'namespace', path: 'namespace') }
diff --git a/spec/migrations/add_epics_relative_position_spec.rb b/spec/migrations/add_epics_relative_position_spec.rb
index f3b7dd1727b..bdfaacc2bf8 100644
--- a/spec/migrations/add_epics_relative_position_spec.rb
+++ b/spec/migrations/add_epics_relative_position_spec.rb
@@ -4,7 +4,7 @@ require 'spec_helper'
require_migration!
-RSpec.describe AddEpicsRelativePosition, :migration do
+RSpec.describe AddEpicsRelativePosition, :migration, feature_category: :portfolio_management do
let(:groups) { table(:namespaces) }
let(:epics) { table(:epics) }
let(:users) { table(:users) }
diff --git a/spec/migrations/add_new_trail_plans_spec.rb b/spec/migrations/add_new_trail_plans_spec.rb
index c1b488e8c3c..6f8de8435c6 100644
--- a/spec/migrations/add_new_trail_plans_spec.rb
+++ b/spec/migrations/add_new_trail_plans_spec.rb
@@ -4,7 +4,7 @@ require 'spec_helper'
require_migration!
-RSpec.describe AddNewTrailPlans, :migration do
+RSpec.describe AddNewTrailPlans, :migration, feature_category: :purchase do
describe '#up' do
before do
allow(Gitlab).to receive(:com?).and_return true
diff --git a/spec/migrations/add_okr_hierarchy_restrictions_spec.rb b/spec/migrations/add_okr_hierarchy_restrictions_spec.rb
new file mode 100644
index 00000000000..ace581c7e3c
--- /dev/null
+++ b/spec/migrations/add_okr_hierarchy_restrictions_spec.rb
@@ -0,0 +1,35 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+require_migration!
+
+RSpec.describe AddOkrHierarchyRestrictions, :migration, feature_category: :portfolio_management do
+ include MigrationHelpers::WorkItemTypesHelper
+
+ let!(:restrictions) { table(:work_item_hierarchy_restrictions) }
+ let!(:work_item_types) { table(:work_item_types) }
+
+ it 'creates default restrictions' do
+ restrictions.delete_all
+
+ reversible_migration do |migration|
+ migration.before -> {
+ expect(restrictions.count).to eq(0)
+ }
+
+ migration.after -> {
+ expect(restrictions.count).to eq(4)
+ }
+ end
+ end
+
+ context 'when work items are missing' do
+ before do
+ work_item_types.delete_all
+ end
+
+ it 'does nothing' do
+ expect { migrate! }.not_to change { restrictions.count }
+ end
+ end
+end
diff --git a/spec/migrations/add_open_source_plan_spec.rb b/spec/migrations/add_open_source_plan_spec.rb
index 6e1cd544141..f5d68f455e6 100644
--- a/spec/migrations/add_open_source_plan_spec.rb
+++ b/spec/migrations/add_open_source_plan_spec.rb
@@ -4,7 +4,7 @@ require 'spec_helper'
require_migration!
-RSpec.describe AddOpenSourcePlan, :migration do
+RSpec.describe AddOpenSourcePlan, :migration, feature_category: :purchase do
describe '#up' do
before do
allow(Gitlab).to receive(:com?).and_return true
diff --git a/spec/migrations/add_premium_and_ultimate_plan_limits_spec.rb b/spec/migrations/add_premium_and_ultimate_plan_limits_spec.rb
index 0ae4559ca9f..670541128a0 100644
--- a/spec/migrations/add_premium_and_ultimate_plan_limits_spec.rb
+++ b/spec/migrations/add_premium_and_ultimate_plan_limits_spec.rb
@@ -4,7 +4,7 @@ require 'spec_helper'
require_migration!
-RSpec.describe AddPremiumAndUltimatePlanLimits, :migration do
+RSpec.describe AddPremiumAndUltimatePlanLimits, :migration, feature_category: :purchase do
shared_examples_for 'a migration that does not alter plans or plan limits' do
it do
expect { migrate! }.not_to change {
diff --git a/spec/migrations/add_triggers_to_integrations_type_new_spec.rb b/spec/migrations/add_triggers_to_integrations_type_new_spec.rb
index 01af5884170..4fa5fe31d2b 100644
--- a/spec/migrations/add_triggers_to_integrations_type_new_spec.rb
+++ b/spec/migrations/add_triggers_to_integrations_type_new_spec.rb
@@ -4,7 +4,7 @@ require 'spec_helper'
require_migration!
-RSpec.describe AddTriggersToIntegrationsTypeNew do
+RSpec.describe AddTriggersToIntegrationsTypeNew, feature_category: :purchase do
let(:migration) { described_class.new }
let(:integrations) { table(:integrations) }
diff --git a/spec/migrations/add_upvotes_count_index_to_issues_spec.rb b/spec/migrations/add_upvotes_count_index_to_issues_spec.rb
index c04cb98a107..0012b8a0b96 100644
--- a/spec/migrations/add_upvotes_count_index_to_issues_spec.rb
+++ b/spec/migrations/add_upvotes_count_index_to_issues_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe AddUpvotesCountIndexToIssues do
+RSpec.describe AddUpvotesCountIndexToIssues, feature_category: :team_planning do
let(:migration_instance) { described_class.new }
describe '#up' do
diff --git a/spec/migrations/add_web_hook_calls_to_plan_limits_paid_tiers_spec.rb b/spec/migrations/add_web_hook_calls_to_plan_limits_paid_tiers_spec.rb
index 63ad9367503..0ad99be1c7b 100644
--- a/spec/migrations/add_web_hook_calls_to_plan_limits_paid_tiers_spec.rb
+++ b/spec/migrations/add_web_hook_calls_to_plan_limits_paid_tiers_spec.rb
@@ -3,9 +3,9 @@
require 'spec_helper'
require_migration!
-RSpec.describe AddWebHookCallsToPlanLimitsPaidTiers do
- let_it_be(:plans) { table(:plans) }
- let_it_be(:plan_limits) { table(:plan_limits) }
+RSpec.describe AddWebHookCallsToPlanLimitsPaidTiers, feature_category: :purchase do
+ let!(:plans) { table(:plans) }
+ let!(:plan_limits) { table(:plan_limits) }
context 'when on Gitlab.com' do
let(:free_plan) { plans.create!(name: 'free') }
diff --git a/spec/migrations/adjust_task_note_rename_background_migration_values_spec.rb b/spec/migrations/adjust_task_note_rename_background_migration_values_spec.rb
index 422d0655e36..01680fa12cc 100644
--- a/spec/migrations/adjust_task_note_rename_background_migration_values_spec.rb
+++ b/spec/migrations/adjust_task_note_rename_background_migration_values_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe AdjustTaskNoteRenameBackgroundMigrationValues, :migration do
+RSpec.describe AdjustTaskNoteRenameBackgroundMigrationValues, :migration, feature_category: :team_planning do
let(:finished_status) { 3 }
let(:failed_status) { described_class::MIGRATION_FAILED_STATUS }
let(:active_status) { described_class::MIGRATION_ACTIVE_STATUS }
diff --git a/spec/migrations/associate_existing_dast_builds_with_variables_spec.rb b/spec/migrations/associate_existing_dast_builds_with_variables_spec.rb
index dd86989912f..67d215c781b 100644
--- a/spec/migrations/associate_existing_dast_builds_with_variables_spec.rb
+++ b/spec/migrations/associate_existing_dast_builds_with_variables_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe AssociateExistingDastBuildsWithVariables do
+RSpec.describe AssociateExistingDastBuildsWithVariables, feature_category: :dynamic_application_security_testing do
it 'is a no-op' do
migrate!
end
diff --git a/spec/migrations/backfill_all_project_namespaces_spec.rb b/spec/migrations/backfill_all_project_namespaces_spec.rb
index 1bcaad783b2..52fa46eea57 100644
--- a/spec/migrations/backfill_all_project_namespaces_spec.rb
+++ b/spec/migrations/backfill_all_project_namespaces_spec.rb
@@ -3,8 +3,8 @@
require 'spec_helper'
require_migration!
-RSpec.describe BackfillAllProjectNamespaces, :migration do
- let_it_be(:migration) { described_class::MIGRATION }
+RSpec.describe BackfillAllProjectNamespaces, :migration, feature_category: :subgroups do
+ let!(:migration) { described_class::MIGRATION }
let(:projects) { table(:projects) }
let(:namespaces) { table(:namespaces) }
diff --git a/spec/migrations/backfill_cadence_id_for_boards_scoped_to_iteration_spec.rb b/spec/migrations/backfill_cadence_id_for_boards_scoped_to_iteration_spec.rb
index 16a08ec47c4..a9500b9f942 100644
--- a/spec/migrations/backfill_cadence_id_for_boards_scoped_to_iteration_spec.rb
+++ b/spec/migrations/backfill_cadence_id_for_boards_scoped_to_iteration_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe BackfillCadenceIdForBoardsScopedToIteration, :migration do
+RSpec.describe BackfillCadenceIdForBoardsScopedToIteration, :migration, feature_category: :team_planning do
let(:projects) { table(:projects) }
let(:namespaces) { table(:namespaces) }
let(:iterations_cadences) { table(:iterations_cadences) }
diff --git a/spec/migrations/backfill_clusters_integration_prometheus_enabled_spec.rb b/spec/migrations/backfill_clusters_integration_prometheus_enabled_spec.rb
index 6c116120f05..1c7745a64ef 100644
--- a/spec/migrations/backfill_clusters_integration_prometheus_enabled_spec.rb
+++ b/spec/migrations/backfill_clusters_integration_prometheus_enabled_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe BackfillClustersIntegrationPrometheusEnabled, :migration do
+RSpec.describe BackfillClustersIntegrationPrometheusEnabled, :migration, feature_category: :clusters_applications_prometheus do
def create_cluster!(label = rand(2**64).to_s)
table(:clusters).create!(
name: "cluster: #{label}",
diff --git a/spec/migrations/backfill_cycle_analytics_aggregations_spec.rb b/spec/migrations/backfill_cycle_analytics_aggregations_spec.rb
index 2a5d33742ce..47950f918c3 100644
--- a/spec/migrations/backfill_cycle_analytics_aggregations_spec.rb
+++ b/spec/migrations/backfill_cycle_analytics_aggregations_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe BackfillCycleAnalyticsAggregations, :migration do
+RSpec.describe BackfillCycleAnalyticsAggregations, :migration, feature_category: :value_stream_management do
let(:migration) { described_class.new }
let(:aggregations) { table(:analytics_cycle_analytics_aggregations) }
diff --git a/spec/migrations/backfill_epic_cache_counts_spec.rb b/spec/migrations/backfill_epic_cache_counts_spec.rb
index 6084fdad0a6..1dc0079bb01 100644
--- a/spec/migrations/backfill_epic_cache_counts_spec.rb
+++ b/spec/migrations/backfill_epic_cache_counts_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe BackfillEpicCacheCounts, :migration do
+RSpec.describe BackfillEpicCacheCounts, :migration, feature_category: :portfolio_management do
let(:migration) { described_class::MIGRATION }
describe '#up' do
diff --git a/spec/migrations/backfill_escalation_policies_for_oncall_schedules_spec.rb b/spec/migrations/backfill_escalation_policies_for_oncall_schedules_spec.rb
index 87855285203..aa77a5c228a 100644
--- a/spec/migrations/backfill_escalation_policies_for_oncall_schedules_spec.rb
+++ b/spec/migrations/backfill_escalation_policies_for_oncall_schedules_spec.rb
@@ -3,48 +3,48 @@
require 'spec_helper'
require_migration!
-RSpec.describe BackfillEscalationPoliciesForOncallSchedules do
- let_it_be(:projects) { table(:projects) }
- let_it_be(:schedules) { table(:incident_management_oncall_schedules) }
- let_it_be(:policies) { table(:incident_management_escalation_policies) }
- let_it_be(:rules) { table(:incident_management_escalation_rules) }
+RSpec.describe BackfillEscalationPoliciesForOncallSchedules, feature_category: :incident_management do
+ let!(:projects) { table(:projects) }
+ let!(:schedules) { table(:incident_management_oncall_schedules) }
+ let!(:policies) { table(:incident_management_escalation_policies) }
+ let!(:rules) { table(:incident_management_escalation_rules) }
# Project with no schedules
- let_it_be(:namespace) { table(:namespaces).create!(name: 'gitlab', path: 'gitlab') }
- let_it_be(:project_a) { projects.create!(namespace_id: namespace.id) }
+ let!(:namespace) { table(:namespaces).create!(name: 'gitlab', path: 'gitlab') }
+ let!(:project_a) { projects.create!(namespace_id: namespace.id) }
context 'with backfill-able schedules' do
# Project with one schedule
- let_it_be(:project_b) { projects.create!(namespace_id: namespace.id) }
- let_it_be(:schedule_b1) { schedules.create!(project_id: project_b.id, iid: 1, name: 'Schedule B1') }
+ let!(:project_b) { projects.create!(namespace_id: namespace.id) }
+ let!(:schedule_b1) { schedules.create!(project_id: project_b.id, iid: 1, name: 'Schedule B1') }
# Project with multiple schedules
- let_it_be(:project_c) { projects.create!(namespace_id: namespace.id) }
- let_it_be(:schedule_c1) { schedules.create!(project_id: project_c.id, iid: 1, name: 'Schedule C1') }
- let_it_be(:schedule_c2) { schedules.create!(project_id: project_c.id, iid: 2, name: 'Schedule C2') }
+ let!(:project_c) { projects.create!(namespace_id: namespace.id) }
+ let!(:schedule_c1) { schedules.create!(project_id: project_c.id, iid: 1, name: 'Schedule C1') }
+ let!(:schedule_c2) { schedules.create!(project_id: project_c.id, iid: 2, name: 'Schedule C2') }
# Project with a single schedule which already has a policy
- let_it_be(:project_d) { projects.create!(namespace_id: namespace.id) }
- let_it_be(:schedule_d1) { schedules.create!(project_id: project_d.id, iid: 1, name: 'Schedule D1') }
- let_it_be(:policy_d1) { policies.create!(project_id: project_d.id, name: 'Policy D1') }
- let_it_be(:rule_d1) { rules.create!(policy_id: policy_d1.id, oncall_schedule_id: schedule_d1.id, status: 2, elapsed_time_seconds: 60) }
+ let!(:project_d) { projects.create!(namespace_id: namespace.id) }
+ let!(:schedule_d1) { schedules.create!(project_id: project_d.id, iid: 1, name: 'Schedule D1') }
+ let!(:policy_d1) { policies.create!(project_id: project_d.id, name: 'Policy D1') }
+ let!(:rule_d1) { rules.create!(policy_id: policy_d1.id, oncall_schedule_id: schedule_d1.id, status: 2, elapsed_time_seconds: 60) }
# Project with a multiple schedule, one of which already has a policy
- let_it_be(:project_e) { projects.create!(namespace_id: namespace.id) }
- let_it_be(:schedule_e1) { schedules.create!(project_id: project_e.id, iid: 1, name: 'Schedule E1') }
- let_it_be(:schedule_e2) { schedules.create!(project_id: project_e.id, iid: 2, name: 'Schedule E2') }
- let_it_be(:policy_e1) { policies.create!(project_id: project_e.id, name: 'Policy E1') }
- let_it_be(:rule_e1) { rules.create!(policy_id: policy_e1.id, oncall_schedule_id: schedule_e2.id, status: 2, elapsed_time_seconds: 60) }
+ let!(:project_e) { projects.create!(namespace_id: namespace.id) }
+ let!(:schedule_e1) { schedules.create!(project_id: project_e.id, iid: 1, name: 'Schedule E1') }
+ let!(:schedule_e2) { schedules.create!(project_id: project_e.id, iid: 2, name: 'Schedule E2') }
+ let!(:policy_e1) { policies.create!(project_id: project_e.id, name: 'Policy E1') }
+ let!(:rule_e1) { rules.create!(policy_id: policy_e1.id, oncall_schedule_id: schedule_e2.id, status: 2, elapsed_time_seconds: 60) }
# Project with a multiple schedule, with multiple policies
- let_it_be(:project_f) { projects.create!(namespace_id: namespace.id) }
- let_it_be(:schedule_f1) { schedules.create!(project_id: project_f.id, iid: 1, name: 'Schedule F1') }
- let_it_be(:schedule_f2) { schedules.create!(project_id: project_f.id, iid: 2, name: 'Schedule F2') }
- let_it_be(:policy_f1) { policies.create!(project_id: project_f.id, name: 'Policy F1') }
- let_it_be(:rule_f1) { rules.create!(policy_id: policy_f1.id, oncall_schedule_id: schedule_f1.id, status: 2, elapsed_time_seconds: 60) }
- let_it_be(:rule_f2) { rules.create!(policy_id: policy_f1.id, oncall_schedule_id: schedule_f2.id, status: 2, elapsed_time_seconds: 60) }
- let_it_be(:policy_f2) { policies.create!(project_id: project_f.id, name: 'Policy F2') }
- let_it_be(:rule_f3) { rules.create!(policy_id: policy_f2.id, oncall_schedule_id: schedule_f2.id, status: 1, elapsed_time_seconds: 10) }
+ let!(:project_f) { projects.create!(namespace_id: namespace.id) }
+ let!(:schedule_f1) { schedules.create!(project_id: project_f.id, iid: 1, name: 'Schedule F1') }
+ let!(:schedule_f2) { schedules.create!(project_id: project_f.id, iid: 2, name: 'Schedule F2') }
+ let!(:policy_f1) { policies.create!(project_id: project_f.id, name: 'Policy F1') }
+ let!(:rule_f1) { rules.create!(policy_id: policy_f1.id, oncall_schedule_id: schedule_f1.id, status: 2, elapsed_time_seconds: 60) }
+ let!(:rule_f2) { rules.create!(policy_id: policy_f1.id, oncall_schedule_id: schedule_f2.id, status: 2, elapsed_time_seconds: 60) }
+ let!(:policy_f2) { policies.create!(project_id: project_f.id, name: 'Policy F2') }
+ let!(:rule_f3) { rules.create!(policy_id: policy_f2.id, oncall_schedule_id: schedule_f2.id, status: 1, elapsed_time_seconds: 10) }
it 'backfills escalation policies correctly' do
expect { migrate! }
diff --git a/spec/migrations/backfill_group_features_spec.rb b/spec/migrations/backfill_group_features_spec.rb
index 922d54f43be..1e7729a97d8 100644
--- a/spec/migrations/backfill_group_features_spec.rb
+++ b/spec/migrations/backfill_group_features_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe BackfillGroupFeatures, :migration do
+RSpec.describe BackfillGroupFeatures, :migration, feature_category: :feature_flags do
let(:migration) { described_class::MIGRATION }
describe '#up' do
diff --git a/spec/migrations/backfill_integrations_enable_ssl_verification_spec.rb b/spec/migrations/backfill_integrations_enable_ssl_verification_spec.rb
index 28578a3d79a..5029a861d31 100644
--- a/spec/migrations/backfill_integrations_enable_ssl_verification_spec.rb
+++ b/spec/migrations/backfill_integrations_enable_ssl_verification_spec.rb
@@ -3,9 +3,9 @@
require 'spec_helper'
require_migration!
-RSpec.describe BackfillIntegrationsEnableSslVerification do
- let_it_be(:migration) { described_class::MIGRATION }
- let_it_be(:integrations) { described_class::Integration }
+RSpec.describe BackfillIntegrationsEnableSslVerification, feature_category: :authentication_and_authorization do
+ let!(:migration) { described_class::MIGRATION }
+ let!(:integrations) { described_class::Integration }
before do
stub_const("#{described_class.name}::BATCH_SIZE", 2)
diff --git a/spec/migrations/backfill_integrations_type_new_spec.rb b/spec/migrations/backfill_integrations_type_new_spec.rb
index 5b8fbf6f555..79519c4439a 100644
--- a/spec/migrations/backfill_integrations_type_new_spec.rb
+++ b/spec/migrations/backfill_integrations_type_new_spec.rb
@@ -3,9 +3,9 @@
require 'spec_helper'
require_migration!
-RSpec.describe BackfillIntegrationsTypeNew do
- let_it_be(:migration) { described_class::MIGRATION }
- let_it_be(:integrations) { table(:integrations) }
+RSpec.describe BackfillIntegrationsTypeNew, feature_category: :integrations do
+ let!(:migration) { described_class::MIGRATION }
+ let!(:integrations) { table(:integrations) }
before do
integrations.create!(id: 1)
diff --git a/spec/migrations/backfill_issues_upvotes_count_spec.rb b/spec/migrations/backfill_issues_upvotes_count_spec.rb
index 94cfa29ae89..b8687595b35 100644
--- a/spec/migrations/backfill_issues_upvotes_count_spec.rb
+++ b/spec/migrations/backfill_issues_upvotes_count_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe BackfillIssuesUpvotesCount do
+RSpec.describe BackfillIssuesUpvotesCount, feature_category: :team_planning do
let(:migration) { described_class.new }
let(:issues) { table(:issues) }
let(:award_emoji) { table(:award_emoji) }
diff --git a/spec/migrations/backfill_member_namespace_id_for_group_members_spec.rb b/spec/migrations/backfill_member_namespace_id_for_group_members_spec.rb
index 0c0acf85d41..892589dd770 100644
--- a/spec/migrations/backfill_member_namespace_id_for_group_members_spec.rb
+++ b/spec/migrations/backfill_member_namespace_id_for_group_members_spec.rb
@@ -3,8 +3,8 @@
require 'spec_helper'
require_migration!
-RSpec.describe BackfillMemberNamespaceIdForGroupMembers do
- let_it_be(:migration) { described_class::MIGRATION }
+RSpec.describe BackfillMemberNamespaceIdForGroupMembers, feature_category: :subgroups do
+ let!(:migration) { described_class::MIGRATION }
describe '#up' do
it 'schedules background jobs for each batch of group members' do
diff --git a/spec/migrations/backfill_namespace_id_for_namespace_routes_spec.rb b/spec/migrations/backfill_namespace_id_for_namespace_routes_spec.rb
index 913ec404795..627b18cd889 100644
--- a/spec/migrations/backfill_namespace_id_for_namespace_routes_spec.rb
+++ b/spec/migrations/backfill_namespace_id_for_namespace_routes_spec.rb
@@ -3,8 +3,8 @@
require 'spec_helper'
require_migration!
-RSpec.describe BackfillNamespaceIdForNamespaceRoutes do
- let_it_be(:migration) { described_class::MIGRATION }
+RSpec.describe BackfillNamespaceIdForNamespaceRoutes, feature_category: :projects do
+ let!(:migration) { described_class::MIGRATION }
describe '#up' do
it 'schedules background jobs for each batch of routes' do
diff --git a/spec/migrations/backfill_namespace_id_for_project_routes_spec.rb b/spec/migrations/backfill_namespace_id_for_project_routes_spec.rb
index 28edd17731f..773c1733a4a 100644
--- a/spec/migrations/backfill_namespace_id_for_project_routes_spec.rb
+++ b/spec/migrations/backfill_namespace_id_for_project_routes_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe BackfillNamespaceIdForProjectRoutes, :migration do
+RSpec.describe BackfillNamespaceIdForProjectRoutes, :migration, feature_category: :subgroups do
let(:migration) { described_class::MIGRATION }
describe '#up' do
diff --git a/spec/migrations/backfill_namespace_id_on_issues_spec.rb b/spec/migrations/backfill_namespace_id_on_issues_spec.rb
index 2721d7ce8f1..28453394cb0 100644
--- a/spec/migrations/backfill_namespace_id_on_issues_spec.rb
+++ b/spec/migrations/backfill_namespace_id_on_issues_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe BackfillNamespaceIdOnIssues, :migration do
+RSpec.describe BackfillNamespaceIdOnIssues, :migration, feature_category: :team_planning do
let(:migration) { described_class::MIGRATION }
describe '#up' do
diff --git a/spec/migrations/backfill_nuget_temporary_packages_to_processing_status_spec.rb b/spec/migrations/backfill_nuget_temporary_packages_to_processing_status_spec.rb
index 574020e52d5..ae2656eaf98 100644
--- a/spec/migrations/backfill_nuget_temporary_packages_to_processing_status_spec.rb
+++ b/spec/migrations/backfill_nuget_temporary_packages_to_processing_status_spec.rb
@@ -4,7 +4,7 @@ require 'spec_helper'
require_migration!
-RSpec.describe BackfillNugetTemporaryPackagesToProcessingStatus, :migration do
+RSpec.describe BackfillNugetTemporaryPackagesToProcessingStatus, :migration, feature_category: :package_registry do
let(:namespaces) { table(:namespaces) }
let(:projects) { table(:projects) }
let(:packages) { table(:packages_packages) }
diff --git a/spec/migrations/backfill_project_import_level_spec.rb b/spec/migrations/backfill_project_import_level_spec.rb
index c24ddac0730..b41e323a92f 100644
--- a/spec/migrations/backfill_project_import_level_spec.rb
+++ b/spec/migrations/backfill_project_import_level_spec.rb
@@ -3,8 +3,8 @@
require 'spec_helper'
require_migration!
-RSpec.describe BackfillProjectImportLevel do
- let_it_be(:batched_migration) { described_class::MIGRATION }
+RSpec.describe BackfillProjectImportLevel, feature_category: :importers do
+ let!(:batched_migration) { described_class::MIGRATION }
describe '#up' do
it 'schedules background jobs for each batch of namespaces' do
diff --git a/spec/migrations/backfill_project_namespaces_for_group_spec.rb b/spec/migrations/backfill_project_namespaces_for_group_spec.rb
index 0d34d19d42a..b21ed6e1aa2 100644
--- a/spec/migrations/backfill_project_namespaces_for_group_spec.rb
+++ b/spec/migrations/backfill_project_namespaces_for_group_spec.rb
@@ -3,8 +3,8 @@
require 'spec_helper'
require_migration!
-RSpec.describe BackfillProjectNamespacesForGroup do
- let_it_be(:migration) { described_class::MIGRATION }
+RSpec.describe BackfillProjectNamespacesForGroup, feature_category: :subgroups do
+ let!(:migration) { described_class::MIGRATION }
let(:projects) { table(:projects) }
let(:namespaces) { table(:namespaces) }
diff --git a/spec/migrations/backfill_stage_event_hash_spec.rb b/spec/migrations/backfill_stage_event_hash_spec.rb
index cecaddcd3d4..399a9c4dfde 100644
--- a/spec/migrations/backfill_stage_event_hash_spec.rb
+++ b/spec/migrations/backfill_stage_event_hash_spec.rb
@@ -4,7 +4,7 @@ require 'spec_helper'
require_migration!
-RSpec.describe BackfillStageEventHash, schema: 20210730103808 do
+RSpec.describe BackfillStageEventHash, schema: 20210730103808, feature_category: :value_stream_management do
let(:namespaces) { table(:namespaces) }
let(:projects) { table(:projects) }
let(:labels) { table(:labels) }
diff --git a/spec/migrations/backfill_user_namespace_spec.rb b/spec/migrations/backfill_user_namespace_spec.rb
index 094aec82e9c..a58030803b1 100644
--- a/spec/migrations/backfill_user_namespace_spec.rb
+++ b/spec/migrations/backfill_user_namespace_spec.rb
@@ -3,8 +3,8 @@
require 'spec_helper'
require_migration!
-RSpec.describe BackfillUserNamespace do
- let_it_be(:migration) { described_class::MIGRATION }
+RSpec.describe BackfillUserNamespace, feature_category: :subgroups do
+ let!(:migration) { described_class::MIGRATION }
describe '#up' do
it 'schedules background jobs for each batch of namespaces' do
diff --git a/spec/migrations/bulk_insert_cluster_enabled_grants_spec.rb b/spec/migrations/bulk_insert_cluster_enabled_grants_spec.rb
index a359a78ab45..e85489198ee 100644
--- a/spec/migrations/bulk_insert_cluster_enabled_grants_spec.rb
+++ b/spec/migrations/bulk_insert_cluster_enabled_grants_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe BulkInsertClusterEnabledGrants, :migration do
+RSpec.describe BulkInsertClusterEnabledGrants, :migration, feature_category: :kubernetes_management do
let(:migration) { described_class.new }
let(:cluster_enabled_grants) { table(:cluster_enabled_grants) }
diff --git a/spec/migrations/change_public_projects_cost_factor_spec.rb b/spec/migrations/change_public_projects_cost_factor_spec.rb
index 039edda750b..656c8a45c57 100644
--- a/spec/migrations/change_public_projects_cost_factor_spec.rb
+++ b/spec/migrations/change_public_projects_cost_factor_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe ChangePublicProjectsCostFactor, migration: :gitlab_ci do
+RSpec.describe ChangePublicProjectsCostFactor, migration: :gitlab_ci, feature_category: :runner do
let(:runners) { table(:ci_runners) }
let!(:shared_1) { runners.create!(runner_type: 1, public_projects_minutes_cost_factor: 0) }
diff --git a/spec/migrations/change_task_system_note_wording_to_checklist_item_spec.rb b/spec/migrations/change_task_system_note_wording_to_checklist_item_spec.rb
index 039ee92f8bd..421c519b2bc 100644
--- a/spec/migrations/change_task_system_note_wording_to_checklist_item_spec.rb
+++ b/spec/migrations/change_task_system_note_wording_to_checklist_item_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe ChangeTaskSystemNoteWordingToChecklistItem, :migration do
+RSpec.describe ChangeTaskSystemNoteWordingToChecklistItem, :migration, feature_category: :team_planning do
let(:migration) { described_class::MIGRATION }
describe '#up' do
diff --git a/spec/migrations/change_web_hook_events_default_spec.rb b/spec/migrations/change_web_hook_events_default_spec.rb
index aad187187d0..c6c3f285ff1 100644
--- a/spec/migrations/change_web_hook_events_default_spec.rb
+++ b/spec/migrations/change_web_hook_events_default_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe ChangeWebHookEventsDefault do
+RSpec.describe ChangeWebHookEventsDefault, feature_category: :integrations do
let(:web_hooks) { table(:web_hooks) }
let(:projects) { table(:projects) }
let(:groups) { table(:namespaces) }
diff --git a/spec/migrations/clean_up_pending_builds_table_spec.rb b/spec/migrations/clean_up_pending_builds_table_spec.rb
index 17e62e1b486..e044d4a702b 100644
--- a/spec/migrations/clean_up_pending_builds_table_spec.rb
+++ b/spec/migrations/clean_up_pending_builds_table_spec.rb
@@ -3,7 +3,8 @@
require 'spec_helper'
require_migration!
-RSpec.describe CleanUpPendingBuildsTable, :suppress_gitlab_schemas_validate_connection do
+RSpec.describe CleanUpPendingBuildsTable, :suppress_gitlab_schemas_validate_connection,
+feature_category: :continuous_integration do
let(:namespaces) { table(:namespaces) }
let(:projects) { table(:projects) }
let(:queue) { table(:ci_pending_builds) }
diff --git a/spec/migrations/cleanup_after_add_primary_email_to_emails_if_user_confirmed_spec.rb b/spec/migrations/cleanup_after_add_primary_email_to_emails_if_user_confirmed_spec.rb
index abff7c6aba1..6027199c11c 100644
--- a/spec/migrations/cleanup_after_add_primary_email_to_emails_if_user_confirmed_spec.rb
+++ b/spec/migrations/cleanup_after_add_primary_email_to_emails_if_user_confirmed_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe CleanupAfterAddPrimaryEmailToEmailsIfUserConfirmed, :sidekiq do
+RSpec.describe CleanupAfterAddPrimaryEmailToEmailsIfUserConfirmed, :sidekiq, feature_category: :users do
let(:migration) { described_class.new }
let(:users) { table(:users) }
let(:emails) { table(:emails) }
diff --git a/spec/migrations/cleanup_after_fixing_issue_when_admin_changed_primary_email_spec.rb b/spec/migrations/cleanup_after_fixing_issue_when_admin_changed_primary_email_spec.rb
index eda57545c7a..e8dce46bdbc 100644
--- a/spec/migrations/cleanup_after_fixing_issue_when_admin_changed_primary_email_spec.rb
+++ b/spec/migrations/cleanup_after_fixing_issue_when_admin_changed_primary_email_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe CleanupAfterFixingIssueWhenAdminChangedPrimaryEmail, :sidekiq do
+RSpec.describe CleanupAfterFixingIssueWhenAdminChangedPrimaryEmail, :sidekiq, feature_category: :users do
let(:migration) { described_class.new }
let(:users) { table(:users) }
let(:emails) { table(:emails) }
diff --git a/spec/migrations/cleanup_after_fixing_regression_with_new_users_emails_spec.rb b/spec/migrations/cleanup_after_fixing_regression_with_new_users_emails_spec.rb
index 043bb091df3..01ceef9f3a1 100644
--- a/spec/migrations/cleanup_after_fixing_regression_with_new_users_emails_spec.rb
+++ b/spec/migrations/cleanup_after_fixing_regression_with_new_users_emails_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe CleanupAfterFixingRegressionWithNewUsersEmails, :sidekiq do
+RSpec.describe CleanupAfterFixingRegressionWithNewUsersEmails, :sidekiq, feature_category: :users do
let(:migration) { described_class.new }
let(:users) { table(:users) }
let(:emails) { table(:emails) }
diff --git a/spec/migrations/cleanup_backfill_integrations_enable_ssl_verification_spec.rb b/spec/migrations/cleanup_backfill_integrations_enable_ssl_verification_spec.rb
index 1517405b358..7aaa90ee985 100644
--- a/spec/migrations/cleanup_backfill_integrations_enable_ssl_verification_spec.rb
+++ b/spec/migrations/cleanup_backfill_integrations_enable_ssl_verification_spec.rb
@@ -3,7 +3,8 @@
require 'spec_helper'
require_migration!
-RSpec.describe CleanupBackfillIntegrationsEnableSslVerification, :migration do
+RSpec.describe CleanupBackfillIntegrationsEnableSslVerification, :migration,
+feature_category: :authentication_and_authorization do
let(:job_class_name) { 'BackfillIntegrationsEnableSslVerification' }
before do
diff --git a/spec/migrations/cleanup_move_container_registry_enabled_to_project_feature_spec.rb b/spec/migrations/cleanup_move_container_registry_enabled_to_project_feature_spec.rb
index f0f9249515b..1badde62526 100644
--- a/spec/migrations/cleanup_move_container_registry_enabled_to_project_feature_spec.rb
+++ b/spec/migrations/cleanup_move_container_registry_enabled_to_project_feature_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe CleanupMoveContainerRegistryEnabledToProjectFeature, :migration do
+RSpec.describe CleanupMoveContainerRegistryEnabledToProjectFeature, :migration, feature_category: :navigation do
let(:namespace) { table(:namespaces).create!(name: 'gitlab', path: 'gitlab-org') }
let(:non_null_project_features) { { pages_access_level: 20 } }
let(:bg_class_name) { 'MoveContainerRegistryEnabledToProjectFeature' }
diff --git a/spec/migrations/cleanup_mr_attention_request_todos_spec.rb b/spec/migrations/cleanup_mr_attention_request_todos_spec.rb
index 9f593ca8292..4fa2419aa7c 100644
--- a/spec/migrations/cleanup_mr_attention_request_todos_spec.rb
+++ b/spec/migrations/cleanup_mr_attention_request_todos_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe CleanupMrAttentionRequestTodos, :migration do
+RSpec.describe CleanupMrAttentionRequestTodos, :migration, feature_category: :code_review do
let(:projects) { table(:projects) }
let(:namespaces) { table(:namespaces) }
let(:users) { table(:users) }
diff --git a/spec/migrations/cleanup_orphaned_routes_spec.rb b/spec/migrations/cleanup_orphaned_routes_spec.rb
index 68598939557..a0ce9062c70 100644
--- a/spec/migrations/cleanup_orphaned_routes_spec.rb
+++ b/spec/migrations/cleanup_orphaned_routes_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe CleanupOrphanedRoutes, :migration do
+RSpec.describe CleanupOrphanedRoutes, :migration, feature_category: :projects do
let(:migration) { described_class::MIGRATION }
describe '#up' do
diff --git a/spec/migrations/cleanup_remaining_orphan_invites_spec.rb b/spec/migrations/cleanup_remaining_orphan_invites_spec.rb
index 987535a4f09..598030c99a0 100644
--- a/spec/migrations/cleanup_remaining_orphan_invites_spec.rb
+++ b/spec/migrations/cleanup_remaining_orphan_invites_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe CleanupRemainingOrphanInvites, :migration do
+RSpec.describe CleanupRemainingOrphanInvites, :migration, feature_category: :subgroups do
def create_member(**extra_attributes)
defaults = {
access_level: 10,
diff --git a/spec/migrations/cleanup_vulnerability_state_transitions_with_same_from_state_to_state_spec.rb b/spec/migrations/cleanup_vulnerability_state_transitions_with_same_from_state_to_state_spec.rb
index 92ece81ffc8..b808f03428d 100644
--- a/spec/migrations/cleanup_vulnerability_state_transitions_with_same_from_state_to_state_spec.rb
+++ b/spec/migrations/cleanup_vulnerability_state_transitions_with_same_from_state_to_state_spec.rb
@@ -3,10 +3,11 @@
require 'spec_helper'
require_migration!
-RSpec.describe CleanupVulnerabilityStateTransitionsWithSameFromStateToState, :migration do
- let_it_be(:namespace) { table(:namespaces).create!(name: 'namespace', type: 'Group', path: 'namespace') }
- let_it_be(:user) { table(:users).create!(email: 'author@example.com', username: 'author', projects_limit: 10) }
- let_it_be(:project) do
+RSpec.describe CleanupVulnerabilityStateTransitionsWithSameFromStateToState, :migration,
+feature_category: :vulnerability_management do
+ let!(:namespace) { table(:namespaces).create!(name: 'namespace', type: 'Group', path: 'namespace') }
+ let!(:user) { table(:users).create!(email: 'author@example.com', username: 'author', projects_limit: 10) }
+ let!(:project) do
table(:projects).create!(
path: 'project',
namespace_id: namespace.id,
@@ -14,7 +15,7 @@ RSpec.describe CleanupVulnerabilityStateTransitionsWithSameFromStateToState, :mi
)
end
- let_it_be(:vulnerability) do
+ let!(:vulnerability) do
table(:vulnerabilities).create!(
project_id: project.id,
author_id: user.id,
@@ -25,7 +26,7 @@ RSpec.describe CleanupVulnerabilityStateTransitionsWithSameFromStateToState, :mi
)
end
- let_it_be(:state_transitions) { table(:vulnerability_state_transitions) }
+ let!(:state_transitions) { table(:vulnerability_state_transitions) }
let!(:state_transition_with_no_state_change) do
state_transitions.create!(
diff --git a/spec/migrations/confirm_security_bot_spec.rb b/spec/migrations/confirm_security_bot_spec.rb
index 19ca81f92f3..3761c113692 100644
--- a/spec/migrations/confirm_security_bot_spec.rb
+++ b/spec/migrations/confirm_security_bot_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe ConfirmSecurityBot, :migration do
+RSpec.describe ConfirmSecurityBot, :migration, feature_category: :users do
let(:users) { table(:users) }
let(:user_type) { 8 }
diff --git a/spec/migrations/confirm_support_bot_user_spec.rb b/spec/migrations/confirm_support_bot_user_spec.rb
index c60c7fe45f7..863bdb13585 100644
--- a/spec/migrations/confirm_support_bot_user_spec.rb
+++ b/spec/migrations/confirm_support_bot_user_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe ConfirmSupportBotUser, :migration do
+RSpec.describe ConfirmSupportBotUser, :migration, feature_category: :users do
let(:users) { table(:users) }
context 'when support bot user is currently unconfirmed' do
@@ -72,7 +72,7 @@ RSpec.describe ConfirmSupportBotUser, :migration do
private
- def create_user!(name: 'GitLab Support Bot', email: 'support@example.com', user_type:, created_at: Time.now, confirmed_at: nil, record_timestamps: true)
+ def create_user!(user_type:, name: 'GitLab Support Bot', email: 'support@example.com', created_at: Time.now, confirmed_at: nil, record_timestamps: true)
users.create!(
name: name,
email: email,
diff --git a/spec/migrations/delete_migrate_shared_vulnerability_scanners_spec.rb b/spec/migrations/delete_migrate_shared_vulnerability_scanners_spec.rb
index 259b175cd19..562b1e25db4 100644
--- a/spec/migrations/delete_migrate_shared_vulnerability_scanners_spec.rb
+++ b/spec/migrations/delete_migrate_shared_vulnerability_scanners_spec.rb
@@ -4,7 +4,7 @@ require "spec_helper"
require_migration!
-RSpec.describe DeleteMigrateSharedVulnerabilityScanners, :migration do
+RSpec.describe DeleteMigrateSharedVulnerabilityScanners, :migration, feature_category: :vulnerability_management do
let(:batched_background_migrations) { table(:batched_background_migrations) }
let(:batched_background_migration_jobs) { table(:batched_background_migration_jobs) }
diff --git a/spec/migrations/delete_security_findings_without_uuid_spec.rb b/spec/migrations/delete_security_findings_without_uuid_spec.rb
index bfd89f1aa82..e4c17288384 100644
--- a/spec/migrations/delete_security_findings_without_uuid_spec.rb
+++ b/spec/migrations/delete_security_findings_without_uuid_spec.rb
@@ -3,7 +3,8 @@
require 'spec_helper'
require_migration!
-RSpec.describe DeleteSecurityFindingsWithoutUuid, :suppress_gitlab_schemas_validate_connection do
+RSpec.describe DeleteSecurityFindingsWithoutUuid, :suppress_gitlab_schemas_validate_connection,
+feature_category: :vulnerability_management do
let(:users) { table(:users) }
let(:namespaces) { table(:namespaces) }
let(:projects) { table(:projects) }
diff --git a/spec/migrations/disable_expiration_policies_linked_to_no_container_images_spec.rb b/spec/migrations/disable_expiration_policies_linked_to_no_container_images_spec.rb
index f2be06f1ed6..1d948257fcc 100644
--- a/spec/migrations/disable_expiration_policies_linked_to_no_container_images_spec.rb
+++ b/spec/migrations/disable_expiration_policies_linked_to_no_container_images_spec.rb
@@ -4,7 +4,7 @@ require 'spec_helper'
require_migration!
-RSpec.describe DisableExpirationPoliciesLinkedToNoContainerImages do
+RSpec.describe DisableExpirationPoliciesLinkedToNoContainerImages, feature_category: :container_registry do
let(:projects) { table(:projects) }
let(:container_expiration_policies) { table(:container_expiration_policies) }
let(:container_repositories) { table(:container_repositories) }
diff --git a/spec/migrations/disable_job_token_scope_when_unused_spec.rb b/spec/migrations/disable_job_token_scope_when_unused_spec.rb
index 3ce4ef5c102..fddf3594e2b 100644
--- a/spec/migrations/disable_job_token_scope_when_unused_spec.rb
+++ b/spec/migrations/disable_job_token_scope_when_unused_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe DisableJobTokenScopeWhenUnused do
+RSpec.describe DisableJobTokenScopeWhenUnused, feature_category: :continuous_integration do
it 'is a no-op' do
migrate!
end
diff --git a/spec/migrations/finalize_invalid_member_cleanup_spec.rb b/spec/migrations/finalize_invalid_member_cleanup_spec.rb
index a29a89c2396..29d03f8983c 100644
--- a/spec/migrations/finalize_invalid_member_cleanup_spec.rb
+++ b/spec/migrations/finalize_invalid_member_cleanup_spec.rb
@@ -3,10 +3,10 @@
require 'spec_helper'
require_migration!
-RSpec.describe FinalizeInvalidMemberCleanup, :migration do
+RSpec.describe FinalizeInvalidMemberCleanup, :migration, feature_category: :subgroups do
let(:batched_migrations) { table(:batched_background_migrations) }
- let_it_be(:migration) { described_class::MIGRATION }
+ let!(:migration) { described_class::MIGRATION }
describe '#up' do
shared_examples 'finalizes the migration' do
diff --git a/spec/migrations/finalize_issues_namespace_id_backfilling_spec.rb b/spec/migrations/finalize_issues_namespace_id_backfilling_spec.rb
new file mode 100644
index 00000000000..d0c25fb3dd6
--- /dev/null
+++ b/spec/migrations/finalize_issues_namespace_id_backfilling_spec.rb
@@ -0,0 +1,72 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+require_migration!
+
+RSpec.describe FinalizeIssuesNamespaceIdBackfilling, :migration, feature_category: :team_planning do
+ let(:batched_migrations) { table(:batched_background_migrations) }
+
+ let!(:migration) { described_class::MIGRATION }
+
+ describe '#up' do
+ shared_examples 'finalizes the migration' do
+ it 'finalizes the migration' do
+ allow_next_instance_of(Gitlab::Database::BackgroundMigration::BatchedMigrationRunner) do |runner|
+ expect(runner).to receive(:finalize).with('BackfillProjectNamespaceOnIssues', :projects, :id, [])
+ end
+ end
+ end
+
+ context 'when routes backfilling migration is missing' do
+ it 'warns migration not found' do
+ expect(Gitlab::AppLogger)
+ .to receive(:warn).with(/Could not find batched background migration for the given configuration:/)
+
+ migrate!
+ end
+ end
+
+ context 'with backfilling migration present' do
+ let!(:project_namespace_backfill) do
+ batched_migrations.create!(
+ job_class_name: 'BackfillProjectNamespaceOnIssues',
+ table_name: :routes,
+ column_name: :id,
+ job_arguments: [],
+ interval: 2.minutes,
+ min_value: 1,
+ max_value: 2,
+ batch_size: 1000,
+ sub_batch_size: 200,
+ gitlab_schema: :gitlab_main,
+ status: 3 # finished
+ )
+ end
+
+ context 'when backfilling migration finished successfully' do
+ it 'does not raise exception' do
+ expect { migrate! }.not_to raise_error
+ end
+ end
+
+ context 'with different backfilling migration statuses' do
+ using RSpec::Parameterized::TableSyntax
+
+ where(:status, :description) do
+ 0 | 'paused'
+ 1 | 'active'
+ 4 | 'failed'
+ 5 | 'finalizing'
+ end
+
+ with_them do
+ before do
+ project_namespace_backfill.update!(status: status)
+ end
+
+ it_behaves_like 'finalizes the migration'
+ end
+ end
+ end
+ end
+end
diff --git a/spec/migrations/finalize_orphaned_routes_cleanup_spec.rb b/spec/migrations/finalize_orphaned_routes_cleanup_spec.rb
index dfc95ed9e63..78546806039 100644
--- a/spec/migrations/finalize_orphaned_routes_cleanup_spec.rb
+++ b/spec/migrations/finalize_orphaned_routes_cleanup_spec.rb
@@ -3,10 +3,10 @@
require 'spec_helper'
require_migration!
-RSpec.describe FinalizeOrphanedRoutesCleanup, :migration do
+RSpec.describe FinalizeOrphanedRoutesCleanup, :migration, feature_category: :projects do
let(:batched_migrations) { table(:batched_background_migrations) }
- let_it_be(:migration) { described_class::MIGRATION }
+ let!(:migration) { described_class::MIGRATION }
describe '#up' do
shared_examples 'finalizes the migration' do
diff --git a/spec/migrations/finalize_project_namespaces_backfill_spec.rb b/spec/migrations/finalize_project_namespaces_backfill_spec.rb
index 56f3b0f6ba5..6cc3a694de8 100644
--- a/spec/migrations/finalize_project_namespaces_backfill_spec.rb
+++ b/spec/migrations/finalize_project_namespaces_backfill_spec.rb
@@ -3,10 +3,10 @@
require 'spec_helper'
require_migration!
-RSpec.describe FinalizeProjectNamespacesBackfill, :migration do
+RSpec.describe FinalizeProjectNamespacesBackfill, :migration, feature_category: :projects do
let(:batched_migrations) { table(:batched_background_migrations) }
- let_it_be(:migration) { described_class::MIGRATION }
+ let!(:migration) { described_class::MIGRATION }
describe '#up' do
shared_examples 'finalizes the migration' do
diff --git a/spec/migrations/finalize_routes_backfilling_for_projects_spec.rb b/spec/migrations/finalize_routes_backfilling_for_projects_spec.rb
index 2bb740d0c2f..b79fdc98425 100644
--- a/spec/migrations/finalize_routes_backfilling_for_projects_spec.rb
+++ b/spec/migrations/finalize_routes_backfilling_for_projects_spec.rb
@@ -3,10 +3,10 @@
require 'spec_helper'
require_migration!
-RSpec.describe FinalizeRoutesBackfillingForProjects, :migration do
+RSpec.describe FinalizeRoutesBackfillingForProjects, :migration, feature_category: :projects do
let(:batched_migrations) { table(:batched_background_migrations) }
- let_it_be(:migration) { described_class::MIGRATION }
+ let!(:migration) { described_class::MIGRATION }
describe '#up' do
shared_examples 'finalizes the migration' do
diff --git a/spec/migrations/finalize_traversal_ids_background_migrations_spec.rb b/spec/migrations/finalize_traversal_ids_background_migrations_spec.rb
index 74d6447e6a7..0cebe7b9f91 100644
--- a/spec/migrations/finalize_traversal_ids_background_migrations_spec.rb
+++ b/spec/migrations/finalize_traversal_ids_background_migrations_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!('finalize_traversal_ids_background_migrations')
-RSpec.describe FinalizeTraversalIdsBackgroundMigrations, :migration do
+RSpec.describe FinalizeTraversalIdsBackgroundMigrations, :migration, feature_category: :database do
shared_context 'incomplete background migration' do
before do
# Jobs enqueued in Sidekiq.
diff --git a/spec/migrations/fix_and_backfill_project_namespaces_for_projects_with_duplicate_name_spec.rb b/spec/migrations/fix_and_backfill_project_namespaces_for_projects_with_duplicate_name_spec.rb
index 44a2220b2ad..6b9fb1c6f2c 100644
--- a/spec/migrations/fix_and_backfill_project_namespaces_for_projects_with_duplicate_name_spec.rb
+++ b/spec/migrations/fix_and_backfill_project_namespaces_for_projects_with_duplicate_name_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe FixAndBackfillProjectNamespacesForProjectsWithDuplicateName, :migration do
+RSpec.describe FixAndBackfillProjectNamespacesForProjectsWithDuplicateName, :migration, feature_category: :projects do
let(:projects) { table(:projects) }
let(:namespaces) { table(:namespaces) }
diff --git a/spec/migrations/fix_batched_migrations_old_format_job_arguments_spec.rb b/spec/migrations/fix_batched_migrations_old_format_job_arguments_spec.rb
index e15011d0dab..8def53e1858 100644
--- a/spec/migrations/fix_batched_migrations_old_format_job_arguments_spec.rb
+++ b/spec/migrations/fix_batched_migrations_old_format_job_arguments_spec.rb
@@ -4,7 +4,7 @@ require 'spec_helper'
require_migration!
# rubocop:disable Style/WordArray
-RSpec.describe FixBatchedMigrationsOldFormatJobArguments do
+RSpec.describe FixBatchedMigrationsOldFormatJobArguments, feature_category: :users do
let(:batched_background_migrations) { table(:batched_background_migrations) }
context 'when migrations with legacy job arguments exists' do
diff --git a/spec/migrations/generate_customers_dot_jwt_signing_key_spec.rb b/spec/migrations/generate_customers_dot_jwt_signing_key_spec.rb
index b7a91abf5d7..1385b67b607 100644
--- a/spec/migrations/generate_customers_dot_jwt_signing_key_spec.rb
+++ b/spec/migrations/generate_customers_dot_jwt_signing_key_spec.rb
@@ -4,7 +4,7 @@ require 'spec_helper'
require_migration!
-RSpec.describe GenerateCustomersDotJwtSigningKey do
+RSpec.describe GenerateCustomersDotJwtSigningKey, feature_category: :customersdot_application do
let(:application_settings) do
Class.new(ActiveRecord::Base) do
self.table_name = 'application_settings'
diff --git a/spec/migrations/insert_ci_daily_pipeline_schedule_triggers_plan_limits_spec.rb b/spec/migrations/insert_ci_daily_pipeline_schedule_triggers_plan_limits_spec.rb
index 1b6cb6a86a0..9358b71132c 100644
--- a/spec/migrations/insert_ci_daily_pipeline_schedule_triggers_plan_limits_spec.rb
+++ b/spec/migrations/insert_ci_daily_pipeline_schedule_triggers_plan_limits_spec.rb
@@ -3,9 +3,9 @@
require 'spec_helper'
require_migration!
-RSpec.describe InsertCiDailyPipelineScheduleTriggersPlanLimits do
- let_it_be(:plans) { table(:plans) }
- let_it_be(:plan_limits) { table(:plan_limits) }
+RSpec.describe InsertCiDailyPipelineScheduleTriggersPlanLimits, feature_category: :purchase do
+ let!(:plans) { table(:plans) }
+ let!(:plan_limits) { table(:plan_limits) }
context 'when on Gitlab.com' do
let(:free_plan) { plans.create!(name: 'free') }
@@ -46,25 +46,25 @@ RSpec.describe InsertCiDailyPipelineScheduleTriggersPlanLimits do
end
context 'when on self hosted' do
- let(:free_plan) { plans.create!(name: 'free') }
+ let(:default_plan) { plans.create!(name: 'default') }
before do
allow(Gitlab).to receive(:com?).and_return(false)
- plan_limits.create!(plan_id: free_plan.id)
+ plan_limits.create!(plan_id: default_plan.id)
end
it 'does nothing' do
reversible_migration do |migration|
migration.before -> {
expect(plan_limits.pluck(:plan_id, :ci_daily_pipeline_schedule_triggers)).to contain_exactly(
- [free_plan.id, 0]
+ [default_plan.id, 0]
)
}
migration.after -> {
expect(plan_limits.pluck(:plan_id, :ci_daily_pipeline_schedule_triggers)).to contain_exactly(
- [free_plan.id, 0]
+ [default_plan.id, 0]
)
}
end
diff --git a/spec/migrations/migrate_elastic_index_settings_spec.rb b/spec/migrations/migrate_elastic_index_settings_spec.rb
index 5f39d9b9fc1..b67c4d902c7 100644
--- a/spec/migrations/migrate_elastic_index_settings_spec.rb
+++ b/spec/migrations/migrate_elastic_index_settings_spec.rb
@@ -4,7 +4,7 @@ require 'spec_helper'
require_migration!
-RSpec.describe MigrateElasticIndexSettings do
+RSpec.describe MigrateElasticIndexSettings, feature_category: :global_search do
let(:elastic_index_settings) { table(:elastic_index_settings) }
let(:application_settings) { table(:application_settings) }
diff --git a/spec/migrations/migrate_protected_attribute_to_pending_builds_spec.rb b/spec/migrations/migrate_protected_attribute_to_pending_builds_spec.rb
index 01805a9eb79..2f62147da9d 100644
--- a/spec/migrations/migrate_protected_attribute_to_pending_builds_spec.rb
+++ b/spec/migrations/migrate_protected_attribute_to_pending_builds_spec.rb
@@ -3,7 +3,8 @@
require 'spec_helper'
require_migration!
-RSpec.describe MigrateProtectedAttributeToPendingBuilds, :suppress_gitlab_schemas_validate_connection do
+RSpec.describe MigrateProtectedAttributeToPendingBuilds, :suppress_gitlab_schemas_validate_connection,
+feature_category: :continuous_integration do
let(:namespaces) { table(:namespaces) }
let(:projects) { table(:projects) }
let(:queue) { table(:ci_pending_builds) }
diff --git a/spec/migrations/move_container_registry_enabled_to_project_features3_spec.rb b/spec/migrations/move_container_registry_enabled_to_project_features3_spec.rb
index e47cea749d6..25e0ef439bd 100644
--- a/spec/migrations/move_container_registry_enabled_to_project_features3_spec.rb
+++ b/spec/migrations/move_container_registry_enabled_to_project_features3_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe MoveContainerRegistryEnabledToProjectFeatures3, :migration do
+RSpec.describe MoveContainerRegistryEnabledToProjectFeatures3, :migration, feature_category: :container_registry do
let(:namespace) { table(:namespaces).create!(name: 'gitlab', path: 'gitlab-org') }
let!(:background_jobs) do
diff --git a/spec/migrations/move_security_findings_table_to_gitlab_partitions_dynamic_schema_spec.rb b/spec/migrations/move_security_findings_table_to_gitlab_partitions_dynamic_schema_spec.rb
index b5bb86edce2..2533d3224a6 100644
--- a/spec/migrations/move_security_findings_table_to_gitlab_partitions_dynamic_schema_spec.rb
+++ b/spec/migrations/move_security_findings_table_to_gitlab_partitions_dynamic_schema_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe MoveSecurityFindingsTableToGitlabPartitionsDynamicSchema do
+RSpec.describe MoveSecurityFindingsTableToGitlabPartitionsDynamicSchema, feature_category: :vulnerability_management do
let(:partitions_sql) do
<<~SQL
SELECT
diff --git a/spec/migrations/orphaned_invite_tokens_cleanup_spec.rb b/spec/migrations/orphaned_invite_tokens_cleanup_spec.rb
index b33e29f82e2..56f47fca864 100644
--- a/spec/migrations/orphaned_invite_tokens_cleanup_spec.rb
+++ b/spec/migrations/orphaned_invite_tokens_cleanup_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe OrphanedInviteTokensCleanup, :migration do
+RSpec.describe OrphanedInviteTokensCleanup, :migration, feature_category: :subgroups do
def create_member(**extra_attributes)
defaults = {
access_level: 10,
diff --git a/spec/migrations/orphaned_invited_members_cleanup_spec.rb b/spec/migrations/orphaned_invited_members_cleanup_spec.rb
index 4427e707f56..1d4db5306bc 100644
--- a/spec/migrations/orphaned_invited_members_cleanup_spec.rb
+++ b/spec/migrations/orphaned_invited_members_cleanup_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe OrphanedInvitedMembersCleanup, :migration do
+RSpec.describe OrphanedInvitedMembersCleanup, :migration, feature_category: :subgroups do
describe '#up', :aggregate_failures do
it 'removes accepted members with no associated user' do
user = create_user!('testuser1')
diff --git a/spec/migrations/populate_audit_event_streaming_verification_token_spec.rb b/spec/migrations/populate_audit_event_streaming_verification_token_spec.rb
index b3fe1776183..e2c117903d4 100644
--- a/spec/migrations/populate_audit_event_streaming_verification_token_spec.rb
+++ b/spec/migrations/populate_audit_event_streaming_verification_token_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe PopulateAuditEventStreamingVerificationToken do
+RSpec.describe PopulateAuditEventStreamingVerificationToken, feature_category: :audit_events do
let(:groups) { table(:namespaces) }
let(:destinations) { table(:audit_events_external_audit_event_destinations) }
let(:migration) { described_class.new }
diff --git a/spec/migrations/populate_dismissal_information_for_vulnerabilities_spec.rb b/spec/migrations/populate_dismissal_information_for_vulnerabilities_spec.rb
index 1db52781956..66fd5eb5ae5 100644
--- a/spec/migrations/populate_dismissal_information_for_vulnerabilities_spec.rb
+++ b/spec/migrations/populate_dismissal_information_for_vulnerabilities_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe PopulateDismissalInformationForVulnerabilities do
+RSpec.describe PopulateDismissalInformationForVulnerabilities, feature_category: :vulnerability_management do
let(:users) { table(:users) }
let(:namespaces) { table(:namespaces) }
let(:projects) { table(:projects) }
diff --git a/spec/migrations/populate_operation_visibility_permissions_spec.rb b/spec/migrations/populate_operation_visibility_permissions_spec.rb
index 6737a6f84c3..704152bd6a9 100644
--- a/spec/migrations/populate_operation_visibility_permissions_spec.rb
+++ b/spec/migrations/populate_operation_visibility_permissions_spec.rb
@@ -4,7 +4,7 @@ require 'spec_helper'
require_migration!
-RSpec.describe PopulateOperationVisibilityPermissions, :migration do
+RSpec.describe PopulateOperationVisibilityPermissions, :migration, feature_category: :navigation do
let(:migration) { described_class::MIGRATION }
before do
diff --git a/spec/migrations/populate_releases_access_level_from_repository_spec.rb b/spec/migrations/populate_releases_access_level_from_repository_spec.rb
index 2bb97662923..ebb7aa6f7fa 100644
--- a/spec/migrations/populate_releases_access_level_from_repository_spec.rb
+++ b/spec/migrations/populate_releases_access_level_from_repository_spec.rb
@@ -4,7 +4,7 @@ require 'spec_helper'
require_migration!
-RSpec.describe PopulateReleasesAccessLevelFromRepository, :migration do
+RSpec.describe PopulateReleasesAccessLevelFromRepository, :migration, feature_category: :navigation do
let(:projects) { table(:projects) }
let(:groups) { table(:namespaces) }
let(:project_features) { table(:project_features) }
diff --git a/spec/migrations/queue_backfill_project_feature_package_registry_access_level_spec.rb b/spec/migrations/queue_backfill_project_feature_package_registry_access_level_spec.rb
index 487d94b82a1..6a01b30445b 100644
--- a/spec/migrations/queue_backfill_project_feature_package_registry_access_level_spec.rb
+++ b/spec/migrations/queue_backfill_project_feature_package_registry_access_level_spec.rb
@@ -3,8 +3,8 @@
require 'spec_helper'
require_migration!
-RSpec.describe QueueBackfillProjectFeaturePackageRegistryAccessLevel do
- let_it_be(:batched_migration) { described_class::MIGRATION }
+RSpec.describe QueueBackfillProjectFeaturePackageRegistryAccessLevel, feature_category: :package_registry do
+ let!(:batched_migration) { described_class::MIGRATION }
it 'schedules a new batched migration' do
reversible_migration do |migration|
diff --git a/spec/migrations/queue_backfill_user_details_fields_spec.rb b/spec/migrations/queue_backfill_user_details_fields_spec.rb
index 388ac6d1bce..e77a66907de 100644
--- a/spec/migrations/queue_backfill_user_details_fields_spec.rb
+++ b/spec/migrations/queue_backfill_user_details_fields_spec.rb
@@ -3,8 +3,8 @@
require 'spec_helper'
require_migration!
-RSpec.describe QueueBackfillUserDetailsFields do
- let_it_be(:batched_migration) { described_class::MIGRATION }
+RSpec.describe QueueBackfillUserDetailsFields, feature_category: :users do
+ let!(:batched_migration) { described_class::MIGRATION }
it 'schedules a new batched migration' do
reversible_migration do |migration|
diff --git a/spec/migrations/queue_populate_projects_star_count_spec.rb b/spec/migrations/queue_populate_projects_star_count_spec.rb
index 848136d8005..84565d14d52 100644
--- a/spec/migrations/queue_populate_projects_star_count_spec.rb
+++ b/spec/migrations/queue_populate_projects_star_count_spec.rb
@@ -3,8 +3,8 @@
require 'spec_helper'
require_migration!
-RSpec.describe QueuePopulateProjectsStarCount do
- let_it_be(:batched_migration) { described_class::MIGRATION }
+RSpec.describe QueuePopulateProjectsStarCount, feature_category: :users do
+ let!(:batched_migration) { described_class::MIGRATION }
it 'schedules a new batched migration' do
reversible_migration do |migration|
diff --git a/spec/migrations/re_schedule_latest_pipeline_id_population_with_all_security_related_artifact_types_spec.rb b/spec/migrations/re_schedule_latest_pipeline_id_population_with_all_security_related_artifact_types_spec.rb
index 45a2772adda..5ebe6787f15 100644
--- a/spec/migrations/re_schedule_latest_pipeline_id_population_with_all_security_related_artifact_types_spec.rb
+++ b/spec/migrations/re_schedule_latest_pipeline_id_population_with_all_security_related_artifact_types_spec.rb
@@ -4,7 +4,7 @@ require 'spec_helper'
require_migration!
RSpec.describe ReScheduleLatestPipelineIdPopulationWithAllSecurityRelatedArtifactTypes,
- :suppress_gitlab_schemas_validate_connection do
+ :suppress_gitlab_schemas_validate_connection, feature_category: :vulnerability_management do
let(:namespaces) { table(:namespaces) }
let(:pipelines) { table(:ci_pipelines) }
let(:projects) { table(:projects) }
diff --git a/spec/migrations/recount_epic_cache_counts_spec.rb b/spec/migrations/recount_epic_cache_counts_spec.rb
index 56aa96cb40c..d065389a726 100644
--- a/spec/migrations/recount_epic_cache_counts_spec.rb
+++ b/spec/migrations/recount_epic_cache_counts_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe RecountEpicCacheCounts, :migration do
+RSpec.describe RecountEpicCacheCounts, :migration, feature_category: :portfolio_management do
let(:migration) { described_class::MIGRATION }
describe '#up' do
diff --git a/spec/migrations/recreate_index_security_ci_builds_on_name_and_id_parser_features_spec.rb b/spec/migrations/recreate_index_security_ci_builds_on_name_and_id_parser_features_spec.rb
index 77824a743fb..80ecc23dfbe 100644
--- a/spec/migrations/recreate_index_security_ci_builds_on_name_and_id_parser_features_spec.rb
+++ b/spec/migrations/recreate_index_security_ci_builds_on_name_and_id_parser_features_spec.rb
@@ -4,7 +4,7 @@ require 'spec_helper'
require_migration!
-RSpec.describe RecreateIndexSecurityCiBuildsOnNameAndIdParserFeatures, :migration do
+RSpec.describe RecreateIndexSecurityCiBuildsOnNameAndIdParserFeatures, :migration, feature_category: :database do
let(:db) { described_class.new }
let(:pg_class) { table(:pg_class) }
let(:pg_index) { table(:pg_index) }
diff --git a/spec/migrations/recreate_index_security_ci_builds_on_name_and_id_parser_with_new_features_spec.rb b/spec/migrations/recreate_index_security_ci_builds_on_name_and_id_parser_with_new_features_spec.rb
index 8ec51d86779..c7709764727 100644
--- a/spec/migrations/recreate_index_security_ci_builds_on_name_and_id_parser_with_new_features_spec.rb
+++ b/spec/migrations/recreate_index_security_ci_builds_on_name_and_id_parser_with_new_features_spec.rb
@@ -4,7 +4,7 @@ require 'spec_helper'
require_migration!
-RSpec.describe RecreateIndexSecurityCiBuildsOnNameAndIdParserWithNewFeatures, :migration do
+RSpec.describe RecreateIndexSecurityCiBuildsOnNameAndIdParserWithNewFeatures, :migration, feature_category: :continuous_integration do
let(:db) { described_class.new }
let(:pg_class) { table(:pg_class) }
let(:pg_index) { table(:pg_index) }
diff --git a/spec/migrations/remove_duplicate_dast_site_tokens_spec.rb b/spec/migrations/remove_duplicate_dast_site_tokens_spec.rb
index fed9941b2a4..2b21dc3b67f 100644
--- a/spec/migrations/remove_duplicate_dast_site_tokens_spec.rb
+++ b/spec/migrations/remove_duplicate_dast_site_tokens_spec.rb
@@ -4,7 +4,7 @@ require 'spec_helper'
require_migration!
-RSpec.describe RemoveDuplicateDastSiteTokens do
+RSpec.describe RemoveDuplicateDastSiteTokens, feature_category: :dynamic_application_security_testing do
let(:namespaces) { table(:namespaces) }
let(:projects) { table(:projects) }
let(:dast_site_tokens) { table(:dast_site_tokens) }
@@ -15,7 +15,7 @@ RSpec.describe RemoveDuplicateDastSiteTokens do
context 'when duplicate dast site tokens exists' do
# create duplicate dast site token
- let_it_be(:duplicate_url) { 'https://about.gitlab.com' }
+ let!(:duplicate_url) { 'https://about.gitlab.com' }
let!(:project2) { projects.create!(id: 2, namespace_id: namespace.id, path: 'project2') }
let!(:dast_site_token2) { dast_site_tokens.create!(project_id: project2.id, url: duplicate_url, token: SecureRandom.uuid) }
diff --git a/spec/migrations/remove_duplicate_dast_site_tokens_with_same_token_spec.rb b/spec/migrations/remove_duplicate_dast_site_tokens_with_same_token_spec.rb
index 57d677af5cf..6cc25b74d02 100644
--- a/spec/migrations/remove_duplicate_dast_site_tokens_with_same_token_spec.rb
+++ b/spec/migrations/remove_duplicate_dast_site_tokens_with_same_token_spec.rb
@@ -4,7 +4,7 @@ require 'spec_helper'
require_migration!
-RSpec.describe RemoveDuplicateDastSiteTokensWithSameToken do
+RSpec.describe RemoveDuplicateDastSiteTokensWithSameToken, feature_category: :dynamic_application_security_testing do
let(:namespaces) { table(:namespaces) }
let(:projects) { table(:projects) }
let(:dast_site_tokens) { table(:dast_site_tokens) }
@@ -15,8 +15,8 @@ RSpec.describe RemoveDuplicateDastSiteTokensWithSameToken do
context 'when duplicate dast site tokens exists' do
# create duplicate dast site token
- let_it_be(:duplicate_token) { 'duplicate_token' }
- let_it_be(:other_duplicate_token) { 'other_duplicate_token' }
+ let!(:duplicate_token) { 'duplicate_token' }
+ let!(:other_duplicate_token) { 'other_duplicate_token' }
let!(:project2) { projects.create!(id: 2, namespace_id: namespace.id, path: 'project2') }
let!(:dast_site_token2) { dast_site_tokens.create!(project_id: project2.id, url: 'https://gitlab2.com', token: duplicate_token) }
diff --git a/spec/migrations/remove_flowdock_integration_records_spec.rb b/spec/migrations/remove_flowdock_integration_records_spec.rb
new file mode 100644
index 00000000000..3f57515d18b
--- /dev/null
+++ b/spec/migrations/remove_flowdock_integration_records_spec.rb
@@ -0,0 +1,23 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+require Rails.root.join('db/post_migrate/20221129124240_remove_flowdock_integration_records.rb')
+
+RSpec.describe RemoveFlowdockIntegrationRecords, feature_category: :integrations do
+ let(:integrations) { table(:integrations) }
+
+ before do
+ integrations.create!(type_new: 'Integrations::Flowdock')
+ integrations.create!(type_new: 'SomeOtherType')
+ end
+
+ it 'removes integrations records of type_new Integrations::Flowdock' do
+ expect(integrations.count).to eq(2)
+
+ migrate!
+
+ expect(integrations.count).to eq(1)
+ expect(integrations.first.type_new).to eq('SomeOtherType')
+ expect(integrations.where(type_new: 'Integrations::Flowdock')).to be_empty
+ end
+end
diff --git a/spec/migrations/remove_hipchat_service_records_spec.rb b/spec/migrations/remove_hipchat_service_records_spec.rb
index d218b6b23a5..b89572b069e 100644
--- a/spec/migrations/remove_hipchat_service_records_spec.rb
+++ b/spec/migrations/remove_hipchat_service_records_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe RemoveHipchatServiceRecords do
+RSpec.describe RemoveHipchatServiceRecords, feature_category: :integrations do
let(:services) { table(:services) }
before do
diff --git a/spec/migrations/remove_invalid_integrations_spec.rb b/spec/migrations/remove_invalid_integrations_spec.rb
index cab2d79998e..52adc087e0a 100644
--- a/spec/migrations/remove_invalid_integrations_spec.rb
+++ b/spec/migrations/remove_invalid_integrations_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe RemoveInvalidIntegrations, :migration do
+RSpec.describe RemoveInvalidIntegrations, :migration, feature_category: :integrations do
describe '#up' do
let!(:integrations) { table(:integrations) }
diff --git a/spec/migrations/remove_not_null_contraint_on_title_from_sprints_spec.rb b/spec/migrations/remove_not_null_contraint_on_title_from_sprints_spec.rb
index 198644fe183..91687d8d730 100644
--- a/spec/migrations/remove_not_null_contraint_on_title_from_sprints_spec.rb
+++ b/spec/migrations/remove_not_null_contraint_on_title_from_sprints_spec.rb
@@ -4,7 +4,7 @@ require 'spec_helper'
require_migration!
-RSpec.describe RemoveNotNullContraintOnTitleFromSprints, :migration do
+RSpec.describe RemoveNotNullContraintOnTitleFromSprints, :migration, feature_category: :team_planning do
let(:migration) { described_class.new }
let(:namespaces) { table(:namespaces) }
let(:sprints) { table(:sprints) }
diff --git a/spec/migrations/remove_records_without_group_from_webhooks_table_spec.rb b/spec/migrations/remove_records_without_group_from_webhooks_table_spec.rb
index c267e419b42..eabf6271ded 100644
--- a/spec/migrations/remove_records_without_group_from_webhooks_table_spec.rb
+++ b/spec/migrations/remove_records_without_group_from_webhooks_table_spec.rb
@@ -5,7 +5,7 @@ require 'spec_helper'
require_migration!
require_migration!('add_not_valid_foreign_key_to_group_hooks')
-RSpec.describe RemoveRecordsWithoutGroupFromWebhooksTable, schema: 20210330091751 do
+RSpec.describe RemoveRecordsWithoutGroupFromWebhooksTable, schema: 20210330091751, feature_category: :integrations do
let(:web_hooks) { table(:web_hooks) }
let(:groups) { table(:namespaces) }
diff --git a/spec/migrations/remove_schedule_and_status_from_pending_alert_escalations_spec.rb b/spec/migrations/remove_schedule_and_status_from_pending_alert_escalations_spec.rb
index f595261ff90..86e161cea43 100644
--- a/spec/migrations/remove_schedule_and_status_from_pending_alert_escalations_spec.rb
+++ b/spec/migrations/remove_schedule_and_status_from_pending_alert_escalations_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe RemoveScheduleAndStatusFromPendingAlertEscalations do
+RSpec.describe RemoveScheduleAndStatusFromPendingAlertEscalations, feature_category: :incident_management do
let(:escalations) { table(:incident_management_pending_alert_escalations) }
let(:schedule_index) { 'index_incident_management_pending_alert_escalations_on_schedule' }
let(:schedule_foreign_key) { 'fk_rails_fcbfd9338b' }
diff --git a/spec/migrations/remove_wiki_notes_spec.rb b/spec/migrations/remove_wiki_notes_spec.rb
index 2ffebdee106..55f58ef7be6 100644
--- a/spec/migrations/remove_wiki_notes_spec.rb
+++ b/spec/migrations/remove_wiki_notes_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe RemoveWikiNotes, :migration do
+RSpec.describe RemoveWikiNotes, :migration, feature_category: :team_planning do
let(:notes) { table(:notes) }
it 'removes all wiki notes' do
diff --git a/spec/migrations/rename_services_to_integrations_spec.rb b/spec/migrations/rename_services_to_integrations_spec.rb
index 812dd5efecb..a90b0bfabd2 100644
--- a/spec/migrations/rename_services_to_integrations_spec.rb
+++ b/spec/migrations/rename_services_to_integrations_spec.rb
@@ -4,7 +4,7 @@ require 'spec_helper'
require_migration!
-RSpec.describe RenameServicesToIntegrations do
+RSpec.describe RenameServicesToIntegrations, feature_category: :integrations do
let(:migration) { described_class.new }
let(:namespaces) { table(:namespaces) }
let(:projects) { table(:projects) }
diff --git a/spec/migrations/replace_external_wiki_triggers_spec.rb b/spec/migrations/replace_external_wiki_triggers_spec.rb
index 392ef76c5ba..c2bc5c44c77 100644
--- a/spec/migrations/replace_external_wiki_triggers_spec.rb
+++ b/spec/migrations/replace_external_wiki_triggers_spec.rb
@@ -4,7 +4,7 @@ require 'spec_helper'
require_migration!
-RSpec.describe ReplaceExternalWikiTriggers do
+RSpec.describe ReplaceExternalWikiTriggers, feature_category: :integrations do
let(:migration) { described_class.new }
let(:namespaces) { table(:namespaces) }
let(:projects) { table(:projects) }
diff --git a/spec/migrations/reschedule_backfill_imported_issue_search_data_spec.rb b/spec/migrations/reschedule_backfill_imported_issue_search_data_spec.rb
index 7581c201a59..fe730f452f7 100644
--- a/spec/migrations/reschedule_backfill_imported_issue_search_data_spec.rb
+++ b/spec/migrations/reschedule_backfill_imported_issue_search_data_spec.rb
@@ -3,8 +3,8 @@
require 'spec_helper'
require_migration!
-RSpec.describe RescheduleBackfillImportedIssueSearchData do
- let_it_be(:reschedule_migration) { described_class::MIGRATION }
+RSpec.describe RescheduleBackfillImportedIssueSearchData, feature_category: :global_search do
+ let!(:reschedule_migration) { described_class::MIGRATION }
def create_batched_migration(max_value:)
Gitlab::Database::BackgroundMigration::BatchedMigration
@@ -55,12 +55,23 @@ RSpec.describe RescheduleBackfillImportedIssueSearchData do
end
context 'when an issue is available' do
- let_it_be(:namespaces_table) { table(:namespaces) }
- let_it_be(:projects_table) { table(:projects) }
+ let!(:namespaces_table) { table(:namespaces) }
+ let!(:projects_table) { table(:projects) }
let(:namespace) { namespaces_table.create!(name: 'gitlab-org', path: 'gitlab-org') }
- let(:project) { projects_table.create!(name: 'gitlab', path: 'gitlab-org/gitlab-ce', namespace_id: namespace.id, project_namespace_id: namespace.id) } # rubocop:disable Layout/LineLength
- let(:issue) { table(:issues).create!(project_id: project.id, title: 'test title', description: 'test description') }
+
+ let(:project) do
+ projects_table.create!(
+ name: 'gitlab', path: 'gitlab-org/gitlab-ce', namespace_id: namespace.id, project_namespace_id: namespace.id
+ )
+ end
+
+ let(:issue) do
+ table(:issues).create!(
+ project_id: project.id, namespace_id: project.project_namespace_id,
+ title: 'test title', description: 'test description'
+ )
+ end
before do
create_batched_migration(max_value: max_value)
diff --git a/spec/migrations/reschedule_delete_orphaned_deployments_spec.rb b/spec/migrations/reschedule_delete_orphaned_deployments_spec.rb
index eb91602388c..bbc4494837a 100644
--- a/spec/migrations/reschedule_delete_orphaned_deployments_spec.rb
+++ b/spec/migrations/reschedule_delete_orphaned_deployments_spec.rb
@@ -4,7 +4,8 @@ require 'spec_helper'
require_migration!
-RSpec.describe RescheduleDeleteOrphanedDeployments, :sidekiq, schema: 20210617161348 do
+RSpec.describe RescheduleDeleteOrphanedDeployments, :sidekiq, schema: 20210617161348,
+ feature_category: :continuous_delivery do
let!(:namespace) { table(:namespaces).create!(name: 'user', path: 'user') }
let!(:project) { table(:projects).create!(namespace_id: namespace.id) }
let!(:environment) { table(:environments).create!(name: 'production', slug: 'production', project_id: project.id) }
diff --git a/spec/migrations/reschedule_issue_work_item_type_id_backfill_spec.rb b/spec/migrations/reschedule_issue_work_item_type_id_backfill_spec.rb
index 126d49790a5..1443ff09241 100644
--- a/spec/migrations/reschedule_issue_work_item_type_id_backfill_spec.rb
+++ b/spec/migrations/reschedule_issue_work_item_type_id_backfill_spec.rb
@@ -3,11 +3,11 @@
require 'spec_helper'
require_migration!
-RSpec.describe RescheduleIssueWorkItemTypeIdBackfill, :migration do
- let_it_be(:migration) { described_class::MIGRATION }
- let_it_be(:interval) { 2.minutes }
- let_it_be(:issue_type_enum) { { issue: 0, incident: 1, test_case: 2, requirement: 3, task: 4 } }
- let_it_be(:base_work_item_type_ids) do
+RSpec.describe RescheduleIssueWorkItemTypeIdBackfill, :migration, feature_category: :team_planning do
+ let!(:migration) { described_class::MIGRATION }
+ let!(:interval) { 2.minutes }
+ let!(:issue_type_enum) { { issue: 0, incident: 1, test_case: 2, requirement: 3, task: 4 } }
+ let!(:base_work_item_type_ids) do
table(:work_item_types).where(namespace_id: nil).order(:base_type).each_with_object({}) do |type, hash|
hash[type.base_type] = type.id
end
diff --git a/spec/migrations/reschedule_migrate_shared_vulnerability_scanners_spec.rb b/spec/migrations/reschedule_migrate_shared_vulnerability_scanners_spec.rb
index e8253f39c68..48422de81fe 100644
--- a/spec/migrations/reschedule_migrate_shared_vulnerability_scanners_spec.rb
+++ b/spec/migrations/reschedule_migrate_shared_vulnerability_scanners_spec.rb
@@ -4,7 +4,7 @@ require "spec_helper"
require_migration!
-RSpec.describe RescheduleMigrateSharedVulnerabilityScanners, :migration do
+RSpec.describe RescheduleMigrateSharedVulnerabilityScanners, :migration, feature_category: :vulnerability_management do
include Gitlab::Database::Migrations::BatchedBackgroundMigrationHelpers
def connection
diff --git a/spec/migrations/reset_job_token_scope_enabled_again_spec.rb b/spec/migrations/reset_job_token_scope_enabled_again_spec.rb
index 8f9e12852e1..9f1180b6e24 100644
--- a/spec/migrations/reset_job_token_scope_enabled_again_spec.rb
+++ b/spec/migrations/reset_job_token_scope_enabled_again_spec.rb
@@ -4,7 +4,7 @@ require 'spec_helper'
require_migration!
-RSpec.describe ResetJobTokenScopeEnabledAgain do
+RSpec.describe ResetJobTokenScopeEnabledAgain, feature_category: :continuous_integration do
let(:settings) { table(:project_ci_cd_settings) }
let(:projects) { table(:projects) }
let(:namespaces) { table(:namespaces) }
diff --git a/spec/migrations/reset_job_token_scope_enabled_spec.rb b/spec/migrations/reset_job_token_scope_enabled_spec.rb
index fb7bd78c11f..4ce9078246a 100644
--- a/spec/migrations/reset_job_token_scope_enabled_spec.rb
+++ b/spec/migrations/reset_job_token_scope_enabled_spec.rb
@@ -4,7 +4,7 @@ require 'spec_helper'
require_migration!
-RSpec.describe ResetJobTokenScopeEnabled do
+RSpec.describe ResetJobTokenScopeEnabled, feature_category: :continuous_integration do
let(:settings) { table(:project_ci_cd_settings) }
let(:projects) { table(:projects) }
let(:namespaces) { table(:namespaces) }
diff --git a/spec/migrations/reset_severity_levels_to_new_default_spec.rb b/spec/migrations/reset_severity_levels_to_new_default_spec.rb
index c352f1f3cee..83e57b852a0 100644
--- a/spec/migrations/reset_severity_levels_to_new_default_spec.rb
+++ b/spec/migrations/reset_severity_levels_to_new_default_spec.rb
@@ -4,7 +4,7 @@ require 'spec_helper'
require_migration!
-RSpec.describe ResetSeverityLevelsToNewDefault do
+RSpec.describe ResetSeverityLevelsToNewDefault, feature_category: :source_code_management do
let(:approval_project_rules) { table(:approval_project_rules) }
let(:projects) { table(:projects) }
let(:namespaces) { table(:namespaces) }
diff --git a/spec/migrations/retry_backfill_traversal_ids_spec.rb b/spec/migrations/retry_backfill_traversal_ids_spec.rb
index 910be9f2c69..f3658d1b8a3 100644
--- a/spec/migrations/retry_backfill_traversal_ids_spec.rb
+++ b/spec/migrations/retry_backfill_traversal_ids_spec.rb
@@ -3,10 +3,10 @@
require 'spec_helper'
require_migration!
-RSpec.describe RetryBackfillTraversalIds, :migration do
+RSpec.describe RetryBackfillTraversalIds, :migration, feature_category: :subgroups do
include ReloadHelpers
- let_it_be(:namespaces_table) { table(:namespaces) }
+ let!(:namespaces_table) { table(:namespaces) }
context 'when BackfillNamespaceTraversalIdsRoots jobs are pending' do
before do
diff --git a/spec/migrations/sanitize_confidential_note_todos_spec.rb b/spec/migrations/sanitize_confidential_note_todos_spec.rb
index 00dece82cc1..142378e07e1 100644
--- a/spec/migrations/sanitize_confidential_note_todos_spec.rb
+++ b/spec/migrations/sanitize_confidential_note_todos_spec.rb
@@ -4,7 +4,7 @@ require 'spec_helper'
require_migration!
-RSpec.describe SanitizeConfidentialNoteTodos do
+RSpec.describe SanitizeConfidentialNoteTodos, feature_category: :team_planning do
let(:migration) { described_class::MIGRATION }
describe '#up' do
diff --git a/spec/migrations/schedule_add_primary_email_to_emails_if_user_confirmed_spec.rb b/spec/migrations/schedule_add_primary_email_to_emails_if_user_confirmed_spec.rb
index c66ac1bd7e9..98d3e9b7c7c 100644
--- a/spec/migrations/schedule_add_primary_email_to_emails_if_user_confirmed_spec.rb
+++ b/spec/migrations/schedule_add_primary_email_to_emails_if_user_confirmed_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe ScheduleAddPrimaryEmailToEmailsIfUserConfirmed, :sidekiq do
+RSpec.describe ScheduleAddPrimaryEmailToEmailsIfUserConfirmed, :sidekiq, feature_category: :users do
let(:migration) { described_class.new }
let(:users) { table(:users) }
diff --git a/spec/migrations/schedule_backfill_cluster_agents_has_vulnerabilities_spec.rb b/spec/migrations/schedule_backfill_cluster_agents_has_vulnerabilities_spec.rb
index 675cc332e69..84764c89adb 100644
--- a/spec/migrations/schedule_backfill_cluster_agents_has_vulnerabilities_spec.rb
+++ b/spec/migrations/schedule_backfill_cluster_agents_has_vulnerabilities_spec.rb
@@ -3,8 +3,8 @@
require 'spec_helper'
require_migration!
-RSpec.describe ScheduleBackfillClusterAgentsHasVulnerabilities do
- let_it_be(:batched_migration) { described_class::MIGRATION }
+RSpec.describe ScheduleBackfillClusterAgentsHasVulnerabilities, feature_category: :vulnerability_management do
+ let!(:batched_migration) { described_class::MIGRATION }
it 'schedules background jobs for each batch of cluster agents' do
reversible_migration do |migration|
diff --git a/spec/migrations/schedule_backfill_draft_status_on_merge_requests_corrected_regex_spec.rb b/spec/migrations/schedule_backfill_draft_status_on_merge_requests_corrected_regex_spec.rb
index 9d7651d01ed..8a14bf58698 100644
--- a/spec/migrations/schedule_backfill_draft_status_on_merge_requests_corrected_regex_spec.rb
+++ b/spec/migrations/schedule_backfill_draft_status_on_merge_requests_corrected_regex_spec.rb
@@ -4,7 +4,7 @@ require 'spec_helper'
require_migration!
-RSpec.describe ScheduleBackfillDraftStatusOnMergeRequestsCorrectedRegex, :sidekiq do
+RSpec.describe ScheduleBackfillDraftStatusOnMergeRequestsCorrectedRegex, :sidekiq, feature_category: :code_review do
let(:namespaces) { table(:namespaces) }
let(:projects) { table(:projects) }
let(:merge_requests) { table(:merge_requests) }
diff --git a/spec/migrations/schedule_backfilling_the_namespace_id_for_vulnerability_reads_spec.rb b/spec/migrations/schedule_backfilling_the_namespace_id_for_vulnerability_reads_spec.rb
index e03096de98d..e547b321c52 100644
--- a/spec/migrations/schedule_backfilling_the_namespace_id_for_vulnerability_reads_spec.rb
+++ b/spec/migrations/schedule_backfilling_the_namespace_id_for_vulnerability_reads_spec.rb
@@ -4,8 +4,8 @@ require 'spec_helper'
require_migration!
-RSpec.describe ScheduleBackfillingTheNamespaceIdForVulnerabilityReads do
- let_it_be(:migration) { described_class::MIGRATION_NAME }
+RSpec.describe ScheduleBackfillingTheNamespaceIdForVulnerabilityReads, feature_category: :vulnerability_management do
+ let!(:migration) { described_class::MIGRATION_NAME }
describe '#up' do
it 'schedules background jobs for each batch of vulnerabilities' do
diff --git a/spec/migrations/schedule_copy_ci_builds_columns_to_security_scans2_spec.rb b/spec/migrations/schedule_copy_ci_builds_columns_to_security_scans2_spec.rb
index 67d54ea92a0..63678a094a7 100644
--- a/spec/migrations/schedule_copy_ci_builds_columns_to_security_scans2_spec.rb
+++ b/spec/migrations/schedule_copy_ci_builds_columns_to_security_scans2_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe ScheduleCopyCiBuildsColumnsToSecurityScans2 do
+RSpec.describe ScheduleCopyCiBuildsColumnsToSecurityScans2, feature_category: :dependency_scanning do
it 'is a no-op' do
migrate!
end
diff --git a/spec/migrations/schedule_disable_expiration_policies_linked_to_no_container_images_spec.rb b/spec/migrations/schedule_disable_expiration_policies_linked_to_no_container_images_spec.rb
index 888d306f893..ebcc3fda0a3 100644
--- a/spec/migrations/schedule_disable_expiration_policies_linked_to_no_container_images_spec.rb
+++ b/spec/migrations/schedule_disable_expiration_policies_linked_to_no_container_images_spec.rb
@@ -4,22 +4,22 @@ require 'spec_helper'
require_migration!
-RSpec.describe ScheduleDisableExpirationPoliciesLinkedToNoContainerImages do
- let_it_be(:projects) { table(:projects) }
- let_it_be(:container_expiration_policies) { table(:container_expiration_policies) }
- let_it_be(:container_repositories) { table(:container_repositories) }
- let_it_be(:namespaces) { table(:namespaces) }
- let_it_be(:namespace) { namespaces.create!(name: 'test', path: 'test') }
-
- let_it_be(:policy1) { create_expiration_policy(id: 1, enabled: true) }
- let_it_be(:policy2) { create_expiration_policy(id: 2, enabled: false) }
- let_it_be(:policy3) { create_expiration_policy(id: 3, enabled: false) }
- let_it_be(:policy4) { create_expiration_policy(id: 4, enabled: true) }
- let_it_be(:policy5) { create_expiration_policy(id: 5, enabled: false) }
- let_it_be(:policy6) { create_expiration_policy(id: 6, enabled: false) }
- let_it_be(:policy7) { create_expiration_policy(id: 7, enabled: true) }
- let_it_be(:policy8) { create_expiration_policy(id: 8, enabled: true) }
- let_it_be(:policy9) { create_expiration_policy(id: 9, enabled: true) }
+RSpec.describe ScheduleDisableExpirationPoliciesLinkedToNoContainerImages, feature_category: :container_registry do
+ let!(:projects) { table(:projects) }
+ let!(:container_expiration_policies) { table(:container_expiration_policies) }
+ let!(:container_repositories) { table(:container_repositories) }
+ let!(:namespaces) { table(:namespaces) }
+ let!(:namespace) { namespaces.create!(name: 'test', path: 'test') }
+
+ let!(:policy1) { create_expiration_policy(id: 1, enabled: true) }
+ let!(:policy2) { create_expiration_policy(id: 2, enabled: false) }
+ let!(:policy3) { create_expiration_policy(id: 3, enabled: false) }
+ let!(:policy4) { create_expiration_policy(id: 4, enabled: true) }
+ let!(:policy5) { create_expiration_policy(id: 5, enabled: false) }
+ let!(:policy6) { create_expiration_policy(id: 6, enabled: false) }
+ let!(:policy7) { create_expiration_policy(id: 7, enabled: true) }
+ let!(:policy8) { create_expiration_policy(id: 8, enabled: true) }
+ let!(:policy9) { create_expiration_policy(id: 9, enabled: true) }
it 'schedules background migrations', :aggregate_failures do
stub_const("#{described_class}::BATCH_SIZE", 2)
diff --git a/spec/migrations/schedule_fix_incorrect_max_seats_used2_spec.rb b/spec/migrations/schedule_fix_incorrect_max_seats_used2_spec.rb
index 3720be6cf3e..26764f855b7 100644
--- a/spec/migrations/schedule_fix_incorrect_max_seats_used2_spec.rb
+++ b/spec/migrations/schedule_fix_incorrect_max_seats_used2_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe ScheduleFixIncorrectMaxSeatsUsed2, :migration do
+RSpec.describe ScheduleFixIncorrectMaxSeatsUsed2, :migration, feature_category: :purchase do
let(:migration_name) { described_class::MIGRATION.to_s.demodulize }
describe '#up' do
diff --git a/spec/migrations/schedule_fix_incorrect_max_seats_used_spec.rb b/spec/migrations/schedule_fix_incorrect_max_seats_used_spec.rb
index 74258f03630..194a1d39ad1 100644
--- a/spec/migrations/schedule_fix_incorrect_max_seats_used_spec.rb
+++ b/spec/migrations/schedule_fix_incorrect_max_seats_used_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe ScheduleFixIncorrectMaxSeatsUsed, :migration do
+RSpec.describe ScheduleFixIncorrectMaxSeatsUsed, :migration, feature_category: :purchase do
let(:migration) { described_class.new }
describe '#up' do
diff --git a/spec/migrations/schedule_fixing_security_scan_statuses_spec.rb b/spec/migrations/schedule_fixing_security_scan_statuses_spec.rb
new file mode 100644
index 00000000000..c4c7819bda7
--- /dev/null
+++ b/spec/migrations/schedule_fixing_security_scan_statuses_spec.rb
@@ -0,0 +1,77 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+require_migration!
+
+RSpec.describe ScheduleFixingSecurityScanStatuses, :suppress_gitlab_schemas_validate_connection,
+ feature_category: :vulnerability_management do
+ let!(:namespaces) { table(:namespaces) }
+ let!(:projects) { table(:projects) }
+ let!(:pipelines) { table(:ci_pipelines) }
+ let!(:builds) { table(:ci_builds) }
+ let!(:security_scans) { table(:security_scans) }
+
+ let!(:namespace) { namespaces.create!(name: "foo", path: "bar") }
+ let!(:project) { projects.create!(namespace_id: namespace.id, project_namespace_id: namespace.id) }
+ let!(:pipeline) do
+ pipelines.create!(project_id: project.id, ref: 'master', sha: 'adf43c3a', status: 'success', partition_id: 1)
+ end
+
+ let!(:ci_build) { builds.create!(commit_id: pipeline.id, retried: false, type: 'Ci::Build', partition_id: 1) }
+
+ let!(:security_scan_1) { security_scans.create!(build_id: ci_build.id, scan_type: 1, created_at: 91.days.ago) }
+ let!(:security_scan_2) { security_scans.create!(build_id: ci_build.id, scan_type: 2) }
+
+ let(:com?) { false }
+ let(:dev_or_test_env?) { false }
+ let(:migration) { described_class::MIGRATION }
+
+ before do
+ allow(::Gitlab).to receive(:com?).and_return(com?)
+ allow(::Gitlab).to receive(:dev_or_test_env?).and_return(dev_or_test_env?)
+
+ migrate!
+ end
+
+ describe '#up' do
+ shared_examples_for 'scheduler for fixing the security scans status' do
+ it 'schedules background job' do
+ expect(migration).to have_scheduled_batched_migration(
+ table_name: :security_scans,
+ column_name: :id,
+ interval: 2.minutes,
+ batch_size: 10_000,
+ max_batch_size: 50_000,
+ sub_batch_size: 100,
+ batch_min_value: security_scan_2.id
+ )
+ end
+ end
+
+ context 'when the migration does not run on GitLab.com or development environment' do
+ it 'does not schedule the migration' do
+ expect('FixSecurityScanStatuses').not_to have_scheduled_batched_migration
+ end
+ end
+
+ context 'when the migration runs on GitLab.com' do
+ let(:com?) { true }
+
+ it_behaves_like 'scheduler for fixing the security scans status'
+ end
+
+ context 'when the migration runs on dev environment' do
+ let(:dev_or_test_env?) { true }
+
+ it_behaves_like 'scheduler for fixing the security scans status'
+ end
+ end
+
+ describe '#down' do
+ it 'deletes all batched migration records' do
+ schema_migrate_down!
+
+ expect(migration).not_to have_scheduled_batched_migration
+ end
+ end
+end
diff --git a/spec/migrations/schedule_populate_requirements_issue_id_spec.rb b/spec/migrations/schedule_populate_requirements_issue_id_spec.rb
index 2702c000b60..000c42cc4fc 100644
--- a/spec/migrations/schedule_populate_requirements_issue_id_spec.rb
+++ b/spec/migrations/schedule_populate_requirements_issue_id_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe SchedulePopulateRequirementsIssueId do
+RSpec.describe SchedulePopulateRequirementsIssueId, feature_category: :requirements_management do
include MigrationHelpers::WorkItemTypesHelper
let(:issues) { table(:issues) }
@@ -48,7 +48,7 @@ RSpec.describe SchedulePopulateRequirementsIssueId do
# Create one requirement with issue_id present, to make
# sure a job won't be scheduled for it
- work_item_type_id = work_item_types_table.find_by(namespace_id: nil, name: 'Issue').id
+ work_item_type_id = table(:work_item_types).find_by(namespace_id: nil, name: 'Issue').id
issue = issues.create!(state_id: 1, work_item_type_id: work_item_type_id)
create_requirement(iid: 2, title: 'r 2', issue_id: issue.id)
diff --git a/spec/migrations/schedule_purging_stale_security_scans_spec.rb b/spec/migrations/schedule_purging_stale_security_scans_spec.rb
index b5a38634b58..b39baa145ff 100644
--- a/spec/migrations/schedule_purging_stale_security_scans_spec.rb
+++ b/spec/migrations/schedule_purging_stale_security_scans_spec.rb
@@ -3,17 +3,18 @@
require 'spec_helper'
require_migration!
-RSpec.describe SchedulePurgingStaleSecurityScans do
- let_it_be(:namespaces) { table(:namespaces) }
- let_it_be(:projects) { table(:projects) }
- let_it_be(:pipelines) { table(:ci_pipelines) }
- let_it_be(:builds) { table(:ci_builds) }
- let_it_be(:security_scans) { table(:security_scans) }
-
- let_it_be(:namespace) { namespaces.create!(name: "foo", path: "bar") }
- let_it_be(:project) { projects.create!(namespace_id: namespace.id, project_namespace_id: namespace.id) }
- let_it_be(:pipeline) { pipelines.create!(project_id: project.id, ref: 'master', sha: 'adf43c3a', status: 'success') }
- let_it_be(:ci_build) { builds.create!(commit_id: pipeline.id, retried: false, type: 'Ci::Build') }
+RSpec.describe SchedulePurgingStaleSecurityScans, :suppress_gitlab_schemas_validate_connection,
+feature_category: :vulnerability_management do
+ let!(:namespaces) { table(:namespaces) }
+ let!(:projects) { table(:projects) }
+ let!(:pipelines) { table(:ci_pipelines) }
+ let!(:builds) { table(:ci_builds) }
+ let!(:security_scans) { table(:security_scans) }
+
+ let!(:namespace) { namespaces.create!(name: "foo", path: "bar") }
+ let!(:project) { projects.create!(namespace_id: namespace.id, project_namespace_id: namespace.id) }
+ let!(:pipeline) { pipelines.create!(project_id: project.id, ref: 'master', sha: 'adf43c3a', status: 'success') }
+ let!(:ci_build) { builds.create!(commit_id: pipeline.id, retried: false, type: 'Ci::Build') }
let!(:security_scan_1) { security_scans.create!(build_id: ci_build.id, scan_type: 1, created_at: 92.days.ago) }
let!(:security_scan_2) { security_scans.create!(build_id: ci_build.id, scan_type: 2, created_at: 91.days.ago) }
diff --git a/spec/migrations/schedule_recalculate_vulnerability_finding_signatures_for_findings_spec.rb b/spec/migrations/schedule_recalculate_vulnerability_finding_signatures_for_findings_spec.rb
index 9b62dd79e08..8903a32285e 100644
--- a/spec/migrations/schedule_recalculate_vulnerability_finding_signatures_for_findings_spec.rb
+++ b/spec/migrations/schedule_recalculate_vulnerability_finding_signatures_for_findings_spec.rb
@@ -3,7 +3,8 @@
require 'spec_helper'
require_migration!
-RSpec.describe ScheduleRecalculateVulnerabilityFindingSignaturesForFindings, :migration do
+RSpec.describe ScheduleRecalculateVulnerabilityFindingSignaturesForFindings, :migration,
+feature_category: :vulnerability_management do
before do
allow(Gitlab).to receive(:ee?).and_return(ee?)
stub_const("#{described_class.name}::BATCH_SIZE", 2)
@@ -20,21 +21,21 @@ RSpec.describe ScheduleRecalculateVulnerabilityFindingSignaturesForFindings, :mi
context 'when the Gitlab instance is EE' do
let(:ee?) { true }
- let_it_be(:namespaces) { table(:namespaces) }
- let_it_be(:projects) { table(:projects) }
- let_it_be(:findings) { table(:vulnerability_occurrences) }
- let_it_be(:scanners) { table(:vulnerability_scanners) }
- let_it_be(:identifiers) { table(:vulnerability_identifiers) }
- let_it_be(:vulnerability_finding_signatures) { table(:vulnerability_finding_signatures) }
+ let!(:namespaces) { table(:namespaces) }
+ let!(:projects) { table(:projects) }
+ let!(:findings) { table(:vulnerability_occurrences) }
+ let!(:scanners) { table(:vulnerability_scanners) }
+ let!(:identifiers) { table(:vulnerability_identifiers) }
+ let!(:vulnerability_finding_signatures) { table(:vulnerability_finding_signatures) }
- let_it_be(:namespace) { namespaces.create!(name: 'test', path: 'test') }
- let_it_be(:project) { projects.create!(namespace_id: namespace.id, name: 'gitlab', path: 'gitlab') }
+ let!(:namespace) { namespaces.create!(name: 'test', path: 'test') }
+ let!(:project) { projects.create!(namespace_id: namespace.id, name: 'gitlab', path: 'gitlab') }
- let_it_be(:scanner) do
+ let!(:scanner) do
scanners.create!(project_id: project.id, external_id: 'trivy', name: 'Security Scanner')
end
- let_it_be(:identifier) do
+ let!(:identifier) do
identifiers.create!(project_id: project.id,
fingerprint: 'd432c2ad2953e8bd587a3a43b3ce309b5b0154c123',
external_type: 'SECURITY_ID',
@@ -42,14 +43,14 @@ RSpec.describe ScheduleRecalculateVulnerabilityFindingSignaturesForFindings, :mi
name: 'SECURITY_IDENTIFIER 0')
end
- let_it_be(:finding1) { findings.create!(finding_params) }
- let_it_be(:signature1) { vulnerability_finding_signatures.create!(finding_id: finding1.id, algorithm_type: 0, signature_sha: ::Digest::SHA1.digest(SecureRandom.hex(50))) }
+ let!(:finding1) { findings.create!(finding_params) }
+ let!(:signature1) { vulnerability_finding_signatures.create!(finding_id: finding1.id, algorithm_type: 0, signature_sha: ::Digest::SHA1.digest(SecureRandom.hex(50))) }
- let_it_be(:finding2) { findings.create!(finding_params) }
- let_it_be(:signature2) { vulnerability_finding_signatures.create!(finding_id: finding2.id, algorithm_type: 0, signature_sha: ::Digest::SHA1.digest(SecureRandom.hex(50))) }
+ let!(:finding2) { findings.create!(finding_params) }
+ let!(:signature2) { vulnerability_finding_signatures.create!(finding_id: finding2.id, algorithm_type: 0, signature_sha: ::Digest::SHA1.digest(SecureRandom.hex(50))) }
- let_it_be(:finding3) { findings.create!(finding_params) }
- let_it_be(:signature3) { vulnerability_finding_signatures.create!(finding_id: finding3.id, algorithm_type: 0, signature_sha: ::Digest::SHA1.digest(SecureRandom.hex(50))) }
+ let!(:finding3) { findings.create!(finding_params) }
+ let!(:signature3) { vulnerability_finding_signatures.create!(finding_id: finding3.id, algorithm_type: 0, signature_sha: ::Digest::SHA1.digest(SecureRandom.hex(50))) }
# this migration is now a no-op
it 'does not schedule the background jobs', :aggregate_failure do
diff --git a/spec/migrations/schedule_security_setting_creation_spec.rb b/spec/migrations/schedule_security_setting_creation_spec.rb
index e1b7b540d7f..edabb2a2299 100644
--- a/spec/migrations/schedule_security_setting_creation_spec.rb
+++ b/spec/migrations/schedule_security_setting_creation_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe ScheduleSecuritySettingCreation, :sidekiq do
+RSpec.describe ScheduleSecuritySettingCreation, :sidekiq, feature_category: :projects do
describe '#up' do
let(:projects) { table(:projects) }
let(:namespaces) { table(:namespaces) }
diff --git a/spec/migrations/schedule_set_correct_vulnerability_state_spec.rb b/spec/migrations/schedule_set_correct_vulnerability_state_spec.rb
index 08dccf1f37a..e888a1132c0 100644
--- a/spec/migrations/schedule_set_correct_vulnerability_state_spec.rb
+++ b/spec/migrations/schedule_set_correct_vulnerability_state_spec.rb
@@ -4,8 +4,8 @@ require 'spec_helper'
require_migration!
-RSpec.describe ScheduleSetCorrectVulnerabilityState do
- let_it_be(:migration) { described_class::MIGRATION_NAME }
+RSpec.describe ScheduleSetCorrectVulnerabilityState, feature_category: :vulnerability_management do
+ let!(:migration) { described_class::MIGRATION_NAME }
describe '#up' do
it 'schedules background jobs for each batch of vulnerabilities' do
diff --git a/spec/migrations/schedule_update_timelogs_null_spent_at_spec.rb b/spec/migrations/schedule_update_timelogs_null_spent_at_spec.rb
index a81059518e6..99ee9e58f4e 100644
--- a/spec/migrations/schedule_update_timelogs_null_spent_at_spec.rb
+++ b/spec/migrations/schedule_update_timelogs_null_spent_at_spec.rb
@@ -3,18 +3,18 @@
require 'spec_helper'
require_migration!
-RSpec.describe ScheduleUpdateTimelogsNullSpentAt do
- let_it_be(:namespace) { table(:namespaces).create!(name: 'namespace', path: 'namespace') }
- let_it_be(:project) { table(:projects).create!(namespace_id: namespace.id) }
- let_it_be(:issue) { table(:issues).create!(project_id: project.id) }
- let_it_be(:merge_request) { table(:merge_requests).create!(target_project_id: project.id, source_branch: 'master', target_branch: 'feature') }
- let_it_be(:timelog1) { create_timelog!(merge_request_id: merge_request.id) }
- let_it_be(:timelog2) { create_timelog!(merge_request_id: merge_request.id) }
- let_it_be(:timelog3) { create_timelog!(merge_request_id: merge_request.id) }
- let_it_be(:timelog4) { create_timelog!(issue_id: issue.id) }
- let_it_be(:timelog5) { create_timelog!(issue_id: issue.id) }
-
- before_all do
+RSpec.describe ScheduleUpdateTimelogsNullSpentAt, feature_category: :team_planning do
+ let!(:namespace) { table(:namespaces).create!(name: 'namespace', path: 'namespace') }
+ let!(:project) { table(:projects).create!(namespace_id: namespace.id) }
+ let!(:issue) { table(:issues).create!(project_id: project.id) }
+ let!(:merge_request) { table(:merge_requests).create!(target_project_id: project.id, source_branch: 'master', target_branch: 'feature') }
+ let!(:timelog1) { create_timelog!(merge_request_id: merge_request.id) }
+ let!(:timelog2) { create_timelog!(merge_request_id: merge_request.id) }
+ let!(:timelog3) { create_timelog!(merge_request_id: merge_request.id) }
+ let!(:timelog4) { create_timelog!(issue_id: issue.id) }
+ let!(:timelog5) { create_timelog!(issue_id: issue.id) }
+
+ before do
table(:timelogs).where.not(id: timelog3.id).update_all(spent_at: nil)
end
diff --git a/spec/migrations/schedule_update_timelogs_project_id_spec.rb b/spec/migrations/schedule_update_timelogs_project_id_spec.rb
index b9130fd86be..5ce3f7dd36c 100644
--- a/spec/migrations/schedule_update_timelogs_project_id_spec.rb
+++ b/spec/migrations/schedule_update_timelogs_project_id_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe ScheduleUpdateTimelogsProjectId do
+RSpec.describe ScheduleUpdateTimelogsProjectId, feature_category: :team_planning do
let!(:namespace) { table(:namespaces).create!(name: 'namespace', path: 'namespace') }
let!(:project) { table(:projects).create!(namespace_id: namespace.id) }
let!(:issue) { table(:issues).create!(project_id: project.id) }
diff --git a/spec/migrations/schedule_update_users_where_two_factor_auth_required_from_group_spec.rb b/spec/migrations/schedule_update_users_where_two_factor_auth_required_from_group_spec.rb
index 2fe739659f0..c9f22c02a0b 100644
--- a/spec/migrations/schedule_update_users_where_two_factor_auth_required_from_group_spec.rb
+++ b/spec/migrations/schedule_update_users_where_two_factor_auth_required_from_group_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe ScheduleUpdateUsersWhereTwoFactorAuthRequiredFromGroup do
+RSpec.describe ScheduleUpdateUsersWhereTwoFactorAuthRequiredFromGroup, feature_category: :require_two_factor_authentication_from_group do
let(:users) { table(:users) }
let!(:user_1) { users.create!(require_two_factor_authentication_from_group: false, name: "user1", email: "user1@example.com", projects_limit: 1) }
let!(:user_2) { users.create!(require_two_factor_authentication_from_group: true, name: "user2", email: "user2@example.com", projects_limit: 1) }
diff --git a/spec/migrations/set_default_job_token_scope_true_spec.rb b/spec/migrations/set_default_job_token_scope_true_spec.rb
index e7c77357318..25f4f07e15a 100644
--- a/spec/migrations/set_default_job_token_scope_true_spec.rb
+++ b/spec/migrations/set_default_job_token_scope_true_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe SetDefaultJobTokenScopeTrue, schema: 20210819153805 do
+RSpec.describe SetDefaultJobTokenScopeTrue, schema: 20210819153805, feature_category: :continuous_integration do
let(:ci_cd_settings) { table(:project_ci_cd_settings) }
let(:namespaces) { table(:namespaces) }
let(:projects) { table(:projects) }
diff --git a/spec/migrations/set_email_confirmation_setting_before_removing_send_user_confirmation_email_column_spec.rb b/spec/migrations/set_email_confirmation_setting_before_removing_send_user_confirmation_email_column_spec.rb
new file mode 100644
index 00000000000..4303713744e
--- /dev/null
+++ b/spec/migrations/set_email_confirmation_setting_before_removing_send_user_confirmation_email_column_spec.rb
@@ -0,0 +1,41 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+require_migration!
+
+RSpec.describe SetEmailConfirmationSettingBeforeRemovingSendUserConfirmationEmailColumn, feature_category: :users do
+ let(:migration) { described_class.new }
+ let(:application_settings_table) { table(:application_settings) }
+
+ describe '#up' do
+ context "when 'send_user_confirmation_email' is set to 'true'" do
+ it "updates 'email_confirmation_setting' to '2' (hard)" do
+ application_settings_table.create!(send_user_confirmation_email: true, email_confirmation_setting: 0)
+
+ migration.up
+
+ expect(application_settings_table.last.email_confirmation_setting).to eq 2
+ end
+ end
+
+ context "when 'send_user_confirmation_email' is set to 'false'" do
+ it "updates 'email_confirmation_setting' to '0' (off)" do
+ application_settings_table.create!(send_user_confirmation_email: false, email_confirmation_setting: 0)
+
+ migration.up
+
+ expect(application_settings_table.last.email_confirmation_setting).to eq 0
+ end
+ end
+ end
+
+ describe '#down' do
+ it "updates 'email_confirmation_setting' to default value: '0' (off)" do
+ application_settings_table.create!(send_user_confirmation_email: true, email_confirmation_setting: 2)
+
+ migration.down
+
+ expect(application_settings_table.last.email_confirmation_setting).to eq 0
+ end
+ end
+end
diff --git a/spec/migrations/set_email_confirmation_setting_from_send_user_confirmation_email_setting_spec.rb b/spec/migrations/set_email_confirmation_setting_from_send_user_confirmation_email_setting_spec.rb
index 761c0ef2fdb..e08aa8679a1 100644
--- a/spec/migrations/set_email_confirmation_setting_from_send_user_confirmation_email_setting_spec.rb
+++ b/spec/migrations/set_email_confirmation_setting_from_send_user_confirmation_email_setting_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe SetEmailConfirmationSettingFromSendUserConfirmationEmailSetting do
+RSpec.describe SetEmailConfirmationSettingFromSendUserConfirmationEmailSetting, feature_category: :users do
let(:migration) { described_class.new }
let(:application_settings_table) { table(:application_settings) }
diff --git a/spec/migrations/slice_merge_request_diff_commit_migrations_spec.rb b/spec/migrations/slice_merge_request_diff_commit_migrations_spec.rb
index b03a5c41a11..fdbd8093fa5 100644
--- a/spec/migrations/slice_merge_request_diff_commit_migrations_spec.rb
+++ b/spec/migrations/slice_merge_request_diff_commit_migrations_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe SliceMergeRequestDiffCommitMigrations, :migration do
+RSpec.describe SliceMergeRequestDiffCommitMigrations, :migration, feature_category: :code_review do
let(:migration) { described_class.new }
describe '#up' do
diff --git a/spec/migrations/start_backfill_ci_queuing_tables_spec.rb b/spec/migrations/start_backfill_ci_queuing_tables_spec.rb
index 08fd244089f..c308a16d5b8 100644
--- a/spec/migrations/start_backfill_ci_queuing_tables_spec.rb
+++ b/spec/migrations/start_backfill_ci_queuing_tables_spec.rb
@@ -3,7 +3,8 @@
require 'spec_helper'
require_migration!
-RSpec.describe StartBackfillCiQueuingTables, :suppress_gitlab_schemas_validate_connection do
+RSpec.describe StartBackfillCiQueuingTables, :suppress_gitlab_schemas_validate_connection,
+feature_category: :continuous_integration do
let(:namespaces) { table(:namespaces) }
let(:projects) { table(:projects) }
let(:builds) { table(:ci_builds) }
diff --git a/spec/migrations/steal_merge_request_diff_commit_users_migration_spec.rb b/spec/migrations/steal_merge_request_diff_commit_users_migration_spec.rb
index 4fb4ba61a34..d2cd7a6980d 100644
--- a/spec/migrations/steal_merge_request_diff_commit_users_migration_spec.rb
+++ b/spec/migrations/steal_merge_request_diff_commit_users_migration_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe StealMergeRequestDiffCommitUsersMigration, :migration do
+RSpec.describe StealMergeRequestDiffCommitUsersMigration, :migration, feature_category: :source_code_management do
let(:migration) { described_class.new }
describe '#up' do
diff --git a/spec/migrations/sync_new_amount_used_for_ci_namespace_monthly_usages_spec.rb b/spec/migrations/sync_new_amount_used_for_ci_namespace_monthly_usages_spec.rb
index 9a17f375f82..da8790f4450 100644
--- a/spec/migrations/sync_new_amount_used_for_ci_namespace_monthly_usages_spec.rb
+++ b/spec/migrations/sync_new_amount_used_for_ci_namespace_monthly_usages_spec.rb
@@ -4,7 +4,8 @@ require 'spec_helper'
require_migration!
-RSpec.describe SyncNewAmountUsedForCiNamespaceMonthlyUsages, migration: :gitlab_ci do
+RSpec.describe SyncNewAmountUsedForCiNamespaceMonthlyUsages, migration: :gitlab_ci,
+ feature_category: :continuous_integration do
let(:namespace_usages) { table(:ci_namespace_monthly_usages) }
before do
diff --git a/spec/migrations/sync_new_amount_used_for_ci_project_monthly_usages_spec.rb b/spec/migrations/sync_new_amount_used_for_ci_project_monthly_usages_spec.rb
index 8d45f1107ea..1c9b2711687 100644
--- a/spec/migrations/sync_new_amount_used_for_ci_project_monthly_usages_spec.rb
+++ b/spec/migrations/sync_new_amount_used_for_ci_project_monthly_usages_spec.rb
@@ -4,7 +4,8 @@ require 'spec_helper'
require_migration!
-RSpec.describe SyncNewAmountUsedForCiProjectMonthlyUsages, migration: :gitlab_ci do
+RSpec.describe SyncNewAmountUsedForCiProjectMonthlyUsages, migration: :gitlab_ci,
+ feature_category: :continuous_integration do
let(:project_usages) { table(:ci_project_monthly_usages) }
before do
diff --git a/spec/migrations/toggle_vsa_aggregations_enable_spec.rb b/spec/migrations/toggle_vsa_aggregations_enable_spec.rb
index a6850d493b7..5b3e513e9f6 100644
--- a/spec/migrations/toggle_vsa_aggregations_enable_spec.rb
+++ b/spec/migrations/toggle_vsa_aggregations_enable_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe ToggleVsaAggregationsEnable, :migration do
+RSpec.describe ToggleVsaAggregationsEnable, :migration, feature_category: :value_stream_management do
let(:aggregations) { table(:analytics_cycle_analytics_aggregations) }
let(:groups) { table(:namespaces) }
diff --git a/spec/migrations/update_application_settings_container_registry_exp_pol_worker_capacity_default_spec.rb b/spec/migrations/update_application_settings_container_registry_exp_pol_worker_capacity_default_spec.rb
index 842456089fe..d249fcecf66 100644
--- a/spec/migrations/update_application_settings_container_registry_exp_pol_worker_capacity_default_spec.rb
+++ b/spec/migrations/update_application_settings_container_registry_exp_pol_worker_capacity_default_spec.rb
@@ -3,7 +3,8 @@
require 'spec_helper'
require_migration!
-RSpec.describe UpdateApplicationSettingsContainerRegistryExpPolWorkerCapacityDefault do
+RSpec.describe UpdateApplicationSettingsContainerRegistryExpPolWorkerCapacityDefault,
+feature_category: :container_registry do
let(:settings) { table(:application_settings) }
context 'with no rows in the application_settings table' do
diff --git a/spec/migrations/update_application_settings_protected_paths_spec.rb b/spec/migrations/update_application_settings_protected_paths_spec.rb
index 21879995f1b..d61eadf9f9c 100644
--- a/spec/migrations/update_application_settings_protected_paths_spec.rb
+++ b/spec/migrations/update_application_settings_protected_paths_spec.rb
@@ -3,12 +3,13 @@
require 'spec_helper'
require_migration!
-RSpec.describe UpdateApplicationSettingsProtectedPaths, :aggregate_failures do
+RSpec.describe UpdateApplicationSettingsProtectedPaths, :aggregate_failures,
+feature_category: :authentication_and_authorization do
subject(:migration) { described_class.new }
- let_it_be(:application_settings) { table(:application_settings) }
- let_it_be(:oauth_paths) { %w[/oauth/authorize /oauth/token] }
- let_it_be(:custom_paths) { %w[/foo /bar] }
+ let!(:application_settings) { table(:application_settings) }
+ let!(:oauth_paths) { %w[/oauth/authorize /oauth/token] }
+ let!(:custom_paths) { %w[/foo /bar] }
let(:default_paths) { application_settings.column_defaults.fetch('protected_paths') }
diff --git a/spec/migrations/update_default_scan_method_of_dast_site_profile_spec.rb b/spec/migrations/update_default_scan_method_of_dast_site_profile_spec.rb
index b73aa7016a1..ac7a4171063 100644
--- a/spec/migrations/update_default_scan_method_of_dast_site_profile_spec.rb
+++ b/spec/migrations/update_default_scan_method_of_dast_site_profile_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
require_migration!
-RSpec.describe UpdateDefaultScanMethodOfDastSiteProfile do
+RSpec.describe UpdateDefaultScanMethodOfDastSiteProfile, feature_category: :dynamic_application_security_testing do
let(:namespaces) { table(:namespaces) }
let(:projects) { table(:projects) }
let(:dast_sites) { table(:dast_sites) }
diff --git a/spec/migrations/update_integrations_trigger_type_new_on_insert_spec.rb b/spec/migrations/update_integrations_trigger_type_new_on_insert_spec.rb
index 41cf35b40f4..efc051d9a68 100644
--- a/spec/migrations/update_integrations_trigger_type_new_on_insert_spec.rb
+++ b/spec/migrations/update_integrations_trigger_type_new_on_insert_spec.rb
@@ -4,7 +4,7 @@ require 'spec_helper'
require_migration!
-RSpec.describe UpdateIntegrationsTriggerTypeNewOnInsert do
+RSpec.describe UpdateIntegrationsTriggerTypeNewOnInsert, feature_category: :integrations do
let(:migration) { described_class.new }
let(:integrations) { table(:integrations) }
diff --git a/spec/migrations/update_invalid_member_states_spec.rb b/spec/migrations/update_invalid_member_states_spec.rb
index 802634230a9..6ae4b9f3c0f 100644
--- a/spec/migrations/update_invalid_member_states_spec.rb
+++ b/spec/migrations/update_invalid_member_states_spec.rb
@@ -4,7 +4,7 @@ require 'spec_helper'
require_migration!
-RSpec.describe UpdateInvalidMemberStates do
+RSpec.describe UpdateInvalidMemberStates, feature_category: :subgroups do
let(:members) { table(:members) }
let(:groups) { table(:namespaces) }
let(:projects) { table(:projects) }
diff --git a/spec/migrations/update_invalid_web_hooks_spec.rb b/spec/migrations/update_invalid_web_hooks_spec.rb
index a65f82d7082..9e69d3637b8 100644
--- a/spec/migrations/update_invalid_web_hooks_spec.rb
+++ b/spec/migrations/update_invalid_web_hooks_spec.rb
@@ -4,7 +4,7 @@ require 'spec_helper'
require_migration!
-RSpec.describe UpdateInvalidWebHooks do
+RSpec.describe UpdateInvalidWebHooks, feature_category: :integrations do
let(:web_hooks) { table(:web_hooks) }
let(:groups) { table(:namespaces) }
let(:projects) { table(:projects) }