diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2023-03-08 03:13:36 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2023-03-08 03:13:36 +0000 |
commit | bdf7b581f80cf7119528eab0ac31e2c549563872 (patch) | |
tree | 23b20f65beb31a5ec35a273f9229e214eb8aa0bf | |
parent | 9c1accf52813b2b4b98ce85c9ec4a16fdbb86ee1 (diff) | |
download | gitlab-ce-bdf7b581f80cf7119528eab0ac31e2c549563872.tar.gz |
Add latest changes from gitlab-org/gitlab@master
147 files changed, 506 insertions, 516 deletions
diff --git a/.rubocop_todo/rspec/missing_feature_category.yml b/.rubocop_todo/rspec/missing_feature_category.yml index 833260cd6d4..19fe73b9a9f 100644 --- a/.rubocop_todo/rspec/missing_feature_category.yml +++ b/.rubocop_todo/rspec/missing_feature_category.yml @@ -819,7 +819,6 @@ RSpec/MissingFeatureCategory: - 'ee/spec/lib/ee/sidebars/projects/menus/issues_menu_spec.rb' - 'ee/spec/lib/ee/sidebars/projects/menus/monitor_menu_spec.rb' - 'ee/spec/lib/ee/sidebars/projects/menus/repository_menu_spec.rb' - - 'ee/spec/lib/ee/sidebars/projects/menus/security_compliance_menu_spec.rb' - 'ee/spec/lib/ee/sidebars/projects/panel_spec.rb' - 'ee/spec/lib/elastic/latest/commit_config_spec.rb' - 'ee/spec/lib/elastic/latest/config_spec.rb' @@ -1437,7 +1436,6 @@ RSpec/MissingFeatureCategory: - 'ee/spec/models/storage_shard_spec.rb' - 'ee/spec/models/upload_spec.rb' - 'ee/spec/models/uploads/local_spec.rb' - - 'ee/spec/models/user_detail_spec.rb' - 'ee/spec/models/user_permission_export_upload_spec.rb' - 'ee/spec/models/user_preference_spec.rb' - 'ee/spec/models/users_security_dashboard_project_spec.rb' @@ -1723,32 +1721,6 @@ RSpec/MissingFeatureCategory: - 'ee/spec/services/branches/delete_service_spec.rb' - 'ee/spec/services/ee/auto_merge_service_spec.rb' - 'ee/spec/services/ee/event_create_service_spec.rb' - - 'ee/spec/services/ee/groups/autocomplete_service_spec.rb' - - 'ee/spec/services/ee/groups/deploy_tokens/create_service_spec.rb' - - 'ee/spec/services/ee/groups/deploy_tokens/destroy_service_spec.rb' - - 'ee/spec/services/ee/groups/deploy_tokens/revoke_service_spec.rb' - - 'ee/spec/services/ee/groups/import_export/export_service_spec.rb' - - 'ee/spec/services/ee/groups/import_export/import_service_spec.rb' - - 'ee/spec/services/ee/incident_management/issuable_escalation_statuses/after_update_service_spec.rb' - - 'ee/spec/services/ee/incident_management/issuable_escalation_statuses/create_service_spec.rb' - - 'ee/spec/services/ee/incident_management/issuable_escalation_statuses/prepare_update_service_spec.rb' - - 'ee/spec/services/ee/integrations/test/project_service_spec.rb' - - 'ee/spec/services/ee/ip_restrictions/update_service_spec.rb' - - 'ee/spec/services/ee/issuable/bulk_update_service_spec.rb' - - 'ee/spec/services/ee/issuable/common_system_notes_service_spec.rb' - - 'ee/spec/services/ee/issuable/destroy_service_spec.rb' - - 'ee/spec/services/ee/issue_links/create_service_spec.rb' - - 'ee/spec/services/ee/issues/after_create_service_spec.rb' - - 'ee/spec/services/ee/issues/clone_service_spec.rb' - - 'ee/spec/services/ee/issues/move_service_spec.rb' - - 'ee/spec/services/ee/keys/destroy_service_spec.rb' - - 'ee/spec/services/ee/labels/create_service_spec.rb' - - 'ee/spec/services/ee/labels/promote_service_spec.rb' - - 'ee/spec/services/ee/members/create_service_spec.rb' - - 'ee/spec/services/ee/members/destroy_service_spec.rb' - - 'ee/spec/services/ee/members/import_project_team_service_spec.rb' - - 'ee/spec/services/ee/members/invite_service_spec.rb' - - 'ee/spec/services/ee/members/update_service_spec.rb' - 'ee/spec/services/ee/merge_request_metrics_service_spec.rb' - 'ee/spec/services/ee/merge_requests/base_service_spec.rb' - 'ee/spec/services/ee/merge_requests/create_approval_event_service_spec.rb' @@ -1794,66 +1766,7 @@ RSpec/MissingFeatureCategory: - 'ee/spec/services/ee/users/update_service_spec.rb' - 'ee/spec/services/ee/vulnerability_feedback_module/update_service_spec.rb' - 'ee/spec/services/external_status_checks/create_service_spec.rb' - - 'ee/spec/services/groups/create_service_spec.rb' - - 'ee/spec/services/groups/epics_count_service_spec.rb' - - 'ee/spec/services/groups/mark_for_deletion_service_spec.rb' - - 'ee/spec/services/groups/memberships/export_service_spec.rb' - - 'ee/spec/services/groups/participants_service_spec.rb' - - 'ee/spec/services/groups/restore_service_spec.rb' - - 'ee/spec/services/groups/schedule_bulk_repository_shard_moves_service_spec.rb' - - 'ee/spec/services/groups/seat_usage_export_service_spec.rb' - - 'ee/spec/services/groups/update_repository_storage_service_spec.rb' - - 'ee/spec/services/groups/update_service_spec.rb' - - 'ee/spec/services/historical_user_data/csv_service_spec.rb' - - 'ee/spec/services/ide/schemas_config_service_spec.rb' - - 'ee/spec/services/incident_management/create_incident_sla_exceeded_label_service_spec.rb' - - 'ee/spec/services/incident_management/escalation_policies/create_service_spec.rb' - - 'ee/spec/services/incident_management/escalation_policies/destroy_service_spec.rb' - - 'ee/spec/services/incident_management/escalation_policies/update_service_spec.rb' - - 'ee/spec/services/incident_management/escalation_rules/destroy_service_spec.rb' - - 'ee/spec/services/incident_management/incidents/create_sla_service_spec.rb' - - 'ee/spec/services/incident_management/incidents/upload_metric_service_spec.rb' - - 'ee/spec/services/incident_management/issuable_resource_links/create_service_spec.rb' - - 'ee/spec/services/incident_management/issuable_resource_links/destroy_service_spec.rb' - - 'ee/spec/services/incident_management/issuable_resource_links/zoom_link_service_spec.rb' - - 'ee/spec/services/incident_management/oncall_rotations/create_service_spec.rb' - - 'ee/spec/services/incident_management/oncall_rotations/destroy_service_spec.rb' - - 'ee/spec/services/incident_management/oncall_rotations/edit_service_spec.rb' - - 'ee/spec/services/incident_management/oncall_rotations/remove_participant_service_spec.rb' - - 'ee/spec/services/incident_management/oncall_rotations/remove_participants_service_spec.rb' - - 'ee/spec/services/incident_management/oncall_schedules/create_service_spec.rb' - - 'ee/spec/services/incident_management/oncall_schedules/destroy_service_spec.rb' - - 'ee/spec/services/incident_management/oncall_schedules/update_service_spec.rb' - - 'ee/spec/services/incident_management/oncall_shifts/read_service_spec.rb' - - 'ee/spec/services/incident_management/pending_escalations/create_service_spec.rb' - - 'ee/spec/services/incident_management/pending_escalations/process_service_spec.rb' - - 'ee/spec/services/integrations/slack_event_service_spec.rb' - - 'ee/spec/services/integrations/slack_events/app_home_opened_service_spec.rb' - - 'ee/spec/services/integrations/slack_events/url_verification_service_spec.rb' - - 'ee/spec/services/integrations/slack_interactions/incident_management/incident_modal_closed_service_spec.rb' - - 'ee/spec/services/issuable/destroy_label_links_service_spec.rb' - - 'ee/spec/services/issuable/discussions_list_service_spec.rb' - - 'ee/spec/services/issue_feature_flags/list_service_spec.rb' - - 'ee/spec/services/issues/build_service_spec.rb' - - 'ee/spec/services/issues/duplicate_service_spec.rb' - - 'ee/spec/services/iterations/cadences/create_iterations_in_advance_service_spec.rb' - - 'ee/spec/services/iterations/cadences/create_service_spec.rb' - - 'ee/spec/services/iterations/cadences/destroy_service_spec.rb' - - 'ee/spec/services/iterations/cadences/update_service_spec.rb' - - 'ee/spec/services/iterations/create_service_spec.rb' - - 'ee/spec/services/iterations/delete_service_spec.rb' - - 'ee/spec/services/iterations/update_service_spec.rb' - - 'ee/spec/services/jira/jql_builder_service_spec.rb' - - 'ee/spec/services/jira/requests/issues/list_service_spec.rb' - - 'ee/spec/services/keys/create_service_spec.rb' - - 'ee/spec/services/keys/last_used_service_spec.rb' - 'ee/spec/services/ldap_group_reset_service_spec.rb' - - 'ee/spec/services/lfs/lock_file_service_spec.rb' - - 'ee/spec/services/lfs/unlock_file_service_spec.rb' - - 'ee/spec/services/licenses/destroy_service_spec.rb' - - 'ee/spec/services/members/activate_service_spec.rb' - - 'ee/spec/services/members/await_service_spec.rb' - - 'ee/spec/services/merge_commits/export_csv_service_spec.rb' - 'ee/spec/services/merge_request_approval_settings/update_service_spec.rb' - 'ee/spec/services/merge_requests/approval_service_spec.rb' - 'ee/spec/services/merge_requests/build_service_spec.rb' @@ -1968,7 +1881,6 @@ RSpec/MissingFeatureCategory: - 'ee/spec/services/security/security_orchestration_policies/rule_schedule_service_spec.rb' - 'ee/spec/services/security/security_orchestration_policies/sync_open_merge_requests_head_pipeline_service_spec.rb' - 'ee/spec/services/security/security_orchestration_policies/sync_opened_merge_requests_service_spec.rb' - - 'ee/spec/services/security/security_orchestration_policies/sync_scan_result_policies_service_spec.rb' - 'ee/spec/services/security/security_orchestration_policies/validate_policy_service_spec.rb' - 'ee/spec/services/security/store_findings_service_spec.rb' - 'ee/spec/services/security/store_grouped_scans_service_spec.rb' @@ -2715,7 +2627,6 @@ RSpec/MissingFeatureCategory: - 'spec/frontend/fixtures/tags.rb' - 'spec/frontend/fixtures/timezones.rb' - 'spec/frontend/fixtures/todos.rb' - - 'spec/frontend/fixtures/u2f.rb' - 'spec/frontend/fixtures/webauthn.rb' - 'spec/graphql/features/authorization_spec.rb' - 'spec/graphql/gitlab_schema_spec.rb' @@ -3970,7 +3881,6 @@ RSpec/MissingFeatureCategory: - 'spec/lib/gitlab/ci/parsers/coverage/cobertura_spec.rb' - 'spec/lib/gitlab/ci/parsers/coverage/sax_document_spec.rb' - 'spec/lib/gitlab/ci/parsers/instrumentation_spec.rb' - - 'spec/lib/gitlab/ci/parsers/security/common_spec.rb' - 'spec/lib/gitlab/ci/parsers/security/sast_spec.rb' - 'spec/lib/gitlab/ci/parsers/security/secret_detection_spec.rb' - 'spec/lib/gitlab/ci/parsers/terraform/tfplan_spec.rb' @@ -5277,7 +5187,6 @@ RSpec/MissingFeatureCategory: - 'spec/lib/gitlab/usage_data_counters/service_usage_data_counter_spec.rb' - 'spec/lib/gitlab/usage_data_counters/snippet_counter_spec.rb' - 'spec/lib/gitlab/usage_data_counters/source_code_counter_spec.rb' - - 'spec/lib/gitlab/usage_data_counters/track_unique_events_spec.rb' - 'spec/lib/gitlab/usage_data_counters/vscode_extension_activity_unique_counter_spec.rb' - 'spec/lib/gitlab/usage_data_counters/web_ide_counter_spec.rb' - 'spec/lib/gitlab/usage_data_counters/wiki_page_counter_spec.rb' @@ -5780,7 +5689,6 @@ RSpec/MissingFeatureCategory: - 'spec/models/integrations/jenkins_spec.rb' - 'spec/models/integrations/jira_spec.rb' - 'spec/models/integrations/jira_tracker_data_spec.rb' - - 'spec/models/integrations/mattermost_slash_commands_spec.rb' - 'spec/models/integrations/mattermost_spec.rb' - 'spec/models/integrations/microsoft_teams_spec.rb' - 'spec/models/integrations/mock_ci_spec.rb' @@ -5792,7 +5700,6 @@ RSpec/MissingFeatureCategory: - 'spec/models/integrations/pushover_spec.rb' - 'spec/models/integrations/redmine_spec.rb' - 'spec/models/integrations/shimo_spec.rb' - - 'spec/models/integrations/slack_slash_commands_spec.rb' - 'spec/models/integrations/slack_spec.rb' - 'spec/models/integrations/teamcity_spec.rb' - 'spec/models/integrations/unify_circuit_spec.rb' @@ -6548,113 +6455,8 @@ RSpec/MissingFeatureCategory: - 'spec/services/event_create_service_spec.rb' - 'spec/services/gpg_keys/destroy_service_spec.rb' - 'spec/services/gravatar_service_spec.rb' - - 'spec/services/groups/auto_devops_service_spec.rb' - - 'spec/services/groups/autocomplete_service_spec.rb' - - 'spec/services/groups/deploy_tokens/create_service_spec.rb' - - 'spec/services/groups/deploy_tokens/destroy_service_spec.rb' - - 'spec/services/groups/deploy_tokens/revoke_service_spec.rb' - - 'spec/services/groups/group_links/create_service_spec.rb' - - 'spec/services/groups/group_links/destroy_service_spec.rb' - - 'spec/services/groups/group_links/update_service_spec.rb' - - 'spec/services/groups/import_export/export_service_spec.rb' - - 'spec/services/groups/import_export/import_service_spec.rb' - - 'spec/services/groups/merge_requests_count_service_spec.rb' - - 'spec/services/groups/nested_create_service_spec.rb' - - 'spec/services/groups/open_issues_count_service_spec.rb' - - 'spec/services/groups/participants_service_spec.rb' - - 'spec/services/groups/update_service_spec.rb' - - 'spec/services/groups/update_shared_runners_service_spec.rb' - - 'spec/services/groups/update_statistics_service_spec.rb' - - 'spec/services/ide/base_config_service_spec.rb' - - 'spec/services/ide/schemas_config_service_spec.rb' - - 'spec/services/ide/terminal_config_service_spec.rb' - - 'spec/services/import/bitbucket_server_service_spec.rb' - - 'spec/services/import/fogbugz_service_spec.rb' - - 'spec/services/import/github/cancel_project_import_service_spec.rb' - - 'spec/services/import/github/notes/create_service_spec.rb' - - 'spec/services/import/github_service_spec.rb' - - 'spec/services/import/gitlab_projects/create_project_service_spec.rb' - - 'spec/services/import/gitlab_projects/file_acquisition_strategies/file_upload_spec.rb' - - 'spec/services/import/gitlab_projects/file_acquisition_strategies/remote_file_s3_spec.rb' - - 'spec/services/import/prepare_service_spec.rb' - 'spec/services/import_export_clean_up_service_spec.rb' - - 'spec/services/incident_management/incidents/create_service_spec.rb' - - 'spec/services/incident_management/issuable_escalation_statuses/after_update_service_spec.rb' - - 'spec/services/incident_management/issuable_escalation_statuses/build_service_spec.rb' - - 'spec/services/incident_management/issuable_escalation_statuses/create_service_spec.rb' - - 'spec/services/incident_management/issuable_escalation_statuses/prepare_update_service_spec.rb' - - 'spec/services/incident_management/pager_duty/create_incident_issue_service_spec.rb' - - 'spec/services/incident_management/pager_duty/process_webhook_service_spec.rb' - - 'spec/services/incident_management/timeline_event_tags/create_service_spec.rb' - - 'spec/services/incident_management/timeline_events/create_service_spec.rb' - - 'spec/services/incident_management/timeline_events/destroy_service_spec.rb' - - 'spec/services/integrations/propagate_service_spec.rb' - - 'spec/services/integrations/test/project_service_spec.rb' - - 'spec/services/issuable/bulk_update_service_spec.rb' - - 'spec/services/issuable/common_system_notes_service_spec.rb' - - 'spec/services/issuable/destroy_label_links_service_spec.rb' - - 'spec/services/issuable/destroy_service_spec.rb' - - 'spec/services/issuable/discussions_list_service_spec.rb' - - 'spec/services/issuable/process_assignees_spec.rb' - - 'spec/services/issue_links/create_service_spec.rb' - - 'spec/services/issue_links/destroy_service_spec.rb' - - 'spec/services/issue_links/list_service_spec.rb' - - 'spec/services/issues/after_create_service_spec.rb' - - 'spec/services/issues/build_service_spec.rb' - - 'spec/services/issues/clone_service_spec.rb' - - 'spec/services/issues/close_service_spec.rb' - - 'spec/services/issues/create_service_spec.rb' - - 'spec/services/issues/duplicate_service_spec.rb' - - 'spec/services/issues/prepare_import_csv_service_spec.rb' - - 'spec/services/issues/referenced_merge_requests_service_spec.rb' - - 'spec/services/issues/related_branches_service_spec.rb' - - 'spec/services/issues/relative_position_rebalancing_service_spec.rb' - - 'spec/services/issues/reopen_service_spec.rb' - - 'spec/services/issues/reorder_service_spec.rb' - - 'spec/services/issues/resolve_discussions_spec.rb' - - 'spec/services/issues/set_crm_contacts_service_spec.rb' - - 'spec/services/issues/update_service_spec.rb' - - 'spec/services/issues/zoom_link_service_spec.rb' - - 'spec/services/jira/requests/projects/list_service_spec.rb' - - 'spec/services/jira_connect/sync_service_spec.rb' - - 'spec/services/jira_connect_installations/destroy_service_spec.rb' - - 'spec/services/jira_connect_subscriptions/create_service_spec.rb' - - 'spec/services/jira_import/cloud_users_mapper_service_spec.rb' - - 'spec/services/jira_import/server_users_mapper_service_spec.rb' - - 'spec/services/jira_import/start_import_service_spec.rb' - - 'spec/services/jira_import/users_importer_spec.rb' - - 'spec/services/keys/create_service_spec.rb' - - 'spec/services/keys/destroy_service_spec.rb' - - 'spec/services/keys/expiry_notification_service_spec.rb' - - 'spec/services/keys/last_used_service_spec.rb' - - 'spec/services/labels/available_labels_service_spec.rb' - - 'spec/services/labels/create_service_spec.rb' - - 'spec/services/labels/find_or_create_service_spec.rb' - - 'spec/services/labels/promote_service_spec.rb' - - 'spec/services/labels/transfer_service_spec.rb' - - 'spec/services/labels/update_service_spec.rb' - - 'spec/services/lfs/lock_file_service_spec.rb' - - 'spec/services/lfs/locks_finder_service_spec.rb' - - 'spec/services/lfs/push_service_spec.rb' - - 'spec/services/lfs/unlock_file_service_spec.rb' - - 'spec/services/loose_foreign_keys/batch_cleaner_service_spec.rb' - - 'spec/services/loose_foreign_keys/cleaner_service_spec.rb' - - 'spec/services/loose_foreign_keys/process_deleted_records_service_spec.rb' - 'spec/services/markdown_content_rewriter_service_spec.rb' - - 'spec/services/markup/rendering_service_spec.rb' - - 'spec/services/members/approve_access_request_service_spec.rb' - - 'spec/services/members/create_service_spec.rb' - - 'spec/services/members/creator_service_spec.rb' - - 'spec/services/members/groups/creator_service_spec.rb' - - 'spec/services/members/import_project_team_service_spec.rb' - - 'spec/services/members/invitation_reminder_email_service_spec.rb' - - 'spec/services/members/invite_member_builder_spec.rb' - - 'spec/services/members/invite_service_spec.rb' - - 'spec/services/members/projects/creator_service_spec.rb' - - 'spec/services/members/request_access_service_spec.rb' - - 'spec/services/members/standard_member_builder_spec.rb' - - 'spec/services/members/unassign_issuables_service_spec.rb' - - 'spec/services/members/update_service_spec.rb' - 'spec/services/merge_requests/add_context_service_spec.rb' - 'spec/services/merge_requests/add_spent_time_service_spec.rb' - 'spec/services/merge_requests/add_todo_when_build_fails_service_spec.rb' @@ -6799,7 +6601,6 @@ RSpec/MissingFeatureCategory: - 'spec/services/pages/zip_directory_service_spec.rb' - 'spec/services/pages_domains/create_acme_order_service_spec.rb' - 'spec/services/pages_domains/obtain_lets_encrypt_certificate_service_spec.rb' - - 'spec/services/personal_access_tokens/create_service_spec.rb' - 'spec/services/personal_access_tokens/last_used_service_spec.rb' - 'spec/services/personal_access_tokens/revoke_service_spec.rb' - 'spec/services/post_receive_service_spec.rb' diff --git a/app/assets/javascripts/access_tokens/components/new_access_token_app.vue b/app/assets/javascripts/access_tokens/components/new_access_token_app.vue index d24285af5c3..02159d4d524 100644 --- a/app/assets/javascripts/access_tokens/components/new_access_token_app.vue +++ b/app/assets/javascripts/access_tokens/components/new_access_token_app.vue @@ -1,6 +1,6 @@ <script> import { GlAlert } from '@gitlab/ui'; -import { createAlert, VARIANT_INFO } from '~/flash'; +import { createAlert, VARIANT_INFO } from '~/alert'; import { __, n__, sprintf } from '~/locale'; import { convertObjectPropsToCamelCase } from '~/lib/utils/common_utils'; import DomElementListener from '~/vue_shared/components/dom_element_listener.vue'; diff --git a/app/assets/javascripts/blob/notebook/notebook_viewer.vue b/app/assets/javascripts/blob/notebook/notebook_viewer.vue index ade92f2562b..acbd231c94a 100644 --- a/app/assets/javascripts/blob/notebook/notebook_viewer.vue +++ b/app/assets/javascripts/blob/notebook/notebook_viewer.vue @@ -83,4 +83,9 @@ export default { .output img { min-width: 0; /* https://www.w3.org/TR/css-flexbox-1/#min-size-auto */ } + +.output .markdown { + display: block; + width: 100%; +} </style> diff --git a/app/assets/javascripts/contributors/stores/actions.js b/app/assets/javascripts/contributors/stores/actions.js index 3a6f4191031..5a8349aa1fd 100644 --- a/app/assets/javascripts/contributors/stores/actions.js +++ b/app/assets/javascripts/contributors/stores/actions.js @@ -1,4 +1,4 @@ -import { createAlert } from '~/flash'; +import { createAlert } from '~/alert'; import { __ } from '~/locale'; import service from '../services/contributors_service'; import * as types from './mutation_types'; diff --git a/app/assets/javascripts/filtered_search/dropdown_ajax_filter.js b/app/assets/javascripts/filtered_search/dropdown_ajax_filter.js index 23591fc0667..e1330433362 100644 --- a/app/assets/javascripts/filtered_search/dropdown_ajax_filter.js +++ b/app/assets/javascripts/filtered_search/dropdown_ajax_filter.js @@ -1,4 +1,4 @@ -import { createAlert } from '~/flash'; +import { createAlert } from '~/alert'; import { __ } from '~/locale'; import AjaxFilter from './droplab/plugins/ajax_filter'; import DropdownUtils from './dropdown_utils'; diff --git a/app/assets/javascripts/filtered_search/dropdown_emoji.js b/app/assets/javascripts/filtered_search/dropdown_emoji.js index 8c50c1860ec..bb33c3ad935 100644 --- a/app/assets/javascripts/filtered_search/dropdown_emoji.js +++ b/app/assets/javascripts/filtered_search/dropdown_emoji.js @@ -1,4 +1,4 @@ -import { createAlert } from '~/flash'; +import { createAlert } from '~/alert'; import { __ } from '~/locale'; import Ajax from './droplab/plugins/ajax'; import Filter from './droplab/plugins/filter'; diff --git a/app/assets/javascripts/filtered_search/dropdown_non_user.js b/app/assets/javascripts/filtered_search/dropdown_non_user.js index ab95986dc62..3046ad42e24 100644 --- a/app/assets/javascripts/filtered_search/dropdown_non_user.js +++ b/app/assets/javascripts/filtered_search/dropdown_non_user.js @@ -1,4 +1,4 @@ -import { createAlert } from '~/flash'; +import { createAlert } from '~/alert'; import { __ } from '~/locale'; import Ajax from './droplab/plugins/ajax'; import Filter from './droplab/plugins/filter'; diff --git a/app/assets/javascripts/filtered_search/filtered_search_manager.js b/app/assets/javascripts/filtered_search/filtered_search_manager.js index 16c70fdd069..ee4721c3ee3 100644 --- a/app/assets/javascripts/filtered_search/filtered_search_manager.js +++ b/app/assets/javascripts/filtered_search/filtered_search_manager.js @@ -1,7 +1,7 @@ import { last } from 'lodash'; import recentSearchesStorageKeys from 'ee_else_ce/filtered_search/recent_searches_storage_keys'; import IssuableFilteredSearchTokenKeys from '~/filtered_search/issuable_filtered_search_token_keys'; -import { createAlert } from '~/flash'; +import { createAlert } from '~/alert'; import { ENTER_KEY_CODE, BACKSPACE_KEY_CODE, diff --git a/app/assets/javascripts/filtered_search/visual_token_value.js b/app/assets/javascripts/filtered_search/visual_token_value.js index 33fda7533e4..409f6a4a9dc 100644 --- a/app/assets/javascripts/filtered_search/visual_token_value.js +++ b/app/assets/javascripts/filtered_search/visual_token_value.js @@ -4,7 +4,7 @@ import * as Emoji from '~/emoji'; import FilteredSearchContainer from '~/filtered_search/container'; import DropdownUtils from '~/filtered_search/dropdown_utils'; import FilteredSearchVisualTokens from '~/filtered_search/filtered_search_visual_tokens'; -import { createAlert } from '~/flash'; +import { createAlert } from '~/alert'; import AjaxCache from '~/lib/utils/ajax_cache'; import UsersCache from '~/lib/utils/users_cache'; import { __ } from '~/locale'; diff --git a/app/assets/javascripts/issuable/issuable_bulk_update_actions.js b/app/assets/javascripts/issuable/issuable_bulk_update_actions.js index 201782a201a..e5a2388580b 100644 --- a/app/assets/javascripts/issuable/issuable_bulk_update_actions.js +++ b/app/assets/javascripts/issuable/issuable_bulk_update_actions.js @@ -1,6 +1,6 @@ import $ from 'jquery'; import { difference, intersection, union } from 'lodash'; -import { createAlert } from '~/flash'; +import { createAlert } from '~/alert'; import axios from '~/lib/utils/axios_utils'; import { __ } from '~/locale'; diff --git a/app/assets/javascripts/mirrors/mirror_repos.js b/app/assets/javascripts/mirrors/mirror_repos.js index 2995f19c470..299c9731ad7 100644 --- a/app/assets/javascripts/mirrors/mirror_repos.js +++ b/app/assets/javascripts/mirrors/mirror_repos.js @@ -1,6 +1,6 @@ import $ from 'jquery'; import { debounce } from 'lodash'; -import { createAlert } from '~/flash'; +import { createAlert } from '~/alert'; import axios from '~/lib/utils/axios_utils'; import { __ } from '~/locale'; import { hide } from '~/tooltips'; diff --git a/app/assets/javascripts/namespaces/leave_by_url.js b/app/assets/javascripts/namespaces/leave_by_url.js index 09757ce17fa..b7dd509f7f2 100644 --- a/app/assets/javascripts/namespaces/leave_by_url.js +++ b/app/assets/javascripts/namespaces/leave_by_url.js @@ -1,4 +1,4 @@ -import { createAlert } from '~/flash'; +import { createAlert } from '~/alert'; import { initRails } from '~/lib/utils/rails_ujs'; import { getParameterByName } from '~/lib/utils/url_utility'; import { __, sprintf } from '~/locale'; diff --git a/app/assets/javascripts/notebook/cells/output/error.vue b/app/assets/javascripts/notebook/cells/output/error.vue new file mode 100644 index 00000000000..9afc89cde4f --- /dev/null +++ b/app/assets/javascripts/notebook/cells/output/error.vue @@ -0,0 +1,40 @@ +<script> +import Prompt from '../prompt.vue'; +import Markdown from '../markdown.vue'; + +export default { + name: 'ErrorOutput', + components: { + Prompt, + Markdown, + }, + props: { + count: { + type: Number, + required: true, + }, + rawCode: { + type: Array, + required: true, + }, + index: { + type: Number, + required: true, + }, + }, + computed: { + parsedError() { + let parsed = this.rawCode.map((l) => l.replace(/\u001B\[[0-9][0-9;]*m/g, '')); // eslint-disable-line no-control-regex + parsed = ['```error', ...parsed, '```'].join('\n'); // eslint-disable-line @gitlab/require-i18n-strings + return { source: [parsed] }; + }, + }, +}; +</script> + +<template> + <div class="output"> + <prompt type="Out" :count="count" /> + <markdown :cell="parsedError" :hide-prompt="true" /> + </div> +</template> diff --git a/app/assets/javascripts/notebook/cells/output/index.vue b/app/assets/javascripts/notebook/cells/output/index.vue index bd01534089e..22bcb5dd66a 100644 --- a/app/assets/javascripts/notebook/cells/output/index.vue +++ b/app/assets/javascripts/notebook/cells/output/index.vue @@ -4,8 +4,10 @@ import HtmlOutput from './html.vue'; import ImageOutput from './image.vue'; import LatexOutput from './latex.vue'; import MarkdownOutput from './markdown.vue'; +import ErrorOutput from './error.vue'; const TEXT_MARKDOWN = 'text/markdown'; +const ERROR_OUTPUT_TYPE = 'error'; export default { props: { @@ -28,6 +30,8 @@ export default { outputType(output) { if (output.text) { return 'text/plain'; + } else if (output.output_type === ERROR_OUTPUT_TYPE) { + return 'error'; } else if (output.data['image/png']) { return 'image/png'; } else if (output.data['image/jpeg']) { @@ -56,6 +60,8 @@ export default { getComponent(output) { if (output.text) { return CodeOutput; + } else if (output.output_type === ERROR_OUTPUT_TYPE) { + return ErrorOutput; } else if (output.data['image/png']) { return ImageOutput; } else if (output.data['image/jpeg']) { @@ -80,6 +86,10 @@ export default { return output.text.join(''); } + if (output.output_type === ERROR_OUTPUT_TYPE) { + return output.traceback; + } + return this.dataForType(output, this.outputType(output)); }, }, diff --git a/app/assets/javascripts/notebook/index.vue b/app/assets/javascripts/notebook/index.vue index df9694b7cd8..5f254cae73d 100644 --- a/app/assets/javascripts/notebook/index.vue +++ b/app/assets/javascripts/notebook/index.vue @@ -60,6 +60,10 @@ export default { margin-bottom: 10px; } +.output .text-cell { + overflow-x: auto; +} + .cell pre { margin: 0; width: 100%; diff --git a/app/assets/javascripts/search/store/actions.js b/app/assets/javascripts/search/store/actions.js index 667c56cc5ad..3af2b7892be 100644 --- a/app/assets/javascripts/search/store/actions.js +++ b/app/assets/javascripts/search/store/actions.js @@ -1,5 +1,5 @@ import Api from '~/api'; -import { createAlert } from '~/flash'; +import { createAlert } from '~/alert'; import axios from '~/lib/utils/axios_utils'; import { visitUrl, setUrlParams } from '~/lib/utils/url_utility'; import { logError } from '~/lib/logger'; diff --git a/app/assets/javascripts/vue_merge_request_widget/components/approvals/approvals.vue b/app/assets/javascripts/vue_merge_request_widget/components/approvals/approvals.vue index 17fb2daaf17..213c9ca7f54 100644 --- a/app/assets/javascripts/vue_merge_request_widget/components/approvals/approvals.vue +++ b/app/assets/javascripts/vue_merge_request_widget/components/approvals/approvals.vue @@ -1,6 +1,6 @@ <script> import { GlButton, GlSprintf, GlLink } from '@gitlab/ui'; -import { createAlert } from '~/flash'; +import { createAlert } from '~/alert'; import { BV_SHOW_MODAL } from '~/lib/utils/constants'; import { HTTP_STATUS_UNAUTHORIZED } from '~/lib/utils/http_status'; import glFeatureFlagsMixin from '~/vue_shared/mixins/gl_feature_flags_mixin'; diff --git a/app/assets/javascripts/vue_merge_request_widget/components/deployment/deployment_actions.vue b/app/assets/javascripts/vue_merge_request_widget/components/deployment/deployment_actions.vue index d6d1cae4029..306ed664326 100644 --- a/app/assets/javascripts/vue_merge_request_widget/components/deployment/deployment_actions.vue +++ b/app/assets/javascripts/vue_merge_request_widget/components/deployment/deployment_actions.vue @@ -1,5 +1,5 @@ <script> -import { createAlert } from '~/flash'; +import { createAlert } from '~/alert'; import { confirmAction } from '~/lib/utils/confirm_via_gl_modal/confirm_via_gl_modal'; import { visitUrl } from '~/lib/utils/url_utility'; import { __, s__ } from '~/locale'; diff --git a/app/assets/javascripts/vue_merge_request_widget/components/states/mr_widget_auto_merge_enabled.vue b/app/assets/javascripts/vue_merge_request_widget/components/states/mr_widget_auto_merge_enabled.vue index 38f7d3d2c96..bcae1a12344 100644 --- a/app/assets/javascripts/vue_merge_request_widget/components/states/mr_widget_auto_merge_enabled.vue +++ b/app/assets/javascripts/vue_merge_request_widget/components/states/mr_widget_auto_merge_enabled.vue @@ -2,7 +2,7 @@ import { GlSkeletonLoader, GlSprintf } from '@gitlab/ui'; import autoMergeMixin from 'ee_else_ce/vue_merge_request_widget/mixins/auto_merge'; import autoMergeEnabledQuery from 'ee_else_ce/vue_merge_request_widget/queries/states/auto_merge_enabled.query.graphql'; -import { createAlert } from '~/flash'; +import { createAlert } from '~/alert'; import { getIdFromGraphQLId } from '~/graphql_shared/utils'; import { __ } from '~/locale'; import { AUTO_MERGE_STRATEGIES } from '../../constants'; diff --git a/app/assets/javascripts/vue_merge_request_widget/components/states/mr_widget_merged.vue b/app/assets/javascripts/vue_merge_request_widget/components/states/mr_widget_merged.vue index 46392565088..4e2b12799d0 100644 --- a/app/assets/javascripts/vue_merge_request_widget/components/states/mr_widget_merged.vue +++ b/app/assets/javascripts/vue_merge_request_widget/components/states/mr_widget_merged.vue @@ -1,7 +1,7 @@ <script> import { GlTooltipDirective } from '@gitlab/ui'; import api from '~/api'; -import { createAlert } from '~/flash'; +import { createAlert } from '~/alert'; import { s__, __ } from '~/locale'; import { OPEN_REVERT_MODAL, OPEN_CHERRY_PICK_MODAL } from '~/projects/commit/constants'; import modalEventHub from '~/projects/commit/event_hub'; diff --git a/app/assets/javascripts/vue_merge_request_widget/components/states/mr_widget_rebase.vue b/app/assets/javascripts/vue_merge_request_widget/components/states/mr_widget_rebase.vue index 3f470ca19d0..fac8d37712a 100644 --- a/app/assets/javascripts/vue_merge_request_widget/components/states/mr_widget_rebase.vue +++ b/app/assets/javascripts/vue_merge_request_widget/components/states/mr_widget_rebase.vue @@ -1,7 +1,7 @@ <script> import { GlButton, GlLink, GlModal, GlSkeletonLoader } from '@gitlab/ui'; import { helpPagePath } from '~/helpers/help_page_helper'; -import { createAlert } from '~/flash'; +import { createAlert } from '~/alert'; import { __, s__ } from '~/locale'; import toast from '~/vue_shared/plugins/global_toast'; import simplePoll from '~/lib/utils/simple_poll'; diff --git a/app/assets/javascripts/vue_merge_request_widget/components/states/ready_to_merge.vue b/app/assets/javascripts/vue_merge_request_widget/components/states/ready_to_merge.vue index bb8990a48b1..c00d72a1ad0 100644 --- a/app/assets/javascripts/vue_merge_request_widget/components/states/ready_to_merge.vue +++ b/app/assets/javascripts/vue_merge_request_widget/components/states/ready_to_merge.vue @@ -14,7 +14,7 @@ import { import { isEmpty } from 'lodash'; import readyToMergeMixin from 'ee_else_ce/vue_merge_request_widget/mixins/ready_to_merge'; import readyToMergeQuery from 'ee_else_ce/vue_merge_request_widget/queries/states/ready_to_merge.query.graphql'; -import { createAlert } from '~/flash'; +import { createAlert } from '~/alert'; import { TYPENAME_MERGE_REQUEST } from '~/graphql_shared/constants'; import { secondsToMilliseconds } from '~/lib/utils/datetime_utility'; import simplePoll from '~/lib/utils/simple_poll'; diff --git a/app/assets/javascripts/vue_merge_request_widget/components/states/work_in_progress.vue b/app/assets/javascripts/vue_merge_request_widget/components/states/work_in_progress.vue index 02d4f2499fe..7163e54985e 100644 --- a/app/assets/javascripts/vue_merge_request_widget/components/states/work_in_progress.vue +++ b/app/assets/javascripts/vue_merge_request_widget/components/states/work_in_progress.vue @@ -1,7 +1,7 @@ <script> import { GlButton } from '@gitlab/ui'; import { produce } from 'immer'; -import { createAlert } from '~/flash'; +import { createAlert } from '~/alert'; import { __, s__ } from '~/locale'; import MergeRequest from '~/merge_request'; import BoldText from '~/vue_merge_request_widget/components/bold_text.vue'; diff --git a/app/assets/javascripts/vue_merge_request_widget/mixins/approvals.js b/app/assets/javascripts/vue_merge_request_widget/mixins/approvals.js index a43c784db28..ae9111b9504 100644 --- a/app/assets/javascripts/vue_merge_request_widget/mixins/approvals.js +++ b/app/assets/javascripts/vue_merge_request_widget/mixins/approvals.js @@ -1,4 +1,4 @@ -import { createAlert } from '~/flash'; +import { createAlert } from '~/alert'; import approvedByQuery from 'ee_else_ce/vue_merge_request_widget/components/approvals/queries/approvals.query.graphql'; import { FETCH_ERROR } from '../components/approvals/messages'; diff --git a/app/assets/javascripts/vue_merge_request_widget/mr_widget_options.vue b/app/assets/javascripts/vue_merge_request_widget/mr_widget_options.vue index ecbee6544ab..8867478654a 100644 --- a/app/assets/javascripts/vue_merge_request_widget/mr_widget_options.vue +++ b/app/assets/javascripts/vue_merge_request_widget/mr_widget_options.vue @@ -9,7 +9,7 @@ import MrWidgetApprovals from 'ee_else_ce/vue_merge_request_widget/components/ap import MRWidgetService from 'ee_else_ce/vue_merge_request_widget/services/mr_widget_service'; import MRWidgetStore from 'ee_else_ce/vue_merge_request_widget/stores/mr_widget_store'; import { stateToComponentMap as classState } from 'ee_else_ce/vue_merge_request_widget/stores/state_maps'; -import { createAlert } from '~/flash'; +import { createAlert } from '~/alert'; import { secondsToMilliseconds } from '~/lib/utils/datetime_utility'; import notify from '~/lib/utils/notify'; import { sprintf, s__, __ } from '~/locale'; diff --git a/doc/api/project_vulnerabilities.md b/doc/api/project_vulnerabilities.md index 9effe54b8e2..446c629c3bf 100644 --- a/doc/api/project_vulnerabilities.md +++ b/doc/api/project_vulnerabilities.md @@ -1,6 +1,6 @@ --- -stage: Create -group: Source Code +stage: Govern +group: Threat Insights info: "To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments" type: reference, api --- diff --git a/doc/ci/test_cases/index.md b/doc/ci/test_cases/index.md index 84f0d8074a1..8ad9e27de8b 100644 --- a/doc/ci/test_cases/index.md +++ b/doc/ci/test_cases/index.md @@ -6,7 +6,7 @@ description: Test cases in GitLab can help your teams create testing scenarios i type: reference --- -# Test Cases **(ULTIMATE)** +# Test cases **(ULTIMATE)** > - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/233479) in GitLab 13.6. > - [Feature flag removed](https://gitlab.com/gitlab-org/gitlab/-/issues/241983) in GitLab 13.7. @@ -24,14 +24,14 @@ Prerequisite: To create a test case in a GitLab project: -1. Go to **CI/CD > Test Cases**. +1. Go to **CI/CD > Test cases**. 1. Select **New test case**. You are taken to the new test case form. Here you can enter the new case's title, [description](../../user/markdown.md), attach a file, and assign [labels](../../user/project/labels.md). 1. Select **Submit test case**. You are taken to view the new test case. ## View a test case -You can view all test cases in the project in the Test Cases list. Filter the +You can view all test cases in the project in the test cases list. Filter the issue list with a search query, including labels or the test case's title. Prerequisite: @@ -43,7 +43,7 @@ Whether you can view an test case depends on the [project visibility level](../. To view a test case: -1. In a project, go to **CI/CD > Test Cases**. +1. In a project, go to **CI/CD > Test cases**. 1. Select the title of the test case you want to view. You are taken to the test case page. ![An example test case page](img/test_case_show_v13_10.png) @@ -77,7 +77,7 @@ To archive a test case, on the test case's page, select **Archive test case**. To view archived test cases: -1. Go to **CI/CD > Test Cases**. +1. Go to **CI/CD > Test cases**. 1. Select **Archived**. ## Reopen an archived test case diff --git a/doc/development/testing_guide/end_to_end/best_practices.md b/doc/development/testing_guide/end_to_end/best_practices.md index 777a9f47339..fd184c13e5e 100644 --- a/doc/development/testing_guide/end_to_end/best_practices.md +++ b/doc/development/testing_guide/end_to_end/best_practices.md @@ -16,9 +16,9 @@ In case custom inflection logic is needed, custom inflectors are added in the [q ## Link a test to its test case -Every test should have a corresponding test case in the [GitLab project Test Cases](https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases) as well as a results issue in the [Quality Test Cases project](https://gitlab.com/gitlab-org/quality/testcases/-/issues). +Every test should have a corresponding test case in the [GitLab project test cases](https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases) as well as a results issue in the [Quality Test Cases project](https://gitlab.com/gitlab-org/quality/testcases/-/issues). If a test case issue does not yet exist, any GitLab team member can create a new test case in -the [Test Cases](https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases) GitLab project +the **[CI/CD > Test cases](https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases)** page of the GitLab project with a placeholder title. After the test case URL is linked to a test in the code, when the test is run in a pipeline that has reporting enabled, the `report-results` script automatically updates the test case and the results issue. diff --git a/doc/development/testing_guide/end_to_end/rspec_metadata_tests.md b/doc/development/testing_guide/end_to_end/rspec_metadata_tests.md index c1389b3ac0e..c9e60c06732 100644 --- a/doc/development/testing_guide/end_to_end/rspec_metadata_tests.md +++ b/doc/development/testing_guide/end_to_end/rspec_metadata_tests.md @@ -52,5 +52,5 @@ This is a partial list of the [RSpec metadata](https://relishapp.com/rspec/rspec | `:skip_signup_disabled` | The test uses UI to sign up a new user and is skipped in any environment that does not allow new user registration via the UI. | | `:smoke` | The test belongs to the test suite which verifies basic functionality of a GitLab instance. | | `:smtp` | The test requires a GitLab instance to be configured to use an SMTP server. Tests SMTP notification email delivery from GitLab by using MailHog. | -| `:testcase` | The link to the test case issue in the [GitLab Project Test Cases](https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases). | +| `:testcase` | The link to the test case issue in the [GitLab Project test cases](https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases). | | `:transient` | The test tests transient bugs. It is excluded by default. | diff --git a/lib/tasks/gitlab/db.rake b/lib/tasks/gitlab/db.rake index 375005c678d..befc2113b1e 100644 --- a/lib/tasks/gitlab/db.rake +++ b/lib/tasks/gitlab/db.rake @@ -450,6 +450,8 @@ namespace :gitlab do desc 'Generate database docs yaml' task generate: :environment do + next if Gitlab.jh? + FileUtils.mkdir_p(DB_DOCS_PATH) FileUtils.mkdir_p(EE_DICTIONARY_PATH) if Gitlab.ee? diff --git a/locale/gitlab.pot b/locale/gitlab.pot index d383f77df01..278fb4e6ff4 100644 --- a/locale/gitlab.pot +++ b/locale/gitlab.pot @@ -28231,9 +28231,6 @@ msgstr "" msgid "New Snippet" msgstr "" -msgid "New Test Case" -msgstr "" - msgid "New User" msgstr "" @@ -42867,10 +42864,10 @@ msgstr "" msgid "Test" msgstr "" -msgid "Test Cases" +msgid "Test case" msgstr "" -msgid "Test case" +msgid "Test cases" msgstr "" msgid "Test coverage value for this pipeline was calculated by the coverage value of %d job." @@ -42892,9 +42889,6 @@ msgstr "" msgid "TestCases|Moving test case" msgstr "" -msgid "TestCases|New Test Case" -msgstr "" - msgid "TestCases|New test case" msgstr "" diff --git a/qa/qa/resource/integrations/web_hook/smockerable.rb b/qa/qa/resource/integrations/web_hook/smockerable.rb new file mode 100644 index 00000000000..f1d2022477e --- /dev/null +++ b/qa/qa/resource/integrations/web_hook/smockerable.rb @@ -0,0 +1,41 @@ +# frozen_string_literal: true + +module QA + module Resource + module Integrations + module WebHook + module Smockerable + def teardown! + Service::DockerRun::Smocker.teardown! + end + + def setup(mock = Vendor::Smocker::SmockerApi::DEFAULT_MOCK, session: nil, **event_args) + Service::DockerRun::Smocker.init(wait: 10) do |smocker| + smocker.register(mock, session: session) + + webhook = fabricate_via_api! do |hook| + hook.url = smocker.url + + event_args.each do |event, bool| + hook.send("#{event}_events=", bool) + end + + hook + end + + def smocker.events(session_id = nil) + history(session_id).map do |history_response| + history_response.request.fetch(:body, {}) + end + end + + yield(webhook, smocker) + + smocker.reset + end + end + end + end + end + end +end diff --git a/qa/qa/resource/project_web_hook.rb b/qa/qa/resource/project_web_hook.rb index 86e662932e1..c8b6c2a6332 100644 --- a/qa/qa/resource/project_web_hook.rb +++ b/qa/qa/resource/project_web_hook.rb @@ -2,7 +2,17 @@ module QA module Resource - class ProjectWebHook < Base + class ProjectWebHook < WebHookBase + extend Integrations::WebHook::Smockerable + + attributes :disabled_until, :alert_status + + attribute :project do + Project.fabricate_via_api! do |resource| + resource.name = 'project-with-webhooks' + end + end + EVENT_TRIGGERS = %i[ issues job @@ -10,24 +20,13 @@ module QA note pipeline push + releases tag_push wiki_page confidential_issues confidential_note ].freeze - attr_accessor :url, :enable_ssl - - attribute :disabled_until - attribute :id - attribute :alert_status - - attribute :project do - Project.fabricate_via_api! do |resource| - resource.name = 'project-with-webhooks' - end - end - EVENT_TRIGGERS.each do |trigger| attribute "#{trigger}_events".to_sym do false @@ -35,18 +34,13 @@ module QA end def initialize - @id = nil - @enable_ssl = false - @alert_status = nil - @url = nil - end + super - def fabricate_via_api! - resource_web_url = super - - @id = api_response[:id] + @push_events_branch_filter = [] + end - resource_web_url + def add_push_event_branch_filter(branch) + @push_events_branch_filter << branch end def resource_web_url(resource) @@ -65,7 +59,9 @@ module QA body = { id: project.id, url: url, - enable_ssl_verification: enable_ssl + enable_ssl_verification: enable_ssl_verification, + token: token, + push_events_branch_filter: @push_events_branch_filter.join(',') } EVENT_TRIGGERS.each_with_object(body) do |trigger, memo| attr = "#{trigger}_events" diff --git a/qa/qa/resource/web_hook_base.rb b/qa/qa/resource/web_hook_base.rb new file mode 100644 index 00000000000..d7469466212 --- /dev/null +++ b/qa/qa/resource/web_hook_base.rb @@ -0,0 +1,46 @@ +# frozen_string_literal: true + +module QA + module Resource + class WebHookBase < Base + attributes :id, :url + + attribute :token do + nil + end + + attribute :enable_ssl_verification do + false + end + + def fabricate_via_api! + resource_web_url = super + + @id = api_response[:id] + + resource_web_url + end + + # @return [String] the api path to fetch the resource + def api_get_path + raise NotImplementedError, not_implemented_message(__callee__) + end + + # @return [String] the api path to create the resource + def api_post_path + raise NotImplementedError, not_implemented_message(__callee__) + end + + # @return [Hash] the payload needed to create the resource + def api_post_body + raise NotImplementedError, not_implemented_message(__callee__) + end + + private + + def not_implemented_message(callee) + "#{self.class} must implement ##{callee}" + end + end + end +end diff --git a/qa/qa/specs/features/api/1_manage/integrations/webhook_events_spec.rb b/qa/qa/specs/features/api/1_manage/integrations/webhook_events_spec.rb index 8439b881ed7..a6cdd737341 100644 --- a/qa/qa/specs/features/api/1_manage/integrations/webhook_events_spec.rb +++ b/qa/qa/specs/features/api/1_manage/integrations/webhook_events_spec.rb @@ -2,78 +2,57 @@ module QA RSpec.describe 'Manage' do - describe 'WebHooks integration', :requires_admin, :integrations, :orchestrated, product_group: :integrations do + describe( + 'WebHooks integration', + :requires_admin, + :integrations, + :orchestrated, + product_group: :integrations + ) do before(:context) do toggle_local_requests(true) end after(:context) do - Service::DockerRun::Smocker.teardown! + Resource::ProjectWebHook.teardown! end let(:session) { SecureRandom.hex(5) } let(:tag_name) { SecureRandom.hex(5) } it 'sends a push event', testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/348945' do - setup_webhook(push: true) do |webhook, smocker| + Resource::ProjectWebHook.setup(session: session, push: true) do |webhook, smocker| Resource::Repository::ProjectPush.fabricate! do |project_push| project_push.project = webhook.project end - wait_until do - !smocker.history(session).empty? - end - - events = smocker.history(session).map(&:as_hook_event) - aggregate_failures do - expect(events.size).to be(1), "Should have 1 event: \n#{events.map(&:raw).join("\n")}" - expect(events[0].project_name).to eql(webhook.project.name) - expect(events[0].push?).to be(true), "Not push event: \n#{events[0].raw}" - end + expect_web_hook_single_event_success(webhook, smocker, type: 'push') end end it 'sends a merge request event', testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/349720' do - setup_webhook(merge_requests: true) do |webhook, smocker| + Resource::ProjectWebHook.setup(session: session, merge_requests: true) do |webhook, smocker| Resource::MergeRequest.fabricate_via_api! do |merge_request| merge_request.project = webhook.project end - wait_until do - !smocker.history(session).empty? - end - - events = smocker.history(session).map(&:as_hook_event) - aggregate_failures do - expect(events.size).to be(1), "Should have 1 event: \n#{events.map(&:raw).join("\n")}" - expect(events[0].project_name).to eql(webhook.project.name) - expect(events[0].mr?).to be(true), "Not MR event: \n#{events[0].raw}" - end + expect_web_hook_single_event_success(webhook, smocker, type: 'merge_request') end end it 'sends a wiki page event', testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/349722' do - setup_webhook(wiki_page: true) do |webhook, smocker| + Resource::ProjectWebHook.setup(session: session, wiki_page: true) do |webhook, smocker| Resource::Wiki::ProjectPage.fabricate_via_api! do |page| page.project = webhook.project end - wait_until do - !smocker.history(session).empty? - end - - events = smocker.history(session).map(&:as_hook_event) - aggregate_failures do - expect(events.size).to be(1), "Should have 1 event: \n#{events.map(&:raw).join("\n")}" - expect(events[0].project_name).to eql(webhook.project.name) - expect(events[0].wiki?).to be(true), "Not wiki event: \n#{events[0].raw}" - end + expect_web_hook_single_event_success(webhook, smocker, type: 'wiki_page') end end it 'sends an issues and note event', testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/349723' do - setup_webhook(issues: true, note: true) do |webhook, smocker| + Resource::ProjectWebHook.setup(session: session, issues: true, note: true) do |webhook, smocker| issue = Resource::Issue.fabricate_via_api! do |issue_init| issue_init.project = webhook.project end @@ -83,25 +62,24 @@ module QA note.issue = issue end - wait_until do - smocker.history(session).size > 1 - end + expect { smocker.events(session).size }.to eventually_eq(2) + .within(max_duration: 30, sleep_interval: 2), + -> { "Should have 2 events, got: #{smocker.stringified_history(session)}" } - events = smocker.history(session).map(&:as_hook_event) - aggregate_failures do - issue_event = events.find(&:issue?) - note_event = events.find(&:note?) + events = smocker.events(session) - expect(events.size).to be(2), "Should have 2 events: \n#{events.map(&:raw).join("\n")}" - expect(issue_event).not_to be(nil), "Not issue event: \n#{events[0].raw}" - expect(note_event).not_to be(nil), "Not note event: \n#{events[1].raw}" + aggregate_failures do + expect(events).to include( + a_hash_including(object_kind: 'note'), + a_hash_including(object_kind: 'issue') + ) end end end it 'sends a tag event', testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/383577' do - setup_webhook(tag_push: true) do |webhook, smocker| + Resource::ProjectWebHook.setup(session: session, tag_push: true) do |webhook, smocker| project_push = Resource::Repository::ProjectPush.fabricate! do |project_push| project_push.project = webhook.project end @@ -112,16 +90,7 @@ module QA tag.name = tag_name end - wait_until do - smocker.history(session).size == 1 - end - - events = smocker.history(session).map(&:as_hook_event) - aggregate_failures do - expect(events.size).to be(1), "Should have 1 event: \n#{events.map(&:raw).join("\n")}" - expect(events[0].project_name).to eql(webhook.project.name) - expect(events[0].tag?).to be(true), "Not tag event: \n#{events[0].raw}" - end + expect_web_hook_single_event_success(webhook, smocker, type: 'tag_push') end end @@ -144,16 +113,19 @@ module QA it 'hook is auto-disabled', testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/389595' do - setup_webhook(fail_mock, issues: true) do |webhook, smocker| + Resource::ProjectWebHook.setup(fail_mock, session: session, issues: true) do |webhook, smocker| hook_trigger_times.times do Resource::Issue.fabricate_via_api! do |issue_init| issue_init.project = webhook.project end + + # using sleep to give rate limiter a chance to activate. + sleep 0.5 end - expect { smocker.history(session).size }.to eventually_eq(disabled_after) + expect { smocker.events(session).size }.to eventually_eq(disabled_after) .within(max_duration: 30, sleep_interval: 2), - -> { "Should have #{disabled_after} events, got: #{smocker.history(session).size}" } + -> { "Should have #{disabled_after} events, got: #{smocker.events(session).size}" } webhook.reload! @@ -161,34 +133,27 @@ module QA end end end + end - private - - def setup_webhook(mock = Vendor::Smocker::SmockerApi::DEFAULT_MOCK, **event_args) - Service::DockerRun::Smocker.init(wait: 10) do |smocker| - smocker.register(mock, session: session) - - webhook = Resource::ProjectWebHook.fabricate_via_api! do |hook| - hook.url = smocker.url - - event_args.each do |event, bool| - hook.send("#{event}_events=", bool) - end - end + private - yield(webhook, smocker) + def expect_web_hook_single_event_success(webhook, smocker, type:) + expect { smocker.events(session).size }.to eventually_eq(1) + .within(max_duration: 30, sleep_interval: 2), + -> { "Should have 1 events, got: #{smocker.stringified_history(session)}" } - smocker.reset - end - end + event = smocker.events(session).first - def toggle_local_requests(on) - Runtime::ApplicationSettings.set_application_settings(allow_local_requests_from_web_hooks_and_services: on) + aggregate_failures do + expect(event).to match(a_hash_including( + object_kind: type, + project: a_hash_including(name: webhook.project.name) + )) end + end - def wait_until(timeout = 120, &block) - Support::Waiter.wait_until(max_duration: timeout, reload_page: false, raise_on_failure: false, &block) - end + def toggle_local_requests(on) + Runtime::ApplicationSettings.set_application_settings(allow_local_requests_from_web_hooks_and_services: on) end end end diff --git a/qa/qa/vendor/smocker/event_payload.rb b/qa/qa/vendor/smocker/event_payload.rb deleted file mode 100644 index 70998e055ea..00000000000 --- a/qa/qa/vendor/smocker/event_payload.rb +++ /dev/null @@ -1,61 +0,0 @@ -# frozen_string_literal: true - -module QA - module Vendor - module Smocker - class EventPayload - def initialize(hook_data) - @hook_data = hook_data - end - - def raw - @hook_data - end - - def event - raw[:object_kind]&.to_sym - end - - def event_name - raw[:event_name]&.to_sym - end - - def project_name - raw.dig(:project, :name) - end - - def mr? - event == :merge_request - end - - def issue? - event == :issue - end - - def note? - event == :note - end - - def push? - event == :push - end - - def tag? - event == :tag_push - end - - def wiki? - event == :wiki_page - end - - def subgroup_create? - event_name == :subgroup_create - end - - def subgroup_destroy? - event_name == :subgroup_destroy - end - end - end - end -end diff --git a/qa/qa/vendor/smocker/history_response.rb b/qa/qa/vendor/smocker/history_response.rb index 53d5759ef8b..426bbe024ae 100644 --- a/qa/qa/vendor/smocker/history_response.rb +++ b/qa/qa/vendor/smocker/history_response.rb @@ -1,6 +1,5 @@ # frozen_string_literal: true -require_relative './event_payload' require 'time' module QA @@ -23,12 +22,6 @@ module QA payload[:request] end - # @return [EventPayload] the request body as a webhook event - def as_hook_event - body = request&.dig(:body) - EventPayload.new body if body - end - # @return [Time] Time request was recieved def received date = request&.dig(:date) diff --git a/qa/qa/vendor/smocker/smocker_api.rb b/qa/qa/vendor/smocker/smocker_api.rb index 359d1497825..111de84ffce 100644 --- a/qa/qa/vendor/smocker/smocker_api.rb +++ b/qa/qa/vendor/smocker/smocker_api.rb @@ -113,6 +113,14 @@ module QA end end + # Returns a stringfied version of the Smocker history + # + # @param session_name [String] the session name for the mock + # @return [String] stringified event payloads + def stringified_history(session_name = nil) + history(session_name).map(&:payload).join("\n") + end + private attr_reader :host, :public_port, :admin_port, :scheme diff --git a/qa/spec/resource/project_web_hook_spec.rb b/qa/spec/resource/project_web_hook_spec.rb new file mode 100644 index 00000000000..bca95124c06 --- /dev/null +++ b/qa/spec/resource/project_web_hook_spec.rb @@ -0,0 +1,70 @@ +# frozen_string_literal: true + +module QA + RSpec.describe Resource::ProjectWebHook do + let(:smocker_api) { instance_double(Vendor::Smocker::SmockerApi) } + let(:smocker_docker) { class_double(Service::DockerRun::Smocker) } + let(:history_entries) do + [ + { + request: { + body: { + object_kind: 'tag_push' + } + } + }, + { + request: { + body: { + object_kind: 'merge_request' + } + } + } + ] + end + + let(:history_response) { Struct.new(:body).new(history_entries.to_json) } + + it 'configures the project hook events' do + setup_mocks + + described_class.setup(pipeline: true, wiki_page: true) do |webhook, _| + expect(webhook.pipeline_events).to be(true) + expect(webhook.wiki_page_events).to be(true) + expect(webhook.push_events).to be(false) + end + end + + it 'adds an #event method to the smocker object that returns webhook events' do + setup_mocks + + # rubocop:disable RSpec/AnyInstanceOf + expect_any_instance_of(Vendor::Smocker::SmockerApi).to receive(:get_session_id) + .and_return('123') + expect_any_instance_of(Vendor::Smocker::SmockerApi).to receive(:get) + .with(/history/) + .and_return(history_response) + # rubocop:enable RSpec/AnyInstanceOf + + described_class.setup do |_, smocker| + expect(smocker.events('123')).to include( + a_hash_including(object_kind: 'merge_request'), + a_hash_including(object_kind: 'tag_push') + ) + end + end + + def setup_mocks + # rubocop:disable RSpec/AnyInstanceOf + expect_any_instance_of(Vendor::Smocker::SmockerApi).to receive(:reset) + expect_any_instance_of(Vendor::Smocker::SmockerApi).to receive(:register) + # rubocop:enable RSpec/AnyInstanceOf + + expect(Service::DockerRun::Smocker).to receive(:init) + .and_yield(Vendor::Smocker::SmockerApi.new(host: 'smocker.net')) + allow(subject).to receive(:project) + allow(described_class).to receive(:fabricate_via_api!) + .and_yield(subject) + end + end +end diff --git a/qa/spec/vendor/smocker_api_spec.rb b/qa/spec/vendor/smocker_api_spec.rb new file mode 100644 index 00000000000..b54197b8b1f --- /dev/null +++ b/qa/spec/vendor/smocker_api_spec.rb @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +module QA + RSpec.describe Vendor::Smocker::SmockerApi do + let(:host) { 'smocker.bar' } + + subject { described_class.new(host: host) } + + it 'retries until the service is ready' do + expect(subject).to receive(:get) + .and_raise(StandardError) + .and_raise(StandardError) + .and_return(200) + + expect { subject.wait_for_ready }.not_to raise_error + end + end +end diff --git a/spec/frontend/notebook/cells/output/error_spec.js b/spec/frontend/notebook/cells/output/error_spec.js new file mode 100644 index 00000000000..2e4ca8c1761 --- /dev/null +++ b/spec/frontend/notebook/cells/output/error_spec.js @@ -0,0 +1,48 @@ +import { mount } from '@vue/test-utils'; +import ErrorOutput from '~/notebook/cells/output/error.vue'; +import Prompt from '~/notebook/cells/prompt.vue'; +import Markdown from '~/notebook/cells/markdown.vue'; +import { errorOutputContent, relativeRawPath } from '../../mock_data'; + +describe('notebook/cells/output/error.vue', () => { + let wrapper; + + const createComponent = () => { + wrapper = mount(ErrorOutput, { + propsData: { + rawCode: errorOutputContent, + index: 1, + count: 2, + }, + provide: { relativeRawPath }, + }); + }; + + beforeEach(() => { + createComponent(); + }); + + const findPrompt = () => wrapper.findComponent(Prompt); + const findMarkdown = () => wrapper.findComponent(Markdown); + + it('renders the prompt', () => { + expect(findPrompt().props()).toMatchObject({ count: 2, showOutput: true, type: 'Out' }); + }); + + it('renders the markdown', () => { + const expectedParsedMarkdown = + '```error\n' + + '---------------------------------------------------------------------------\n' + + 'NameError Traceback (most recent call last)\n' + + '/var/folders/cq/l637k4x13gx6y9p_gfs4c_gc0000gn/T/ipykernel_79203/294318627.py in <module>\n' + + '----> 1 To\n' + + '\n' + + "NameError: name 'To' is not defined\n" + + '```'; + + expect(findMarkdown().props()).toMatchObject({ + cell: { source: [expectedParsedMarkdown] }, + hidePrompt: true, + }); + }); +}); diff --git a/spec/frontend/notebook/mock_data.js b/spec/frontend/notebook/mock_data.js index b1419e1256f..5c47cb5aa9b 100644 --- a/spec/frontend/notebook/mock_data.js +++ b/spec/frontend/notebook/mock_data.js @@ -1,2 +1,8 @@ export const relativeRawPath = '/test'; export const markdownCellContent = ['# Test']; +export const errorOutputContent = [ + '\u001b[0;31m---------------------------------------------------------------------------\u001b[0m', + '\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)', + '\u001b[0;32m/var/folders/cq/l637k4x13gx6y9p_gfs4c_gc0000gn/T/ipykernel_79203/294318627.py\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mTo\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m', + "\u001b[0;31mNameError\u001b[0m: name 'To' is not defined", +]; diff --git a/spec/services/groups/auto_devops_service_spec.rb b/spec/services/groups/auto_devops_service_spec.rb index 486a99dd8df..0724e072dab 100644 --- a/spec/services/groups/auto_devops_service_spec.rb +++ b/spec/services/groups/auto_devops_service_spec.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true require 'spec_helper' -RSpec.describe Groups::AutoDevopsService, '#execute' do +RSpec.describe Groups::AutoDevopsService, '#execute', feature_category: :auto_devops do let_it_be(:group) { create(:group) } let_it_be(:user) { create(:user) } diff --git a/spec/services/groups/autocomplete_service_spec.rb b/spec/services/groups/autocomplete_service_spec.rb index 00d0ad3b347..9f55322e72d 100644 --- a/spec/services/groups/autocomplete_service_spec.rb +++ b/spec/services/groups/autocomplete_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe Groups::AutocompleteService do +RSpec.describe Groups::AutocompleteService, feature_category: :subgroups do let_it_be(:group, refind: true) { create(:group, :nested, :private, avatar: fixture_file_upload('spec/fixtures/dk.png')) } let_it_be(:sub_group) { create(:group, :private, parent: group) } diff --git a/spec/services/groups/deploy_tokens/create_service_spec.rb b/spec/services/groups/deploy_tokens/create_service_spec.rb index 0c28075f998..e408c2787d8 100644 --- a/spec/services/groups/deploy_tokens/create_service_spec.rb +++ b/spec/services/groups/deploy_tokens/create_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe Groups::DeployTokens::CreateService do +RSpec.describe Groups::DeployTokens::CreateService, feature_category: :deployment_management do it_behaves_like 'a deploy token creation service' do let(:entity) { create(:group) } let(:deploy_token_class) { GroupDeployToken } diff --git a/spec/services/groups/deploy_tokens/destroy_service_spec.rb b/spec/services/groups/deploy_tokens/destroy_service_spec.rb index 28e60b12993..c4694758b2f 100644 --- a/spec/services/groups/deploy_tokens/destroy_service_spec.rb +++ b/spec/services/groups/deploy_tokens/destroy_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe Groups::DeployTokens::DestroyService do +RSpec.describe Groups::DeployTokens::DestroyService, feature_category: :deployment_management do it_behaves_like 'a deploy token deletion service' do let_it_be(:entity) { create(:group) } let_it_be(:deploy_token_class) { GroupDeployToken } diff --git a/spec/services/groups/deploy_tokens/revoke_service_spec.rb b/spec/services/groups/deploy_tokens/revoke_service_spec.rb index fcf11bbb8e6..c302dd14e3b 100644 --- a/spec/services/groups/deploy_tokens/revoke_service_spec.rb +++ b/spec/services/groups/deploy_tokens/revoke_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe Groups::DeployTokens::RevokeService do +RSpec.describe Groups::DeployTokens::RevokeService, feature_category: :deployment_management do let_it_be(:entity) { create(:group) } let_it_be(:deploy_token) { create(:deploy_token, :group, groups: [entity]) } let_it_be(:user) { create(:user) } diff --git a/spec/services/groups/group_links/create_service_spec.rb b/spec/services/groups/group_links/create_service_spec.rb index bfbaedbd06f..ced87421858 100644 --- a/spec/services/groups/group_links/create_service_spec.rb +++ b/spec/services/groups/group_links/create_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe Groups::GroupLinks::CreateService, '#execute' do +RSpec.describe Groups::GroupLinks::CreateService, '#execute', feature_category: :subgroups do let_it_be(:shared_with_group_parent) { create(:group, :private) } let_it_be(:shared_with_group) { create(:group, :private, parent: shared_with_group_parent) } let_it_be(:shared_with_group_child) { create(:group, :private, parent: shared_with_group) } diff --git a/spec/services/groups/group_links/destroy_service_spec.rb b/spec/services/groups/group_links/destroy_service_spec.rb index a570c28cf8b..5821ec44192 100644 --- a/spec/services/groups/group_links/destroy_service_spec.rb +++ b/spec/services/groups/group_links/destroy_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe Groups::GroupLinks::DestroyService, '#execute' do +RSpec.describe Groups::GroupLinks::DestroyService, '#execute', feature_category: :subgroups do let_it_be(:user) { create(:user) } let_it_be(:group) { create(:group, :private) } let_it_be(:shared_group) { create(:group, :private) } diff --git a/spec/services/groups/group_links/update_service_spec.rb b/spec/services/groups/group_links/update_service_spec.rb index 31446c8e4bf..42f622811d4 100644 --- a/spec/services/groups/group_links/update_service_spec.rb +++ b/spec/services/groups/group_links/update_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe Groups::GroupLinks::UpdateService, '#execute' do +RSpec.describe Groups::GroupLinks::UpdateService, '#execute', feature_category: :subgroups do let(:user) { create(:user) } let_it_be(:group) { create(:group, :private) } diff --git a/spec/services/groups/import_export/export_service_spec.rb b/spec/services/groups/import_export/export_service_spec.rb index ec42a728409..c44c2e3b911 100644 --- a/spec/services/groups/import_export/export_service_spec.rb +++ b/spec/services/groups/import_export/export_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe Groups::ImportExport::ExportService do +RSpec.describe Groups::ImportExport::ExportService, feature_category: :importers do describe '#async_execute' do let(:user) { create(:user) } let(:group) { create(:group) } diff --git a/spec/services/groups/import_export/import_service_spec.rb b/spec/services/groups/import_export/import_service_spec.rb index 972b12d7ee5..75db6e26cbf 100644 --- a/spec/services/groups/import_export/import_service_spec.rb +++ b/spec/services/groups/import_export/import_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe Groups::ImportExport::ImportService do +RSpec.describe Groups::ImportExport::ImportService, feature_category: :importers do describe '#async_execute' do let_it_be(:user) { create(:user) } let_it_be(:group) { create(:group) } diff --git a/spec/services/groups/merge_requests_count_service_spec.rb b/spec/services/groups/merge_requests_count_service_spec.rb index 8bd350d6f0e..32c4c618eda 100644 --- a/spec/services/groups/merge_requests_count_service_spec.rb +++ b/spec/services/groups/merge_requests_count_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe Groups::MergeRequestsCountService, :use_clean_rails_memory_store_caching do +RSpec.describe Groups::MergeRequestsCountService, :use_clean_rails_memory_store_caching, feature_category: :subgroups do let_it_be(:user) { create(:user) } let_it_be(:group) { create(:group, :public) } let_it_be(:project) { create(:project, :repository, namespace: group) } diff --git a/spec/services/groups/nested_create_service_spec.rb b/spec/services/groups/nested_create_service_spec.rb index a43c1d8d9c3..476bc2aa23c 100644 --- a/spec/services/groups/nested_create_service_spec.rb +++ b/spec/services/groups/nested_create_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe Groups::NestedCreateService do +RSpec.describe Groups::NestedCreateService, feature_category: :subgroups do let(:user) { create(:user) } subject(:service) { described_class.new(user, params) } diff --git a/spec/services/groups/open_issues_count_service_spec.rb b/spec/services/groups/open_issues_count_service_spec.rb index 923caa6c150..725b913bf15 100644 --- a/spec/services/groups/open_issues_count_service_spec.rb +++ b/spec/services/groups/open_issues_count_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe Groups::OpenIssuesCountService, :use_clean_rails_memory_store_caching do +RSpec.describe Groups::OpenIssuesCountService, :use_clean_rails_memory_store_caching, feature_category: :subgroups do let_it_be(:group) { create(:group, :public) } let_it_be(:project) { create(:project, :public, namespace: group) } let_it_be(:user) { create(:user) } diff --git a/spec/services/groups/participants_service_spec.rb b/spec/services/groups/participants_service_spec.rb index 750aead277f..37966a523c2 100644 --- a/spec/services/groups/participants_service_spec.rb +++ b/spec/services/groups/participants_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe Groups::ParticipantsService do +RSpec.describe Groups::ParticipantsService, feature_category: :subgroups do describe '#group_members' do let(:user) { create(:user) } let(:parent_group) { create(:group) } diff --git a/spec/services/groups/update_service_spec.rb b/spec/services/groups/update_service_spec.rb index c758d3d5477..6baa8e5d6b6 100644 --- a/spec/services/groups/update_service_spec.rb +++ b/spec/services/groups/update_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe Groups::UpdateService do +RSpec.describe Groups::UpdateService, feature_category: :subgroups do let!(:user) { create(:user) } let!(:private_group) { create(:group, :private) } let!(:internal_group) { create(:group, :internal) } diff --git a/spec/services/groups/update_shared_runners_service_spec.rb b/spec/services/groups/update_shared_runners_service_spec.rb index a29f73a71c2..48c81f109aa 100644 --- a/spec/services/groups/update_shared_runners_service_spec.rb +++ b/spec/services/groups/update_shared_runners_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe Groups::UpdateSharedRunnersService do +RSpec.describe Groups::UpdateSharedRunnersService, feature_category: :subgroups do let(:user) { create(:user) } let(:group) { create(:group) } let(:params) { {} } diff --git a/spec/services/groups/update_statistics_service_spec.rb b/spec/services/groups/update_statistics_service_spec.rb index 84b18b670a7..13a88839de0 100644 --- a/spec/services/groups/update_statistics_service_spec.rb +++ b/spec/services/groups/update_statistics_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe Groups::UpdateStatisticsService do +RSpec.describe Groups::UpdateStatisticsService, feature_category: :subgroups do let_it_be(:group, reload: true) { create(:group) } let(:statistics) { %w(wiki_size) } diff --git a/spec/services/ide/base_config_service_spec.rb b/spec/services/ide/base_config_service_spec.rb index ee57f2c18ec..ac57a13d7fc 100644 --- a/spec/services/ide/base_config_service_spec.rb +++ b/spec/services/ide/base_config_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe Ide::BaseConfigService do +RSpec.describe Ide::BaseConfigService, feature_category: :web_ide do let_it_be(:project) { create(:project, :repository) } let_it_be(:user) { create(:user) } diff --git a/spec/services/ide/schemas_config_service_spec.rb b/spec/services/ide/schemas_config_service_spec.rb index f277b8e9954..b6f229edc78 100644 --- a/spec/services/ide/schemas_config_service_spec.rb +++ b/spec/services/ide/schemas_config_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe Ide::SchemasConfigService do +RSpec.describe Ide::SchemasConfigService, feature_category: :web_ide do let_it_be(:project) { create(:project, :repository) } let_it_be(:user) { create(:user) } diff --git a/spec/services/ide/terminal_config_service_spec.rb b/spec/services/ide/terminal_config_service_spec.rb index 73614f28b06..76c8d9f2e6f 100644 --- a/spec/services/ide/terminal_config_service_spec.rb +++ b/spec/services/ide/terminal_config_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe Ide::TerminalConfigService do +RSpec.describe Ide::TerminalConfigService, feature_category: :web_ide do let_it_be(:project) { create(:project, :repository) } let_it_be(:user) { create(:user) } diff --git a/spec/services/import/bitbucket_server_service_spec.rb b/spec/services/import/bitbucket_server_service_spec.rb index 555812ca9cf..aea6c45b3a8 100644 --- a/spec/services/import/bitbucket_server_service_spec.rb +++ b/spec/services/import/bitbucket_server_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe Import::BitbucketServerService do +RSpec.describe Import::BitbucketServerService, feature_category: :importers do let_it_be(:user) { create(:user) } let(:base_uri) { "https://test:7990" } diff --git a/spec/services/import/fogbugz_service_spec.rb b/spec/services/import/fogbugz_service_spec.rb index 027d0240a7a..6953213add7 100644 --- a/spec/services/import/fogbugz_service_spec.rb +++ b/spec/services/import/fogbugz_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe Import::FogbugzService do +RSpec.describe Import::FogbugzService, feature_category: :importers do let_it_be(:user) { create(:user) } let(:base_uri) { "https://test:7990" } diff --git a/spec/services/import/github/cancel_project_import_service_spec.rb b/spec/services/import/github/cancel_project_import_service_spec.rb index 114265315b0..17d5e0fa443 100644 --- a/spec/services/import/github/cancel_project_import_service_spec.rb +++ b/spec/services/import/github/cancel_project_import_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe Import::Github::CancelProjectImportService do +RSpec.describe Import::Github::CancelProjectImportService, feature_category: :importers do subject(:import_cancel) { described_class.new(project, project.owner) } let_it_be(:user) { create(:user) } diff --git a/spec/services/import/github/notes/create_service_spec.rb b/spec/services/import/github/notes/create_service_spec.rb index 57699def848..37cb903b66e 100644 --- a/spec/services/import/github/notes/create_service_spec.rb +++ b/spec/services/import/github/notes/create_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe Import::Github::Notes::CreateService do +RSpec.describe Import::Github::Notes::CreateService, feature_category: :importers do it 'does not support quick actions' do project = create(:project, :repository) user = create(:user) diff --git a/spec/services/import/github_service_spec.rb b/spec/services/import/github_service_spec.rb index 293e247c140..5d762568a62 100644 --- a/spec/services/import/github_service_spec.rb +++ b/spec/services/import/github_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe Import::GithubService do +RSpec.describe Import::GithubService, feature_category: :importers do let_it_be(:user) { create(:user) } let_it_be(:token) { 'complex-token' } let_it_be(:access_params) { { github_access_token: 'github-complex-token' } } diff --git a/spec/services/import/gitlab_projects/create_project_service_spec.rb b/spec/services/import/gitlab_projects/create_project_service_spec.rb index 39ffd7825f2..35378bcee92 100644 --- a/spec/services/import/gitlab_projects/create_project_service_spec.rb +++ b/spec/services/import/gitlab_projects/create_project_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe ::Import::GitlabProjects::CreateProjectService, :aggregate_failures do +RSpec.describe ::Import::GitlabProjects::CreateProjectService, :aggregate_failures, feature_category: :importers do let(:fake_file_acquisition_strategy) do Class.new do attr_reader :errors diff --git a/spec/services/import/gitlab_projects/file_acquisition_strategies/file_upload_spec.rb b/spec/services/import/gitlab_projects/file_acquisition_strategies/file_upload_spec.rb index 3c788138157..3a94ed02dd5 100644 --- a/spec/services/import/gitlab_projects/file_acquisition_strategies/file_upload_spec.rb +++ b/spec/services/import/gitlab_projects/file_acquisition_strategies/file_upload_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe ::Import::GitlabProjects::FileAcquisitionStrategies::FileUpload, :aggregate_failures do +RSpec.describe ::Import::GitlabProjects::FileAcquisitionStrategies::FileUpload, :aggregate_failures, feature_category: :importers do let(:file) { UploadedFile.new(File.join('spec', 'features', 'projects', 'import_export', 'test_project_export.tar.gz')) } describe 'validation' do diff --git a/spec/services/import/gitlab_projects/file_acquisition_strategies/remote_file_s3_spec.rb b/spec/services/import/gitlab_projects/file_acquisition_strategies/remote_file_s3_spec.rb index d9042e95149..411e2ec5286 100644 --- a/spec/services/import/gitlab_projects/file_acquisition_strategies/remote_file_s3_spec.rb +++ b/spec/services/import/gitlab_projects/file_acquisition_strategies/remote_file_s3_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe ::Import::GitlabProjects::FileAcquisitionStrategies::RemoteFileS3, :aggregate_failures do +RSpec.describe ::Import::GitlabProjects::FileAcquisitionStrategies::RemoteFileS3, :aggregate_failures, feature_category: :importers do let(:region_name) { 'region_name' } let(:bucket_name) { 'bucket_name' } let(:file_key) { 'file_key' } diff --git a/spec/services/import/prepare_service_spec.rb b/spec/services/import/prepare_service_spec.rb index 0097198f7a9..fcb90575d96 100644 --- a/spec/services/import/prepare_service_spec.rb +++ b/spec/services/import/prepare_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe Import::PrepareService do +RSpec.describe Import::PrepareService, feature_category: :importers do let_it_be(:project) { create(:project) } let_it_be(:user) { create(:user) } diff --git a/spec/services/incident_management/incidents/create_service_spec.rb b/spec/services/incident_management/incidents/create_service_spec.rb index 7db762b9c5b..e6ded379434 100644 --- a/spec/services/incident_management/incidents/create_service_spec.rb +++ b/spec/services/incident_management/incidents/create_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe IncidentManagement::Incidents::CreateService do +RSpec.describe IncidentManagement::Incidents::CreateService, feature_category: :incident_management do let_it_be(:project) { create(:project) } let_it_be(:user) { User.alert_bot } diff --git a/spec/services/incident_management/issuable_escalation_statuses/after_update_service_spec.rb b/spec/services/incident_management/issuable_escalation_statuses/after_update_service_spec.rb index 4b0c8d9113c..9b1994af1bb 100644 --- a/spec/services/incident_management/issuable_escalation_statuses/after_update_service_spec.rb +++ b/spec/services/incident_management/issuable_escalation_statuses/after_update_service_spec.rb @@ -2,7 +2,8 @@ require 'spec_helper' -RSpec.describe IncidentManagement::IssuableEscalationStatuses::AfterUpdateService do +RSpec.describe IncidentManagement::IssuableEscalationStatuses::AfterUpdateService, + feature_category: :incident_management do let_it_be(:current_user) { create(:user) } let_it_be(:escalation_status, reload: true) { create(:incident_management_issuable_escalation_status, :triggered) } let_it_be(:issue, reload: true) { escalation_status.issue } diff --git a/spec/services/incident_management/issuable_escalation_statuses/build_service_spec.rb b/spec/services/incident_management/issuable_escalation_statuses/build_service_spec.rb index b5c5238d483..56a159f452c 100644 --- a/spec/services/incident_management/issuable_escalation_statuses/build_service_spec.rb +++ b/spec/services/incident_management/issuable_escalation_statuses/build_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe IncidentManagement::IssuableEscalationStatuses::BuildService do +RSpec.describe IncidentManagement::IssuableEscalationStatuses::BuildService, feature_category: :incident_management do let_it_be(:project) { create(:project) } let_it_be(:incident, reload: true) { create(:incident, project: project) } diff --git a/spec/services/incident_management/issuable_escalation_statuses/create_service_spec.rb b/spec/services/incident_management/issuable_escalation_statuses/create_service_spec.rb index b6ae03a19fe..e6c63d63123 100644 --- a/spec/services/incident_management/issuable_escalation_statuses/create_service_spec.rb +++ b/spec/services/incident_management/issuable_escalation_statuses/create_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe IncidentManagement::IssuableEscalationStatuses::CreateService do +RSpec.describe IncidentManagement::IssuableEscalationStatuses::CreateService, feature_category: :incident_management do let_it_be(:project) { create(:project) } let(:incident) { create(:incident, project: project) } diff --git a/spec/services/incident_management/issuable_escalation_statuses/prepare_update_service_spec.rb b/spec/services/incident_management/issuable_escalation_statuses/prepare_update_service_spec.rb index e8208c410d5..3f3174d0112 100644 --- a/spec/services/incident_management/issuable_escalation_statuses/prepare_update_service_spec.rb +++ b/spec/services/incident_management/issuable_escalation_statuses/prepare_update_service_spec.rb @@ -2,7 +2,8 @@ require 'spec_helper' -RSpec.describe IncidentManagement::IssuableEscalationStatuses::PrepareUpdateService, factory_default: :keep do +RSpec.describe IncidentManagement::IssuableEscalationStatuses::PrepareUpdateService, factory_default: :keep, + feature_category: :incident_management do let_it_be(:project) { create_default(:project) } let_it_be(:escalation_status) { create(:incident_management_issuable_escalation_status, :triggered) } let_it_be(:user_with_permissions) { create(:user) } diff --git a/spec/services/incident_management/pager_duty/create_incident_issue_service_spec.rb b/spec/services/incident_management/pager_duty/create_incident_issue_service_spec.rb index 2fda789cf56..caa5ee495b7 100644 --- a/spec/services/incident_management/pager_duty/create_incident_issue_service_spec.rb +++ b/spec/services/incident_management/pager_duty/create_incident_issue_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe IncidentManagement::PagerDuty::CreateIncidentIssueService do +RSpec.describe IncidentManagement::PagerDuty::CreateIncidentIssueService, feature_category: :incident_management do let_it_be(:project, reload: true) { create(:project) } let_it_be(:user) { User.alert_bot } diff --git a/spec/services/incident_management/pager_duty/process_webhook_service_spec.rb b/spec/services/incident_management/pager_duty/process_webhook_service_spec.rb index e2aba0b61af..06f423bc63c 100644 --- a/spec/services/incident_management/pager_duty/process_webhook_service_spec.rb +++ b/spec/services/incident_management/pager_duty/process_webhook_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe IncidentManagement::PagerDuty::ProcessWebhookService do +RSpec.describe IncidentManagement::PagerDuty::ProcessWebhookService, feature_category: :incident_management do let_it_be(:project, reload: true) { create(:project) } describe '#execute' do diff --git a/spec/services/incident_management/timeline_event_tags/create_service_spec.rb b/spec/services/incident_management/timeline_event_tags/create_service_spec.rb index c1b993ce3d9..b21a116d5f9 100644 --- a/spec/services/incident_management/timeline_event_tags/create_service_spec.rb +++ b/spec/services/incident_management/timeline_event_tags/create_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe IncidentManagement::TimelineEventTags::CreateService do +RSpec.describe IncidentManagement::TimelineEventTags::CreateService, feature_category: :incident_management do let_it_be(:user_with_permissions) { create(:user) } let_it_be(:user_without_permissions) { create(:user) } let_it_be_with_reload(:project) { create(:project) } diff --git a/spec/services/incident_management/timeline_events/create_service_spec.rb b/spec/services/incident_management/timeline_events/create_service_spec.rb index b57a93d51b2..fff6241f083 100644 --- a/spec/services/incident_management/timeline_events/create_service_spec.rb +++ b/spec/services/incident_management/timeline_events/create_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe IncidentManagement::TimelineEvents::CreateService do +RSpec.describe IncidentManagement::TimelineEvents::CreateService, feature_category: :incident_management do let_it_be(:user_with_permissions) { create(:user) } let_it_be(:user_without_permissions) { create(:user) } let_it_be(:project) { create(:project) } diff --git a/spec/services/incident_management/timeline_events/destroy_service_spec.rb b/spec/services/incident_management/timeline_events/destroy_service_spec.rb index 026e1936761..78f6659beec 100644 --- a/spec/services/incident_management/timeline_events/destroy_service_spec.rb +++ b/spec/services/incident_management/timeline_events/destroy_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe IncidentManagement::TimelineEvents::DestroyService do +RSpec.describe IncidentManagement::TimelineEvents::DestroyService, feature_category: :incident_management do let_it_be(:user_with_permissions) { create(:user) } let_it_be(:user_without_permissions) { create(:user) } let_it_be(:project) { create(:project) } diff --git a/spec/services/integrations/propagate_service_spec.rb b/spec/services/integrations/propagate_service_spec.rb index c971c4a0ad0..0267b1b0ed0 100644 --- a/spec/services/integrations/propagate_service_spec.rb +++ b/spec/services/integrations/propagate_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe Integrations::PropagateService do +RSpec.describe Integrations::PropagateService, feature_category: :integrations do describe '.propagate' do include JiraIntegrationHelpers diff --git a/spec/services/integrations/test/project_service_spec.rb b/spec/services/integrations/test/project_service_spec.rb index 74833686283..4f8f932fb45 100644 --- a/spec/services/integrations/test/project_service_spec.rb +++ b/spec/services/integrations/test/project_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe Integrations::Test::ProjectService do +RSpec.describe Integrations::Test::ProjectService, feature_category: :integrations do include AfterNextHelpers describe '#execute' do diff --git a/spec/services/issuable/bulk_update_service_spec.rb b/spec/services/issuable/bulk_update_service_spec.rb index 7ba349ceeae..a76d575a1e0 100644 --- a/spec/services/issuable/bulk_update_service_spec.rb +++ b/spec/services/issuable/bulk_update_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe Issuable::BulkUpdateService do +RSpec.describe Issuable::BulkUpdateService, feature_category: :team_planning do let_it_be(:user) { create(:user) } let_it_be(:project) { create(:project, :repository, namespace: user.namespace) } diff --git a/spec/services/issuable/common_system_notes_service_spec.rb b/spec/services/issuable/common_system_notes_service_spec.rb index 0d2b8a4ac3c..9306aeaac44 100644 --- a/spec/services/issuable/common_system_notes_service_spec.rb +++ b/spec/services/issuable/common_system_notes_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe Issuable::CommonSystemNotesService do +RSpec.describe Issuable::CommonSystemNotesService, feature_category: :team_planning do let_it_be(:project) { create(:project) } let_it_be(:user) { create(:user) } diff --git a/spec/services/issuable/destroy_label_links_service_spec.rb b/spec/services/issuable/destroy_label_links_service_spec.rb index bbc69e266c9..f0a92c201d2 100644 --- a/spec/services/issuable/destroy_label_links_service_spec.rb +++ b/spec/services/issuable/destroy_label_links_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe Issuable::DestroyLabelLinksService do +RSpec.describe Issuable::DestroyLabelLinksService, feature_category: :team_planning do describe '#execute' do context 'when target is an Issue' do let_it_be(:target) { create(:issue) } diff --git a/spec/services/issuable/destroy_service_spec.rb b/spec/services/issuable/destroy_service_spec.rb index 29f548e1c47..1acaf01dce0 100644 --- a/spec/services/issuable/destroy_service_spec.rb +++ b/spec/services/issuable/destroy_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe Issuable::DestroyService do +RSpec.describe Issuable::DestroyService, feature_category: :team_planning do let(:user) { create(:user) } let(:group) { create(:group, :public) } let(:project) { create(:project, :public, group: group) } diff --git a/spec/services/issuable/discussions_list_service_spec.rb b/spec/services/issuable/discussions_list_service_spec.rb index a6f57088ad1..03b6a1b4556 100644 --- a/spec/services/issuable/discussions_list_service_spec.rb +++ b/spec/services/issuable/discussions_list_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe Issuable::DiscussionsListService do +RSpec.describe Issuable::DiscussionsListService, feature_category: :team_planning do let_it_be(:current_user) { create(:user) } let_it_be(:group) { create(:group, :private) } let_it_be(:project) { create(:project, :repository, :private, group: group) } diff --git a/spec/services/issuable/process_assignees_spec.rb b/spec/services/issuable/process_assignees_spec.rb index 9e909b68172..2c8d4c5e11d 100644 --- a/spec/services/issuable/process_assignees_spec.rb +++ b/spec/services/issuable/process_assignees_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe Issuable::ProcessAssignees do +RSpec.describe Issuable::ProcessAssignees, feature_category: :team_planning do describe '#execute' do it 'returns assignee_ids when add_assignee_ids and remove_assignee_ids are not specified' do process = Issuable::ProcessAssignees.new(assignee_ids: %w(5 7 9), diff --git a/spec/services/issue_links/create_service_spec.rb b/spec/services/issue_links/create_service_spec.rb index 3ff6769d316..71603da1c90 100644 --- a/spec/services/issue_links/create_service_spec.rb +++ b/spec/services/issue_links/create_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe IssueLinks::CreateService do +RSpec.describe IssueLinks::CreateService, feature_category: :team_planning do describe '#execute' do let_it_be(:user) { create :user } let_it_be(:namespace) { create :namespace } diff --git a/spec/services/issue_links/destroy_service_spec.rb b/spec/services/issue_links/destroy_service_spec.rb index e31b5e95eb6..5c4814f5ad1 100644 --- a/spec/services/issue_links/destroy_service_spec.rb +++ b/spec/services/issue_links/destroy_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe IssueLinks::DestroyService do +RSpec.describe IssueLinks::DestroyService, feature_category: :team_planning do describe '#execute' do let_it_be(:project) { create(:project_empty_repo, :private) } let_it_be(:user) { create(:user) } diff --git a/spec/services/issue_links/list_service_spec.rb b/spec/services/issue_links/list_service_spec.rb index 7a3ba845c7c..bfb6127ed56 100644 --- a/spec/services/issue_links/list_service_spec.rb +++ b/spec/services/issue_links/list_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe IssueLinks::ListService do +RSpec.describe IssueLinks::ListService, feature_category: :team_planning do let(:user) { create :user } let(:project) { create(:project_empty_repo, :private) } let(:issue) { create :issue, project: project } diff --git a/spec/services/issues/after_create_service_spec.rb b/spec/services/issues/after_create_service_spec.rb index 39a6799dbad..594caed23d7 100644 --- a/spec/services/issues/after_create_service_spec.rb +++ b/spec/services/issues/after_create_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe Issues::AfterCreateService do +RSpec.describe Issues::AfterCreateService, feature_category: :team_planning do include AfterNextHelpers let_it_be(:project) { create(:project) } diff --git a/spec/services/issues/build_service_spec.rb b/spec/services/issues/build_service_spec.rb index 2160c45d079..0f89a746520 100644 --- a/spec/services/issues/build_service_spec.rb +++ b/spec/services/issues/build_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe Issues::BuildService do +RSpec.describe Issues::BuildService, feature_category: :team_planning do using RSpec::Parameterized::TableSyntax let_it_be(:project) { create(:project, :repository) } diff --git a/spec/services/issues/clone_service_spec.rb b/spec/services/issues/clone_service_spec.rb index eafaea93015..2fb14d8ce8e 100644 --- a/spec/services/issues/clone_service_spec.rb +++ b/spec/services/issues/clone_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe Issues::CloneService do +RSpec.describe Issues::CloneService, feature_category: :team_planning do include DesignManagementTestHelpers let_it_be(:user) { create(:user) } diff --git a/spec/services/issues/close_service_spec.rb b/spec/services/issues/close_service_spec.rb index 44597929817..0d9b3306540 100644 --- a/spec/services/issues/close_service_spec.rb +++ b/spec/services/issues/close_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe Issues::CloseService do +RSpec.describe Issues::CloseService, feature_category: :team_planning do let(:project) { create(:project, :repository) } let(:user) { create(:user, email: "user@example.com") } let(:user2) { create(:user, email: "user2@example.com") } diff --git a/spec/services/issues/create_service_spec.rb b/spec/services/issues/create_service_spec.rb index ada5b300d7a..d5d88baca1f 100644 --- a/spec/services/issues/create_service_spec.rb +++ b/spec/services/issues/create_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe Issues::CreateService do +RSpec.describe Issues::CreateService, feature_category: :team_planning do include AfterNextHelpers let_it_be(:group) { create(:group, :crm_enabled) } diff --git a/spec/services/issues/duplicate_service_spec.rb b/spec/services/issues/duplicate_service_spec.rb index f49bce70cd0..f9d8bf04ae9 100644 --- a/spec/services/issues/duplicate_service_spec.rb +++ b/spec/services/issues/duplicate_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe Issues::DuplicateService do +RSpec.describe Issues::DuplicateService, feature_category: :team_planning do let(:user) { create(:user) } let(:canonical_project) { create(:project) } let(:duplicate_project) { create(:project) } diff --git a/spec/services/issues/prepare_import_csv_service_spec.rb b/spec/services/issues/prepare_import_csv_service_spec.rb index ded23ee43b9..d318d4fd25e 100644 --- a/spec/services/issues/prepare_import_csv_service_spec.rb +++ b/spec/services/issues/prepare_import_csv_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe Issues::PrepareImportCsvService do +RSpec.describe Issues::PrepareImportCsvService, feature_category: :team_planning do let_it_be(:project) { create(:project) } let_it_be(:user) { create(:user) } diff --git a/spec/services/issues/referenced_merge_requests_service_spec.rb b/spec/services/issues/referenced_merge_requests_service_spec.rb index aee3583b834..4781daf7688 100644 --- a/spec/services/issues/referenced_merge_requests_service_spec.rb +++ b/spec/services/issues/referenced_merge_requests_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe Issues::ReferencedMergeRequestsService do +RSpec.describe Issues::ReferencedMergeRequestsService, feature_category: :team_planning do def create_referencing_mr(attributes = {}) create(:merge_request, attributes).tap do |merge_request| create(:note, :system, project: project, noteable: issue, author: user, note: merge_request.to_reference(full: true)) diff --git a/spec/services/issues/related_branches_service_spec.rb b/spec/services/issues/related_branches_service_spec.rb index 05c61d0abfc..940d988668e 100644 --- a/spec/services/issues/related_branches_service_spec.rb +++ b/spec/services/issues/related_branches_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe Issues::RelatedBranchesService do +RSpec.describe Issues::RelatedBranchesService, feature_category: :team_planning do let_it_be(:project) { create(:project, :repository, :public, public_builds: false) } let_it_be(:developer) { create(:user) } let_it_be(:issue) { create(:issue, project: project) } diff --git a/spec/services/issues/relative_position_rebalancing_service_spec.rb b/spec/services/issues/relative_position_rebalancing_service_spec.rb index 27c0394ac8b..68f1af49b5f 100644 --- a/spec/services/issues/relative_position_rebalancing_service_spec.rb +++ b/spec/services/issues/relative_position_rebalancing_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe Issues::RelativePositionRebalancingService, :clean_gitlab_redis_shared_state do +RSpec.describe Issues::RelativePositionRebalancingService, :clean_gitlab_redis_shared_state, feature_category: :team_planning do let_it_be(:project, reload: true) { create(:project, :repository_disabled, skip_disk_validation: true) } let_it_be(:user) { project.creator } let_it_be(:start) { RelativePositioning::START_POSITION } diff --git a/spec/services/issues/reopen_service_spec.rb b/spec/services/issues/reopen_service_spec.rb index a5cb991e140..0f89844a2c1 100644 --- a/spec/services/issues/reopen_service_spec.rb +++ b/spec/services/issues/reopen_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe Issues::ReopenService do +RSpec.describe Issues::ReopenService, feature_category: :team_planning do let(:project) { create(:project) } let(:issue) { create(:issue, :closed, project: project) } diff --git a/spec/services/issues/reorder_service_spec.rb b/spec/services/issues/reorder_service_spec.rb index 430a9e9f526..b98d23e0f7f 100644 --- a/spec/services/issues/reorder_service_spec.rb +++ b/spec/services/issues/reorder_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe Issues::ReorderService do +RSpec.describe Issues::ReorderService, feature_category: :team_planning do let_it_be(:user) { create_default(:user) } let_it_be(:group) { create(:group) } let_it_be(:project, reload: true) { create(:project, namespace: group) } diff --git a/spec/services/issues/resolve_discussions_spec.rb b/spec/services/issues/resolve_discussions_spec.rb index 2c8de5ec570..c2111bffdda 100644 --- a/spec/services/issues/resolve_discussions_spec.rb +++ b/spec/services/issues/resolve_discussions_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe Issues::ResolveDiscussions do +RSpec.describe Issues::ResolveDiscussions, feature_category: :team_planning do let(:project) { create(:project, :repository) } let(:user) { create(:user) } diff --git a/spec/services/issues/set_crm_contacts_service_spec.rb b/spec/services/issues/set_crm_contacts_service_spec.rb index 5613cc49cc5..aa5dec20a13 100644 --- a/spec/services/issues/set_crm_contacts_service_spec.rb +++ b/spec/services/issues/set_crm_contacts_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe Issues::SetCrmContactsService do +RSpec.describe Issues::SetCrmContactsService, feature_category: :team_planning do let_it_be(:user) { create(:user) } let_it_be(:group) { create(:group, :crm_enabled) } let_it_be(:project) { create(:project, group: create(:group, :crm_enabled, parent: group)) } diff --git a/spec/services/issues/update_service_spec.rb b/spec/services/issues/update_service_spec.rb index cd41b95c95a..9c81015e05e 100644 --- a/spec/services/issues/update_service_spec.rb +++ b/spec/services/issues/update_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe Issues::UpdateService, :mailer do +RSpec.describe Issues::UpdateService, :mailer, feature_category: :team_planning do let_it_be(:user) { create(:user) } let_it_be(:user2) { create(:user) } let_it_be(:user3) { create(:user) } diff --git a/spec/services/issues/zoom_link_service_spec.rb b/spec/services/issues/zoom_link_service_spec.rb index b40cb34c75f..f2a81cbe33f 100644 --- a/spec/services/issues/zoom_link_service_spec.rb +++ b/spec/services/issues/zoom_link_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe Issues::ZoomLinkService do +RSpec.describe Issues::ZoomLinkService, feature_category: :team_planning do let_it_be(:user) { create(:user) } let_it_be(:issue) { create(:issue) } diff --git a/spec/services/jira/requests/projects/list_service_spec.rb b/spec/services/jira/requests/projects/list_service_spec.rb index 78ee9cb9698..37e9f66d273 100644 --- a/spec/services/jira/requests/projects/list_service_spec.rb +++ b/spec/services/jira/requests/projects/list_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe Jira::Requests::Projects::ListService do +RSpec.describe Jira::Requests::Projects::ListService, feature_category: :projects do include AfterNextHelpers let(:jira_integration) { create(:jira_integration) } diff --git a/spec/services/jira_connect/sync_service_spec.rb b/spec/services/jira_connect/sync_service_spec.rb index 32580a7735f..fc1b4e997a5 100644 --- a/spec/services/jira_connect/sync_service_spec.rb +++ b/spec/services/jira_connect/sync_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe JiraConnect::SyncService do +RSpec.describe JiraConnect::SyncService, feature_category: :integrations do include AfterNextHelpers describe '#execute' do diff --git a/spec/services/jira_connect_installations/destroy_service_spec.rb b/spec/services/jira_connect_installations/destroy_service_spec.rb index bb5bab53ccb..b8b59d6cc57 100644 --- a/spec/services/jira_connect_installations/destroy_service_spec.rb +++ b/spec/services/jira_connect_installations/destroy_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe JiraConnectInstallations::DestroyService do +RSpec.describe JiraConnectInstallations::DestroyService, feature_category: :integrations do describe '.execute' do it 'creates an instance and calls execute' do expect_next_instance_of(described_class, 'param1', 'param2', 'param3') do |destroy_service| diff --git a/spec/services/jira_connect_subscriptions/create_service_spec.rb b/spec/services/jira_connect_subscriptions/create_service_spec.rb index 85208a30c30..f9d3954b84c 100644 --- a/spec/services/jira_connect_subscriptions/create_service_spec.rb +++ b/spec/services/jira_connect_subscriptions/create_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe JiraConnectSubscriptions::CreateService do +RSpec.describe JiraConnectSubscriptions::CreateService, feature_category: :integrations do let_it_be(:installation) { create(:jira_connect_installation) } let_it_be(:current_user) { create(:user) } let_it_be(:group) { create(:group) } diff --git a/spec/services/jira_import/cloud_users_mapper_service_spec.rb b/spec/services/jira_import/cloud_users_mapper_service_spec.rb index 6b06a982a80..e3f3d550467 100644 --- a/spec/services/jira_import/cloud_users_mapper_service_spec.rb +++ b/spec/services/jira_import/cloud_users_mapper_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe JiraImport::CloudUsersMapperService do +RSpec.describe JiraImport::CloudUsersMapperService, feature_category: :integrations do let(:start_at) { 7 } let(:url) { "/rest/api/2/users?maxResults=50&startAt=#{start_at}" } diff --git a/spec/services/jira_import/server_users_mapper_service_spec.rb b/spec/services/jira_import/server_users_mapper_service_spec.rb index 71cb8aea0be..e2304953dd2 100644 --- a/spec/services/jira_import/server_users_mapper_service_spec.rb +++ b/spec/services/jira_import/server_users_mapper_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe JiraImport::ServerUsersMapperService do +RSpec.describe JiraImport::ServerUsersMapperService, feature_category: :integrations do let(:start_at) { 7 } let(:url) { "/rest/api/2/user/search?username=''&maxResults=50&startAt=#{start_at}" } diff --git a/spec/services/jira_import/start_import_service_spec.rb b/spec/services/jira_import/start_import_service_spec.rb index c0db3012a30..9cb163e3d1a 100644 --- a/spec/services/jira_import/start_import_service_spec.rb +++ b/spec/services/jira_import/start_import_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe JiraImport::StartImportService do +RSpec.describe JiraImport::StartImportService, feature_category: :integrations do include JiraIntegrationHelpers let_it_be(:user) { create(:user) } diff --git a/spec/services/jira_import/users_importer_spec.rb b/spec/services/jira_import/users_importer_spec.rb index ace9e0d5779..39f8475754a 100644 --- a/spec/services/jira_import/users_importer_spec.rb +++ b/spec/services/jira_import/users_importer_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe JiraImport::UsersImporter do +RSpec.describe JiraImport::UsersImporter, feature_category: :integrations do include JiraIntegrationHelpers let_it_be(:user) { create(:user) } diff --git a/spec/services/keys/create_service_spec.rb b/spec/services/keys/create_service_spec.rb index 1dbe383ad8e..0a9fe2f5856 100644 --- a/spec/services/keys/create_service_spec.rb +++ b/spec/services/keys/create_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe Keys::CreateService do +RSpec.describe Keys::CreateService, feature_category: :source_code_management do let(:user) { create(:user) } let(:params) { attributes_for(:key) } diff --git a/spec/services/keys/destroy_service_spec.rb b/spec/services/keys/destroy_service_spec.rb index dd40f9d73fd..9f064cb7236 100644 --- a/spec/services/keys/destroy_service_spec.rb +++ b/spec/services/keys/destroy_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe Keys::DestroyService do +RSpec.describe Keys::DestroyService, feature_category: :source_code_management do let(:user) { create(:user) } subject { described_class.new(user) } diff --git a/spec/services/keys/expiry_notification_service_spec.rb b/spec/services/keys/expiry_notification_service_spec.rb index 7cb6cbce311..b8db4f28df7 100644 --- a/spec/services/keys/expiry_notification_service_spec.rb +++ b/spec/services/keys/expiry_notification_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe Keys::ExpiryNotificationService do +RSpec.describe Keys::ExpiryNotificationService, feature_category: :source_code_management do let_it_be_with_reload(:user) { create(:user) } let(:params) { { keys: user.keys, expiring_soon: expiring_soon } } diff --git a/spec/services/keys/last_used_service_spec.rb b/spec/services/keys/last_used_service_spec.rb index a2cd5ffdd38..3113fe27acf 100644 --- a/spec/services/keys/last_used_service_spec.rb +++ b/spec/services/keys/last_used_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe Keys::LastUsedService do +RSpec.describe Keys::LastUsedService, feature_category: :source_code_management do describe '#execute', :clean_gitlab_redis_shared_state do it 'updates the key when it has not been used recently' do key = create(:key, last_used_at: 1.year.ago) diff --git a/spec/services/labels/available_labels_service_spec.rb b/spec/services/labels/available_labels_service_spec.rb index 355dbd0c712..51314c2c226 100644 --- a/spec/services/labels/available_labels_service_spec.rb +++ b/spec/services/labels/available_labels_service_spec.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true require 'spec_helper' -RSpec.describe Labels::AvailableLabelsService do +RSpec.describe Labels::AvailableLabelsService, feature_category: :team_planning do let(:user) { create(:user) } let(:project) { create(:project, :public, group: group) } let(:group) { create(:group) } diff --git a/spec/services/labels/create_service_spec.rb b/spec/services/labels/create_service_spec.rb index 02dec8ae690..9be611490cf 100644 --- a/spec/services/labels/create_service_spec.rb +++ b/spec/services/labels/create_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe Labels::CreateService do +RSpec.describe Labels::CreateService, feature_category: :team_planning do describe '#execute' do let(:project) { create(:project) } let(:group) { create(:group) } diff --git a/spec/services/labels/find_or_create_service_spec.rb b/spec/services/labels/find_or_create_service_spec.rb index 3ea2727dc60..0bc1326942d 100644 --- a/spec/services/labels/find_or_create_service_spec.rb +++ b/spec/services/labels/find_or_create_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe Labels::FindOrCreateService do +RSpec.describe Labels::FindOrCreateService, feature_category: :team_planning do describe '#execute' do let(:group) { create(:group) } let(:project) { create(:project, namespace: group) } diff --git a/spec/services/labels/promote_service_spec.rb b/spec/services/labels/promote_service_spec.rb index 3af6cf4c8f4..79cc88c65c8 100644 --- a/spec/services/labels/promote_service_spec.rb +++ b/spec/services/labels/promote_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe Labels::PromoteService do +RSpec.describe Labels::PromoteService, feature_category: :team_planning do describe '#execute' do let_it_be(:user) { create(:user) } diff --git a/spec/services/labels/transfer_service_spec.rb b/spec/services/labels/transfer_service_spec.rb index e67ab6025a5..bf895692e64 100644 --- a/spec/services/labels/transfer_service_spec.rb +++ b/spec/services/labels/transfer_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe Labels::TransferService do +RSpec.describe Labels::TransferService, feature_category: :team_planning do shared_examples 'transfer labels' do describe '#execute' do let_it_be(:user) { create(:user) } diff --git a/spec/services/labels/update_service_spec.rb b/spec/services/labels/update_service_spec.rb index abc456f75f9..b9ac5282d10 100644 --- a/spec/services/labels/update_service_spec.rb +++ b/spec/services/labels/update_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe Labels::UpdateService do +RSpec.describe Labels::UpdateService, feature_category: :team_planning do describe '#execute' do let(:project) { create(:project) } diff --git a/spec/services/lfs/lock_file_service_spec.rb b/spec/services/lfs/lock_file_service_spec.rb index b3a121866c8..47bf0c5f4ce 100644 --- a/spec/services/lfs/lock_file_service_spec.rb +++ b/spec/services/lfs/lock_file_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe Lfs::LockFileService do +RSpec.describe Lfs::LockFileService, feature_category: :source_code_management do let(:project) { create(:project) } let(:current_user) { create(:user) } diff --git a/spec/services/lfs/locks_finder_service_spec.rb b/spec/services/lfs/locks_finder_service_spec.rb index 1167212eb69..38f8dadd38d 100644 --- a/spec/services/lfs/locks_finder_service_spec.rb +++ b/spec/services/lfs/locks_finder_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe Lfs::LocksFinderService do +RSpec.describe Lfs::LocksFinderService, feature_category: :source_code_management do let(:project) { create(:project) } let(:user) { create(:user) } let(:params) { {} } diff --git a/spec/services/lfs/push_service_spec.rb b/spec/services/lfs/push_service_spec.rb index f52bba94eea..1ec143a7fc9 100644 --- a/spec/services/lfs/push_service_spec.rb +++ b/spec/services/lfs/push_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe Lfs::PushService do +RSpec.describe Lfs::PushService, feature_category: :source_code_management do let(:logger) { service.send(:logger) } let(:lfs_client) { service.send(:lfs_client) } diff --git a/spec/services/lfs/unlock_file_service_spec.rb b/spec/services/lfs/unlock_file_service_spec.rb index 7ab269f897a..45fd1adcfb4 100644 --- a/spec/services/lfs/unlock_file_service_spec.rb +++ b/spec/services/lfs/unlock_file_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe Lfs::UnlockFileService do +RSpec.describe Lfs::UnlockFileService, feature_category: :source_code_management do let(:project) { create(:project) } let(:current_user) { create(:user) } let(:lock_author) { create(:user) } diff --git a/spec/services/loose_foreign_keys/batch_cleaner_service_spec.rb b/spec/services/loose_foreign_keys/batch_cleaner_service_spec.rb index 735f090d926..6eee83d5ee9 100644 --- a/spec/services/loose_foreign_keys/batch_cleaner_service_spec.rb +++ b/spec/services/loose_foreign_keys/batch_cleaner_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe LooseForeignKeys::BatchCleanerService do +RSpec.describe LooseForeignKeys::BatchCleanerService, feature_category: :database do include MigrationsHelpers def create_table_structure diff --git a/spec/services/loose_foreign_keys/cleaner_service_spec.rb b/spec/services/loose_foreign_keys/cleaner_service_spec.rb index 2cfd8385953..04f6270c5f2 100644 --- a/spec/services/loose_foreign_keys/cleaner_service_spec.rb +++ b/spec/services/loose_foreign_keys/cleaner_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe LooseForeignKeys::CleanerService do +RSpec.describe LooseForeignKeys::CleanerService, feature_category: :database do let(:schema) { ApplicationRecord.connection.current_schema } let(:deleted_records) do [ diff --git a/spec/services/loose_foreign_keys/process_deleted_records_service_spec.rb b/spec/services/loose_foreign_keys/process_deleted_records_service_spec.rb index 1824f822ba8..af010547cc9 100644 --- a/spec/services/loose_foreign_keys/process_deleted_records_service_spec.rb +++ b/spec/services/loose_foreign_keys/process_deleted_records_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe LooseForeignKeys::ProcessDeletedRecordsService do +RSpec.describe LooseForeignKeys::ProcessDeletedRecordsService, feature_category: :database do include MigrationsHelpers def create_table_structure diff --git a/spec/services/markup/rendering_service_spec.rb b/spec/services/markup/rendering_service_spec.rb index ca70e983714..952ee33da98 100644 --- a/spec/services/markup/rendering_service_spec.rb +++ b/spec/services/markup/rendering_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe Markup::RenderingService do +RSpec.describe Markup::RenderingService, feature_category: :projects do describe '#execute' do let_it_be(:project) { create(:project, :repository) } let_it_be(:user) do diff --git a/spec/services/members/approve_access_request_service_spec.rb b/spec/services/members/approve_access_request_service_spec.rb index ca5c052d032..de5074809cb 100644 --- a/spec/services/members/approve_access_request_service_spec.rb +++ b/spec/services/members/approve_access_request_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe Members::ApproveAccessRequestService do +RSpec.describe Members::ApproveAccessRequestService, feature_category: :subgroups do let(:project) { create(:project, :public) } let(:group) { create(:group, :public) } let(:current_user) { create(:user) } diff --git a/spec/services/members/create_service_spec.rb b/spec/services/members/create_service_spec.rb index 756e1cf403c..13f233162cd 100644 --- a/spec/services/members/create_service_spec.rb +++ b/spec/services/members/create_service_spec.rb @@ -2,7 +2,8 @@ require 'spec_helper' -RSpec.describe Members::CreateService, :aggregate_failures, :clean_gitlab_redis_cache, :clean_gitlab_redis_shared_state, :sidekiq_inline do +RSpec.describe Members::CreateService, :aggregate_failures, :clean_gitlab_redis_cache, :clean_gitlab_redis_shared_state, :sidekiq_inline, + feature_category: :subgroups do let_it_be(:source, reload: true) { create(:project) } let_it_be(:user) { create(:user) } let_it_be(:member) { create(:user) } diff --git a/spec/services/members/creator_service_spec.rb b/spec/services/members/creator_service_spec.rb index ad4c649086b..8191eefbe95 100644 --- a/spec/services/members/creator_service_spec.rb +++ b/spec/services/members/creator_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe Members::CreatorService do +RSpec.describe Members::CreatorService, feature_category: :subgroups do let_it_be(:source, reload: true) { create(:group, :public) } let_it_be(:member_type) { GroupMember } let_it_be(:user) { create(:user) } diff --git a/spec/services/members/groups/creator_service_spec.rb b/spec/services/members/groups/creator_service_spec.rb index fced7195046..48c971297c1 100644 --- a/spec/services/members/groups/creator_service_spec.rb +++ b/spec/services/members/groups/creator_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe Members::Groups::CreatorService do +RSpec.describe Members::Groups::CreatorService, feature_category: :subgroups do let_it_be(:source, reload: true) { create(:group, :public) } let_it_be(:user) { create(:user) } diff --git a/spec/services/members/import_project_team_service_spec.rb b/spec/services/members/import_project_team_service_spec.rb index 96e8db1ba73..af9b30aa0b3 100644 --- a/spec/services/members/import_project_team_service_spec.rb +++ b/spec/services/members/import_project_team_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe Members::ImportProjectTeamService do +RSpec.describe Members::ImportProjectTeamService, feature_category: :subgroups do describe '#execute' do let_it_be(:source_project) { create(:project) } let_it_be(:target_project) { create(:project) } diff --git a/spec/services/members/invitation_reminder_email_service_spec.rb b/spec/services/members/invitation_reminder_email_service_spec.rb index 768a8719d54..da23965eabe 100644 --- a/spec/services/members/invitation_reminder_email_service_spec.rb +++ b/spec/services/members/invitation_reminder_email_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe Members::InvitationReminderEmailService do +RSpec.describe Members::InvitationReminderEmailService, feature_category: :subgroups do describe 'sending invitation reminders' do subject { described_class.new(invitation).execute } diff --git a/spec/services/members/invite_member_builder_spec.rb b/spec/services/members/invite_member_builder_spec.rb index 52de65364c4..e7bbec4e0ef 100644 --- a/spec/services/members/invite_member_builder_spec.rb +++ b/spec/services/members/invite_member_builder_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe Members::InviteMemberBuilder do +RSpec.describe Members::InviteMemberBuilder, feature_category: :subgroups do let_it_be(:source) { create(:group) } let_it_be(:existing_member) { create(:group_member) } diff --git a/spec/services/members/invite_service_spec.rb b/spec/services/members/invite_service_spec.rb index 23d4d671afc..22294b3fda5 100644 --- a/spec/services/members/invite_service_spec.rb +++ b/spec/services/members/invite_service_spec.rb @@ -2,7 +2,8 @@ require 'spec_helper' -RSpec.describe Members::InviteService, :aggregate_failures, :clean_gitlab_redis_shared_state, :sidekiq_inline do +RSpec.describe Members::InviteService, :aggregate_failures, :clean_gitlab_redis_shared_state, :sidekiq_inline, + feature_category: :subgroups do let_it_be(:project, reload: true) { create(:project) } let_it_be(:user) { project.first_owner } let_it_be(:project_user) { create(:user) } diff --git a/spec/services/members/projects/creator_service_spec.rb b/spec/services/members/projects/creator_service_spec.rb index 5dfba7adf0f..f09682347ef 100644 --- a/spec/services/members/projects/creator_service_spec.rb +++ b/spec/services/members/projects/creator_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe Members::Projects::CreatorService do +RSpec.describe Members::Projects::CreatorService, feature_category: :projects do let_it_be(:source, reload: true) { create(:project, :public) } let_it_be(:user) { create(:user) } diff --git a/spec/services/members/request_access_service_spec.rb b/spec/services/members/request_access_service_spec.rb index 69eea2aea4b..ef8ee6492ab 100644 --- a/spec/services/members/request_access_service_spec.rb +++ b/spec/services/members/request_access_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe Members::RequestAccessService do +RSpec.describe Members::RequestAccessService, feature_category: :subgroups do let(:user) { create(:user) } shared_examples 'a service raising Gitlab::Access::AccessDeniedError' do diff --git a/spec/services/members/standard_member_builder_spec.rb b/spec/services/members/standard_member_builder_spec.rb index 16daff53d31..69b764f3f16 100644 --- a/spec/services/members/standard_member_builder_spec.rb +++ b/spec/services/members/standard_member_builder_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe Members::StandardMemberBuilder do +RSpec.describe Members::StandardMemberBuilder, feature_category: :subgroups do let_it_be(:source) { create(:group) } let_it_be(:existing_member) { create(:group_member) } diff --git a/spec/services/members/unassign_issuables_service_spec.rb b/spec/services/members/unassign_issuables_service_spec.rb index 3f7ccb7bab3..37dfbd16c56 100644 --- a/spec/services/members/unassign_issuables_service_spec.rb +++ b/spec/services/members/unassign_issuables_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe Members::UnassignIssuablesService do +RSpec.describe Members::UnassignIssuablesService, feature_category: :subgroups do let_it_be(:group) { create(:group, :private) } let_it_be(:project) { create(:project, group: group) } let_it_be(:user, reload: true) { create(:user) } diff --git a/spec/services/members/update_service_spec.rb b/spec/services/members/update_service_spec.rb index 8a7f9a84c77..b94b44c8485 100644 --- a/spec/services/members/update_service_spec.rb +++ b/spec/services/members/update_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe Members::UpdateService do +RSpec.describe Members::UpdateService, feature_category: :subgroups do let_it_be(:project) { create(:project, :public) } let_it_be(:group) { create(:group, :public) } let_it_be(:current_user) { create(:user) } |