diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2023-01-09 21:08:39 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2023-01-09 21:08:39 +0000 |
commit | d4b2ad25a56a9baf41a27a2190458330645b3102 (patch) | |
tree | fdfa7d67e75eedb35bf689ade0b5d09f4bae3f4b | |
parent | 17deb2a503bb8163514fe37618bf36f75376b9ae (diff) | |
download | gitlab-ce-d4b2ad25a56a9baf41a27a2190458330645b3102.tar.gz |
Add latest changes from gitlab-org/gitlab@master
252 files changed, 733 insertions, 519 deletions
diff --git a/app/assets/javascripts/ci/pipeline_schedules/components/pipeline_schedules.vue b/app/assets/javascripts/ci/pipeline_schedules/components/pipeline_schedules.vue index fe16cb7a92e..db55fd96ad0 100644 --- a/app/assets/javascripts/ci/pipeline_schedules/components/pipeline_schedules.vue +++ b/app/assets/javascripts/ci/pipeline_schedules/components/pipeline_schedules.vue @@ -1,9 +1,19 @@ <script> -import { GlAlert, GlBadge, GlButton, GlLoadingIcon, GlTabs, GlTab } from '@gitlab/ui'; +import { + GlAlert, + GlBadge, + GlButton, + GlLoadingIcon, + GlTabs, + GlTab, + GlSprintf, + GlLink, +} from '@gitlab/ui'; import { s__, sprintf } from '~/locale'; import { limitedCounterWithDelimiter } from '~/lib/utils/text_utility'; import { queryToObject } from '~/lib/utils/url_utility'; import deletePipelineScheduleMutation from '../graphql/mutations/delete_pipeline_schedule.mutation.graphql'; +import playPipelineScheduleMutation from '../graphql/mutations/play_pipeline_schedule.mutation.graphql'; import takeOwnershipMutation from '../graphql/mutations/take_ownership.mutation.graphql'; import getPipelineSchedulesQuery from '../graphql/queries/get_pipeline_schedules.query.graphql'; import PipelineSchedulesTable from './table/pipeline_schedules_table.vue'; @@ -16,11 +26,15 @@ export default { scheduleDeleteError: s__( 'PipelineSchedules|There was a problem deleting the pipeline schedule.', ), + schedulePlayError: s__('PipelineSchedules|There was a problem playing the pipeline schedule.'), takeOwnershipError: s__( 'PipelineSchedules|There was a problem taking ownership of the pipeline schedule.', ), newSchedule: s__('PipelineSchedules|New schedule'), deleteSuccess: s__('PipelineSchedules|Pipeline schedule successfully deleted.'), + playSuccess: s__( + 'PipelineSchedules|Successfully scheduled a pipeline to run. Go to the %{linkStart}Pipelines page%{linkEnd} for details. ', + ), }, components: { DeletePipelineScheduleModal, @@ -30,6 +44,8 @@ export default { GlLoadingIcon, GlTabs, GlTab, + GlSprintf, + GlLink, PipelineSchedulesTable, TakeOwnershipModal, }, @@ -37,6 +53,9 @@ export default { fullPath: { default: '', }, + pipelinesPath: { + default: '', + }, }, apollo: { schedules: { @@ -68,6 +87,7 @@ export default { }, scope, hasError: false, + playSuccess: false, errorMessage: '', scheduleId: null, showDeleteModal: false, @@ -185,6 +205,27 @@ export default { this.reportError(this.$options.i18n.takeOwnershipError); } }, + async playPipelineSchedule(id) { + try { + const { + data: { + pipelineSchedulePlay: { errors }, + }, + } = await this.$apollo.mutate({ + mutation: playPipelineScheduleMutation, + variables: { id }, + }); + + if (errors.length > 0) { + throw new Error(); + } else { + this.playSuccess = true; + } + } catch { + this.playSuccess = false; + this.reportError(this.$options.i18n.schedulePlayError); + } + }, fetchPipelineSchedulesByStatus(scope) { this.scope = scope; this.$apollo.queries.schedules.refetch(); @@ -195,62 +236,69 @@ export default { <template> <div> - <gl-alert v-if="hasError" class="gl-mb-2" variant="danger" @dismiss="hasError = false"> + <gl-alert v-if="hasError" class="gl-my-3" variant="danger" @dismiss="hasError = false"> {{ errorMessage }} </gl-alert> - <template v-else> - <gl-tabs - sync-active-tab-with-query-params - query-param-name="scope" - nav-class="gl-flex-grow-1 gl-align-items-center" + <gl-alert v-if="playSuccess" class="gl-my-3" variant="info" @dismiss="playSuccess = false"> + <gl-sprintf :message="$options.i18n.playSuccess"> + <template #link="{ content }"> + <gl-link :href="pipelinesPath" class="gl-text-decoration-none!">{{ content }}</gl-link> + </template> + </gl-sprintf> + </gl-alert> + + <gl-tabs + sync-active-tab-with-query-params + query-param-name="scope" + nav-class="gl-flex-grow-1 gl-align-items-center" + > + <gl-tab + v-for="tab in tabs" + :key="tab.text" + :title-link-attributes="tab.attrs" + :query-param-value="tab.scope" + @click="fetchPipelineSchedulesByStatus(tab.scope)" > - <gl-tab - v-for="tab in tabs" - :key="tab.text" - :title-link-attributes="tab.attrs" - :query-param-value="tab.scope" - @click="fetchPipelineSchedulesByStatus(tab.scope)" - > - <template #title> - <span>{{ tab.text }}</span> + <template #title> + <span>{{ tab.text }}</span> - <template v-if="tab.showBadge"> - <gl-loading-icon v-if="tab.scope === scope && isLoading" class="gl-ml-2" /> + <template v-if="tab.showBadge"> + <gl-loading-icon v-if="tab.scope === scope && isLoading" class="gl-ml-2" /> - <gl-badge v-else-if="tab.count" size="sm" class="gl-tab-counter-badge"> - {{ tab.count }} - </gl-badge> - </template> + <gl-badge v-else-if="tab.count" size="sm" class="gl-tab-counter-badge"> + {{ tab.count }} + </gl-badge> </template> + </template> - <gl-loading-icon v-if="isLoading" size="lg" /> - <pipeline-schedules-table - v-else - :schedules="schedules.list" - @showTakeOwnershipModal="setTakeOwnershipModal" - @showDeleteModal="setDeleteModal" - /> - </gl-tab> + <gl-loading-icon v-if="isLoading" size="lg" /> + <pipeline-schedules-table + v-else + :schedules="schedules.list" + @showTakeOwnershipModal="setTakeOwnershipModal" + @showDeleteModal="setDeleteModal" + @playPipelineSchedule="playPipelineSchedule" + /> + </gl-tab> - <template #tabs-end> - <gl-button variant="confirm" class="gl-ml-auto" data-testid="new-schedule-button"> - {{ $options.i18n.newSchedule }} - </gl-button> - </template> - </gl-tabs> + <template #tabs-end> + <gl-button variant="confirm" class="gl-ml-auto" data-testid="new-schedule-button"> + {{ $options.i18n.newSchedule }} + </gl-button> + </template> + </gl-tabs> - <take-ownership-modal - :visible="showTakeOwnershipModal" - @takeOwnership="takeOwnership" - @hideModal="hideModal" - /> + <take-ownership-modal + :visible="showTakeOwnershipModal" + @takeOwnership="takeOwnership" + @hideModal="hideModal" + /> - <delete-pipeline-schedule-modal - :visible="showDeleteModal" - @deleteSchedule="deleteSchedule" - @hideModal="hideModal" - /> - </template> + <delete-pipeline-schedule-modal + :visible="showDeleteModal" + @deleteSchedule="deleteSchedule" + @hideModal="hideModal" + /> </div> </template> diff --git a/app/assets/javascripts/ci/pipeline_schedules/components/table/cells/pipeline_schedule_actions.vue b/app/assets/javascripts/ci/pipeline_schedules/components/table/cells/pipeline_schedule_actions.vue index 8656e5d3536..45b4f618e17 100644 --- a/app/assets/javascripts/ci/pipeline_schedules/components/table/cells/pipeline_schedule_actions.vue +++ b/app/assets/javascripts/ci/pipeline_schedules/components/table/cells/pipeline_schedule_actions.vue @@ -44,7 +44,14 @@ export default { <template> <div class="gl-display-flex gl-justify-content-end"> <gl-button-group> - <gl-button v-if="canPlay" v-gl-tooltip :title="$options.i18n.playTooltip" icon="play" /> + <gl-button + v-if="canPlay" + v-gl-tooltip + :title="$options.i18n.playTooltip" + icon="play" + data-testid="play-pipeline-schedule-btn" + @click="$emit('playPipelineSchedule', schedule.id)" + /> <gl-button v-if="canTakeOwnership" v-gl-tooltip diff --git a/app/assets/javascripts/ci/pipeline_schedules/components/table/pipeline_schedules_table.vue b/app/assets/javascripts/ci/pipeline_schedules/components/table/pipeline_schedules_table.vue index 1b97a35a51e..e8cfc5b29f3 100644 --- a/app/assets/javascripts/ci/pipeline_schedules/components/table/pipeline_schedules_table.vue +++ b/app/assets/javascripts/ci/pipeline_schedules/components/table/pipeline_schedules_table.vue @@ -96,6 +96,7 @@ export default { :schedule="item" @showTakeOwnershipModal="$emit('showTakeOwnershipModal', $event)" @showDeleteModal="$emit('showDeleteModal', $event)" + @playPipelineSchedule="$emit('playPipelineSchedule', $event)" /> </template> </gl-table-lite> diff --git a/app/assets/javascripts/ci/pipeline_schedules/graphql/mutations/play_pipeline_schedule.mutation.graphql b/app/assets/javascripts/ci/pipeline_schedules/graphql/mutations/play_pipeline_schedule.mutation.graphql new file mode 100644 index 00000000000..4892f41b93f --- /dev/null +++ b/app/assets/javascripts/ci/pipeline_schedules/graphql/mutations/play_pipeline_schedule.mutation.graphql @@ -0,0 +1,6 @@ +mutation playPipelineSchedule($id: CiPipelineScheduleID!) { + pipelineSchedulePlay(input: { id: $id }) { + clientMutationId + errors + } +} diff --git a/app/assets/javascripts/ci/pipeline_schedules/mount_pipeline_schedules_app.js b/app/assets/javascripts/ci/pipeline_schedules/mount_pipeline_schedules_app.js index 4c06fa321e5..8bca4f85e9f 100644 --- a/app/assets/javascripts/ci/pipeline_schedules/mount_pipeline_schedules_app.js +++ b/app/assets/javascripts/ci/pipeline_schedules/mount_pipeline_schedules_app.js @@ -18,7 +18,7 @@ export default () => { return false; } - const { fullPath } = containerEl.dataset; + const { fullPath, pipelinesPath } = containerEl.dataset; return new Vue({ el: containerEl, @@ -26,6 +26,7 @@ export default () => { apolloProvider, provide: { fullPath, + pipelinesPath, }, render(createElement) { return createElement(PipelineSchedules); diff --git a/app/assets/stylesheets/framework/selects.scss b/app/assets/stylesheets/framework/selects.scss index ea741af918c..98083fbc72a 100644 --- a/app/assets/stylesheets/framework/selects.scss +++ b/app/assets/stylesheets/framework/selects.scss @@ -37,3 +37,14 @@ } } } + +.approvers-select { + .dropdown-menu { + @include gl-w-full; + @include gl-max-w-none; + } + + .gl-dropdown-item-check-icon { + @include gl-display-none; + } +} diff --git a/app/controllers/autocomplete_controller.rb b/app/controllers/autocomplete_controller.rb index 45585ab84b4..668b2ebaf9e 100644 --- a/app/controllers/autocomplete_controller.rb +++ b/app/controllers/autocomplete_controller.rb @@ -9,7 +9,7 @@ class AutocompleteController < ApplicationController feature_category :users, [:users, :user] feature_category :projects, [:projects] feature_category :team_planning, [:award_emojis] - feature_category :code_review, [:merge_request_target_branches] + feature_category :code_review_workflow, [:merge_request_target_branches] feature_category :continuous_delivery, [:deploy_keys_with_owners] urgency :low, [:merge_request_target_branches, :deploy_keys_with_owners, :users] diff --git a/app/controllers/dashboard_controller.rb b/app/controllers/dashboard_controller.rb index 82e5bb6cd7c..3d9184979d7 100644 --- a/app/controllers/dashboard_controller.rb +++ b/app/controllers/dashboard_controller.rb @@ -16,7 +16,7 @@ class DashboardController < Dashboard::ApplicationController feature_category :users, [:activity] feature_category :team_planning, [:issues, :issues_calendar] - feature_category :code_review, [:merge_requests] + feature_category :code_review_workflow, [:merge_requests] urgency :low, [:merge_requests, :activity] urgency :low, [:issues, :issues_calendar] diff --git a/app/controllers/groups/autocomplete_sources_controller.rb b/app/controllers/groups/autocomplete_sources_controller.rb index 171494e66bd..6936733c4f7 100644 --- a/app/controllers/groups/autocomplete_sources_controller.rb +++ b/app/controllers/groups/autocomplete_sources_controller.rb @@ -3,7 +3,7 @@ class Groups::AutocompleteSourcesController < Groups::ApplicationController feature_category :subgroups, [:members] feature_category :team_planning, [:issues, :labels, :milestones, :commands] - feature_category :code_review, [:merge_requests] + feature_category :code_review_workflow, [:merge_requests] urgency :low, [:issues, :labels, :milestones, :commands, :merge_requests, :members] diff --git a/app/controllers/groups_controller.rb b/app/controllers/groups_controller.rb index db0655edcc3..faef5c6a2d0 100644 --- a/app/controllers/groups_controller.rb +++ b/app/controllers/groups_controller.rb @@ -55,7 +55,7 @@ class GroupsController < Groups::ApplicationController ] feature_category :team_planning, [:issues, :issues_calendar, :preview_markdown] - feature_category :code_review, [:merge_requests, :unfoldered_environment_names] + feature_category :code_review_workflow, [:merge_requests, :unfoldered_environment_names] feature_category :projects, [:projects] feature_category :importers, [:export, :download_export] urgency :low, [:export, :download_export] diff --git a/app/controllers/omniauth_callbacks_controller.rb b/app/controllers/omniauth_callbacks_controller.rb index 8650b6cbc6f..ac1d7ecc01c 100644 --- a/app/controllers/omniauth_callbacks_controller.rb +++ b/app/controllers/omniauth_callbacks_controller.rb @@ -306,7 +306,6 @@ class OmniauthCallbacksController < Devise::OmniauthCallbacksController end def persist_accepted_terms_if_required(user) - return unless Feature.enabled?(:update_oauth_registration_flow) return unless user.persisted? return unless Gitlab::CurrentSettings.current_application_settings.enforce_terms? diff --git a/app/controllers/projects/autocomplete_sources_controller.rb b/app/controllers/projects/autocomplete_sources_controller.rb index ef20c71cd77..52e3ca066d7 100644 --- a/app/controllers/projects/autocomplete_sources_controller.rb +++ b/app/controllers/projects/autocomplete_sources_controller.rb @@ -5,7 +5,7 @@ class Projects::AutocompleteSourcesController < Projects::ApplicationController before_action :authorize_read_crm_contact!, only: :contacts feature_category :team_planning, [:issues, :labels, :milestones, :commands, :contacts] - feature_category :code_review, [:merge_requests] + feature_category :code_review_workflow, [:merge_requests] feature_category :users, [:members] feature_category :source_code_management, [:snippets] diff --git a/app/controllers/projects/merge_requests/application_controller.rb b/app/controllers/projects/merge_requests/application_controller.rb index 76b06b2ce9d..be44c78ac9d 100644 --- a/app/controllers/projects/merge_requests/application_controller.rb +++ b/app/controllers/projects/merge_requests/application_controller.rb @@ -5,7 +5,7 @@ class Projects::MergeRequests::ApplicationController < Projects::ApplicationCont before_action :merge_request before_action :authorize_read_merge_request! - feature_category :code_review + feature_category :code_review_workflow private diff --git a/app/controllers/projects/merge_requests_controller.rb b/app/controllers/projects/merge_requests_controller.rb index 4a5fa7bfbea..b0920b3fbdb 100644 --- a/app/controllers/projects/merge_requests_controller.rb +++ b/app/controllers/projects/merge_requests_controller.rb @@ -54,7 +54,7 @@ class Projects::MergeRequestsController < Projects::MergeRequests::ApplicationCo after_action :log_merge_request_show, only: [:show, :diffs] - feature_category :code_review, [ + feature_category :code_review_workflow, [ :assign_related_issues, :bulk_update, :cancel_auto_merge, :commit_change_content, :commits, :context_commits, :destroy, :discussions, :edit, :index, :merge, :rebase, :remove_wip, diff --git a/app/controllers/projects/settings/ci_cd_controller.rb b/app/controllers/projects/settings/ci_cd_controller.rb index cf07de4dc29..3365f36c874 100644 --- a/app/controllers/projects/settings/ci_cd_controller.rb +++ b/app/controllers/projects/settings/ci_cd_controller.rb @@ -4,6 +4,7 @@ module Projects module Settings class CiCdController < Projects::ApplicationController include RunnerSetupScripts + include ZuoraCSP NUMBER_OF_RUNNERS_PER_PAGE = 20 diff --git a/app/controllers/projects/settings/merge_requests_controller.rb b/app/controllers/projects/settings/merge_requests_controller.rb index 93e10695767..f09e324f574 100644 --- a/app/controllers/projects/settings/merge_requests_controller.rb +++ b/app/controllers/projects/settings/merge_requests_controller.rb @@ -9,7 +9,7 @@ module Projects before_action :present_project, only: [:edit] before_action :authorize_admin_project! - feature_category :code_review + feature_category :code_review_workflow def update result = ::Projects::UpdateService.new(@project, current_user, project_params).execute diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index efd1a2821da..ee2c268ff33 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -58,7 +58,7 @@ class ProjectsController < Projects::ApplicationController feature_category :source_code_management, [:remove_fork, :housekeeping, :refs] feature_category :team_planning, [:preview_markdown, :new_issuable_address] feature_category :importers, [:export, :remove_export, :generate_new_export, :download_export] - feature_category :code_review, [:unfoldered_environment_names] + feature_category :code_review_workflow, [:unfoldered_environment_names] feature_category :portfolio_management, [:planning_hierarchy] urgency :low, [:export, :remove_export, :generate_new_export, :download_export] diff --git a/app/graphql/resolvers/projects/branch_rules_resolver.rb b/app/graphql/resolvers/projects/branch_rules_resolver.rb index e99d7ae4d5f..d1b39df602f 100644 --- a/app/graphql/resolvers/projects/branch_rules_resolver.rb +++ b/app/graphql/resolvers/projects/branch_rules_resolver.rb @@ -10,7 +10,15 @@ module Resolvers alias_method :project, :object def resolve_with_lookahead(**args) - apply_lookahead(project.protected_branches) + protected_branches.map do |protected_branch| + ::Projects::BranchRule.new(project, protected_branch) + end + end + + private + + def protected_branches + apply_lookahead(project.protected_branches.sorted_by_name) end end end diff --git a/app/graphql/types/projects/branch_rule_type.rb b/app/graphql/types/projects/branch_rule_type.rb index 1afd2cc3fef..08b1203d4a3 100644 --- a/app/graphql/types/projects/branch_rule_type.rb +++ b/app/graphql/types/projects/branch_rule_type.rb @@ -5,7 +5,6 @@ module Types class BranchRuleType < BaseObject graphql_name 'BranchRule' description 'List of branch rules for a project, grouped by branch name.' - accepts ::ProtectedBranch authorize :read_protected_branch alias_method :branch_rule, :object @@ -22,6 +21,12 @@ module Types calls_gitaly: true, description: "Check if this branch rule protects the project's default branch." + field :is_protected, + type: GraphQL::Types::Boolean, + null: false, + method: :protected?, + description: "Check if this branch rule protects access for the branch." + field :matching_branches_count, type: GraphQL::Types::Int, null: false, @@ -30,9 +35,8 @@ module Types field :branch_protection, type: Types::BranchRules::BranchProtectionType, - null: false, - description: 'Branch protections configured for this branch rule.', - method: :itself + null: true, + description: 'Branch protections configured for this branch rule.' field :created_at, Types::TimeType, @@ -43,10 +47,6 @@ module Types Types::TimeType, null: false, description: 'Timestamp of when the branch rule was last updated.' - - def matching_branches_count - branch_rule.matching(branch_rule.project.repository.branch_names).count - end end end end diff --git a/app/helpers/emails_helper.rb b/app/helpers/emails_helper.rb index cad39854c0e..f6de405cecb 100644 --- a/app/helpers/emails_helper.rb +++ b/app/helpers/emails_helper.rb @@ -284,23 +284,38 @@ module EmailsHelper end def change_reviewer_notification_text(new_reviewers, previous_reviewers, html_tag = nil) - new = new_reviewers.any? ? users_to_sentence(new_reviewers) : s_('ChangeReviewer|Unassigned') - old = previous_reviewers.any? ? users_to_sentence(previous_reviewers) : nil + if new_reviewers.empty? + s_('ChangeReviewer|All reviewers were removed.') + else + added_reviewers = new_reviewers - previous_reviewers + removed_reviewers = previous_reviewers - new_reviewers - if html_tag.present? - new = content_tag(html_tag, new) - old = content_tag(html_tag, old) if old.present? - end + added_reviewers_template_text = added_reviewers.size > 1 ? "were added as reviewers.<br>" : "was added as a reviewer.<br>" + removed_reviewers_template_text = removed_reviewers.size > 1 ? "were removed from reviewers." : "was removed from reviewers." - if old.present? - s_('ChangeReviewer|Reviewer changed from %{old} to %{new}').html_safe % { old: old, new: new } - else - s_('ChangeReviewer|Reviewer changed to %{new}').html_safe % { new: new } + added = format_reviewers_string(added_reviewers, html_tag) + removed = format_reviewers_string(removed_reviewers, html_tag) + + added_reviewers_text = added ? "#{added} #{added_reviewers_template_text}".html_safe : '' + removed_reviewers_text = removed ? "#{removed} #{removed_reviewers_template_text}".html_safe : '' + s_('ChangeReviewer|%{added_reviewers_text}%{removed_reviewers_text}').html_safe % { added_reviewers_text: added_reviewers_text, removed_reviewers_text: removed_reviewers_text } end end private + def format_reviewers_string(reviewers, html_tag = nil) + return unless reviewers.any? + + formatted_reviewers = users_to_sentence(reviewers) + + if html_tag.present? + content_tag(html_tag, formatted_reviewers) + else + formatted_reviewers + end + end + def users_to_sentence(users) sanitize_name(users.map(&:name).to_sentence) end diff --git a/app/models/projects/branch_rule.rb b/app/models/projects/branch_rule.rb new file mode 100644 index 00000000000..ae59d24e557 --- /dev/null +++ b/app/models/projects/branch_rule.rb @@ -0,0 +1,32 @@ +# frozen_string_literal: true + +module Projects + class BranchRule + extend Forwardable + + attr_reader :project, :protected_branch + + def_delegators(:protected_branch, :name, :group, :default_branch?, :created_at, :updated_at) + + def initialize(project, protected_branch) + @protected_branch = protected_branch + @project = project + end + + def protected? + true + end + + def matching_branches_count + branch_names = project.repository.branch_names + matching_branches = protected_branch.matching(branch_names) + matching_branches.count + end + + def branch_protection + protected_branch + end + end +end + +Projects::BranchRule.prepend_mod diff --git a/app/models/protected_branch.rb b/app/models/protected_branch.rb index c59ef4cd80b..1753b2a0220 100644 --- a/app/models/protected_branch.rb +++ b/app/models/protected_branch.rb @@ -8,11 +8,9 @@ class ProtectedBranch < ApplicationRecord validate :validate_either_project_or_top_group - scope :requiring_code_owner_approval, - -> { where(code_owner_approval_required: true) } - - scope :allowing_force_push, - -> { where(allow_force_push: true) } + scope :requiring_code_owner_approval, -> { where(code_owner_approval_required: true) } + scope :allowing_force_push, -> { where(allow_force_push: true) } + scope :sorted_by_name, -> { order(name: :asc) } protected_ref_access_levels :merge, :push diff --git a/app/models/user.rb b/app/models/user.rb index dedf12c25ed..c3ca6af2650 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -69,7 +69,7 @@ class User < ApplicationRecord attribute :hide_no_password, default: false attribute :project_view, default: :files attribute :notified_of_own_activity, default: false - attribute :preferred_language, default: -> { I18n.default_locale } + attribute :preferred_language, default: -> { Gitlab::CurrentSettings.default_preferred_language } attribute :theme_id, default: -> { gitlab_config.default_theme } attr_encrypted :otp_secret, @@ -541,9 +541,7 @@ class User < ApplicationRecord strip_attributes! :name def preferred_language - read_attribute('preferred_language') || - I18n.default_locale.to_s.presence_in(Gitlab::I18n.available_locales) || - default_preferred_language + read_attribute('preferred_language').presence || Gitlab::CurrentSettings.default_preferred_language end def active_for_authentication? @@ -2227,11 +2225,6 @@ class User < ApplicationRecord otp_backup_codes.first.start_with?("$pbkdf2-sha512$") end - # To enable JiHu repository to modify the default language options - def default_preferred_language - 'en' - end - # rubocop: disable CodeReuse/ServiceClass def add_primary_email_to_emails! Emails::CreateService.new(self, user: self, email: self.email).execute(confirmed_at: self.confirmed_at) diff --git a/app/policies/projects/branch_rule_policy.rb b/app/policies/projects/branch_rule_policy.rb new file mode 100644 index 00000000000..9ea15ea26d4 --- /dev/null +++ b/app/policies/projects/branch_rule_policy.rb @@ -0,0 +1,8 @@ +# frozen_string_literal: true + +module Projects + class BranchRulePolicy < ::ProtectedBranchPolicy + end +end + +Projects::BranchRulePolicy.prepend_mod diff --git a/app/services/boards/base_items_list_service.rb b/app/services/boards/base_items_list_service.rb index 2a9cbb83cc4..bf68aee2c1f 100644 --- a/app/services/boards/base_items_list_service.rb +++ b/app/services/boards/base_items_list_service.rb @@ -18,7 +18,6 @@ module Boards # TODO: eliminate need for SQL literal fragment columns = Arel.sql(fields.values_at(*keys).join(', ')) results = item_model.where(id: collection_ids) - results = query_additions(results, required_fields) results = results.select(columns) Hash[keys.zip(results.pluck(columns).flatten)] @@ -27,11 +26,6 @@ module Boards private - # override if needed - def query_additions(items, required_fields) - items - end - def collection_ids @collection_ids ||= init_collection.select(item_model.arel_table[:id]) end diff --git a/app/services/concerns/integrations/project_test_data.rb b/app/services/concerns/integrations/project_test_data.rb index ae1e1d1e66c..b3427697052 100644 --- a/app/services/concerns/integrations/project_test_data.rb +++ b/app/services/concerns/integrations/project_test_data.rb @@ -2,8 +2,14 @@ module Integrations module ProjectTestData + NoDataError = Class.new(ArgumentError) + private + def no_data_error(msg) + raise NoDataError, msg + end + def push_events_data Gitlab::DataBuilder::Push.build_sample(project, current_user) end @@ -11,7 +17,7 @@ module Integrations def note_events_data note = NotesFinder.new(current_user, project: project, target: project, sort: 'id_desc').execute.first - return { error: s_('TestHooks|Ensure the project has notes.') } unless note.present? + no_data_error(s_('TestHooks|Ensure the project has notes.')) unless note.present? Gitlab::DataBuilder::Note.build(note, current_user) end @@ -19,7 +25,7 @@ module Integrations def issues_events_data issue = IssuesFinder.new(current_user, project_id: project.id, sort: 'created_desc').execute.first - return { error: s_('TestHooks|Ensure the project has issues.') } unless issue.present? + no_data_error(s_('TestHooks|Ensure the project has issues.')) unless issue.present? issue.to_hook_data(current_user) end @@ -27,7 +33,7 @@ module Integrations def merge_requests_events_data merge_request = MergeRequestsFinder.new(current_user, project_id: project.id, sort: 'created_desc').execute.first - return { error: s_('TestHooks|Ensure the project has merge requests.') } unless merge_request.present? + no_data_error(s_('TestHooks|Ensure the project has merge requests.')) unless merge_request.present? merge_request.to_hook_data(current_user) end @@ -35,7 +41,7 @@ module Integrations def job_events_data build = Ci::JobsFinder.new(current_user: current_user, project: project).execute.first - return { error: s_('TestHooks|Ensure the project has CI jobs.') } unless build.present? + no_data_error(s_('TestHooks|Ensure the project has CI jobs.')) unless build.present? Gitlab::DataBuilder::Build.build(build) end @@ -43,7 +49,7 @@ module Integrations def pipeline_events_data pipeline = Ci::PipelinesFinder.new(project, current_user, order_by: 'id', sort: 'desc').execute.first - return { error: s_('TestHooks|Ensure the project has CI pipelines.') } unless pipeline.present? + no_data_error(s_('TestHooks|Ensure the project has CI pipelines.')) unless pipeline.present? Gitlab::DataBuilder::Pipeline.build(pipeline) end @@ -51,9 +57,7 @@ module Integrations def wiki_page_events_data page = project.wiki.list_pages(limit: 1).first - if !project.wiki_enabled? || page.blank? - return { error: s_('TestHooks|Ensure the wiki is enabled and has pages.') } - end + no_data_error(s_('TestHooks|Ensure the wiki is enabled and has pages.')) if !project.wiki_enabled? || page.blank? Gitlab::DataBuilder::WikiPage.build(page, current_user, 'create') end @@ -61,7 +65,7 @@ module Integrations def deployment_events_data deployment = DeploymentsFinder.new(project: project, order_by: 'created_at', sort: 'desc').execute.first - return { error: s_('TestHooks|Ensure the project has deployments.') } unless deployment.present? + no_data_error(s_('TestHooks|Ensure the project has deployments.')) unless deployment.present? Gitlab::DataBuilder::Deployment.build(deployment, deployment.status, Time.current) end @@ -69,7 +73,7 @@ module Integrations def releases_events_data release = ReleasesFinder.new(project, current_user, order_by: :created_at, sort: :desc).execute.first - return { error: s_('TestHooks|Ensure the project has releases.') } unless release.present? + no_data_error(s_('TestHooks|Ensure the project has releases.')) unless release.present? release.to_hook_data('create') end diff --git a/app/services/integrations/test/base_service.rb b/app/services/integrations/test/base_service.rb index a8a027092d5..6291f2dfbaa 100644 --- a/app/services/integrations/test/base_service.rb +++ b/app/services/integrations/test/base_service.rb @@ -21,9 +21,9 @@ module Integrations return error('Testing not available for this event') end - return error(data[:error]) if data[:error].present? - integration.test(data) + rescue ArgumentError => e + error(e.message) end private diff --git a/app/services/test_hooks/base_service.rb b/app/services/test_hooks/base_service.rb index b41a9959c13..3f2949a53ba 100644 --- a/app/services/test_hooks/base_service.rb +++ b/app/services/test_hooks/base_service.rb @@ -16,9 +16,16 @@ module TestHooks trigger_key = hook.class.triggers.key(trigger.to_sym) return error('Testing not available for this hook') if trigger_key.nil? || data.blank? + return error(data[:error]) if data[:error].present? hook.execute(data, trigger_key, force: true) + rescue ArgumentError => e + error(e.message) + end + + def error(message) + ServiceResponse.error(message: message) end end end diff --git a/app/views/devise/shared/_signup_omniauth_provider_list.haml b/app/views/devise/shared/_signup_omniauth_provider_list.haml index 5c085555872..a96c8d6358b 100644 --- a/app/views/devise/shared/_signup_omniauth_provider_list.haml +++ b/app/views/devise/shared/_signup_omniauth_provider_list.haml @@ -1,4 +1,4 @@ -- register_omniauth_params = Feature.enabled?(:update_oauth_registration_flow) ? { intent: :register } : {} +- register_omniauth_params = { intent: :register } - if Feature.enabled?(:restyle_login_page, @project) .gl-text-center.gl-pt-5 %label.gl-font-weight-normal diff --git a/app/views/projects/pipeline_schedules/index.html.haml b/app/views/projects/pipeline_schedules/index.html.haml index cb7cd631859..ab86d505f0f 100644 --- a/app/views/projects/pipeline_schedules/index.html.haml +++ b/app/views/projects/pipeline_schedules/index.html.haml @@ -6,7 +6,7 @@ #pipeline-schedules-callout{ data: { docs_url: help_page_path('ci/pipelines/schedules'), illustration_url: image_path('illustrations/pipeline_schedule_callout.svg') } } - if Feature.enabled?(:pipeline_schedules_vue, @project) - #pipeline-schedules-app{ data: { full_path: @project.full_path } } + #pipeline-schedules-app{ data: { full_path: @project.full_path, pipelines_path: project_pipelines_path(@project) } } - else .top-area - schedule_path_proc = ->(scope) { pipeline_schedules_path(@project, scope: scope) } diff --git a/app/workers/all_queues.yml b/app/workers/all_queues.yml index 5a2303400bd..81a6b95d04e 100644 --- a/app/workers/all_queues.yml +++ b/app/workers/all_queues.yml @@ -698,7 +698,7 @@ :tags: [] - :name: cronjob:remove_unreferenced_lfs_objects :worker_name: RemoveUnreferencedLfsObjectsWorker - :feature_category: :git_lfs + :feature_category: :source_code_management :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown @@ -725,7 +725,7 @@ :tags: [] - :name: cronjob:schedule_merge_request_cleanup_refs :worker_name: ScheduleMergeRequestCleanupRefsWorker - :feature_category: :code_review + :feature_category: :code_review_workflow :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown @@ -734,7 +734,7 @@ :tags: [] - :name: cronjob:schedule_migrate_external_diffs :worker_name: ScheduleMigrateExternalDiffsWorker - :feature_category: :code_review + :feature_category: :code_review_workflow :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown @@ -779,7 +779,7 @@ :tags: [] - :name: cronjob:stuck_merge_jobs :worker_name: StuckMergeJobsWorker - :feature_category: :code_review + :feature_category: :code_review_workflow :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown @@ -2345,7 +2345,7 @@ :tags: [] - :name: create_note_diff_file :worker_name: CreateNoteDiffFileWorker - :feature_category: :code_review + :feature_category: :code_review_workflow :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown @@ -2363,7 +2363,7 @@ :tags: [] - :name: delete_diff_files :worker_name: DeleteDiffFilesWorker - :feature_category: :code_review + :feature_category: :code_review_workflow :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown @@ -2750,7 +2750,7 @@ :tags: [] - :name: merge_request_cleanup_refs :worker_name: MergeRequestCleanupRefsWorker - :feature_category: :code_review + :feature_category: :code_review_workflow :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown @@ -2759,7 +2759,7 @@ :tags: [] - :name: merge_request_mergeability_check :worker_name: MergeRequestMergeabilityCheckWorker - :feature_category: :code_review + :feature_category: :code_review_workflow :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown @@ -2768,7 +2768,7 @@ :tags: [] - :name: merge_requests_close_issue :worker_name: MergeRequests::CloseIssueWorker - :feature_category: :code_review + :feature_category: :code_review_workflow :has_external_dependencies: true :urgency: :low :resource_boundary: :unknown @@ -2777,7 +2777,7 @@ :tags: [] - :name: merge_requests_create_approval_event :worker_name: MergeRequests::CreateApprovalEventWorker - :feature_category: :code_review + :feature_category: :code_review_workflow :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown @@ -2786,7 +2786,7 @@ :tags: [] - :name: merge_requests_create_approval_note :worker_name: MergeRequests::CreateApprovalNoteWorker - :feature_category: :code_review + :feature_category: :code_review_workflow :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown @@ -2804,7 +2804,7 @@ :tags: [] - :name: merge_requests_execute_approval_hooks :worker_name: MergeRequests::ExecuteApprovalHooksWorker - :feature_category: :code_review + :feature_category: :code_review_workflow :has_external_dependencies: true :urgency: :low :resource_boundary: :unknown @@ -2813,7 +2813,7 @@ :tags: [] - :name: merge_requests_handle_assignees_change :worker_name: MergeRequests::HandleAssigneesChangeWorker - :feature_category: :code_review + :feature_category: :code_review_workflow :has_external_dependencies: false :urgency: :high :resource_boundary: :unknown @@ -2822,7 +2822,7 @@ :tags: [] - :name: merge_requests_resolve_todos :worker_name: MergeRequests::ResolveTodosWorker - :feature_category: :code_review + :feature_category: :code_review_workflow :has_external_dependencies: false :urgency: :high :resource_boundary: :unknown @@ -2831,7 +2831,7 @@ :tags: [] - :name: merge_requests_resolve_todos_after_approval :worker_name: MergeRequests::ResolveTodosAfterApprovalWorker - :feature_category: :code_review + :feature_category: :code_review_workflow :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown @@ -2840,7 +2840,7 @@ :tags: [] - :name: merge_requests_update_head_pipeline :worker_name: MergeRequests::UpdateHeadPipelineWorker - :feature_category: :code_review + :feature_category: :code_review_workflow :has_external_dependencies: false :urgency: :high :resource_boundary: :cpu @@ -2867,7 +2867,7 @@ :tags: [] - :name: migrate_external_diffs :worker_name: MigrateExternalDiffsWorker - :feature_category: :code_review + :feature_category: :code_review_workflow :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown @@ -2903,7 +2903,7 @@ :tags: [] - :name: new_merge_request :worker_name: NewMergeRequestWorker - :feature_category: :code_review + :feature_category: :code_review_workflow :has_external_dependencies: false :urgency: :high :resource_boundary: :cpu @@ -3362,7 +3362,7 @@ :tags: [] - :name: update_merge_requests :worker_name: UpdateMergeRequestsWorker - :feature_category: :code_review + :feature_category: :code_review_workflow :has_external_dependencies: false :urgency: :high :resource_boundary: :cpu diff --git a/app/workers/create_note_diff_file_worker.rb b/app/workers/create_note_diff_file_worker.rb index 8481fd0a2ab..c5b5e1cef41 100644 --- a/app/workers/create_note_diff_file_worker.rb +++ b/app/workers/create_note_diff_file_worker.rb @@ -7,7 +7,7 @@ class CreateNoteDiffFileWorker # rubocop:disable Scalability/IdempotentWorker sidekiq_options retry: 3 - feature_category :code_review + feature_category :code_review_workflow def perform(diff_note_id) return unless diff_note_id.present? diff --git a/app/workers/delete_diff_files_worker.rb b/app/workers/delete_diff_files_worker.rb index 54d8fcb6dfd..f9f5e6ed35b 100644 --- a/app/workers/delete_diff_files_worker.rb +++ b/app/workers/delete_diff_files_worker.rb @@ -7,7 +7,7 @@ class DeleteDiffFilesWorker # rubocop:disable Scalability/IdempotentWorker sidekiq_options retry: 3 - feature_category :code_review + feature_category :code_review_workflow # rubocop: disable CodeReuse/ActiveRecord def perform(merge_request_diff_id) diff --git a/app/workers/merge_request_cleanup_refs_worker.rb b/app/workers/merge_request_cleanup_refs_worker.rb index db6f4649f47..92dfe8a8cb0 100644 --- a/app/workers/merge_request_cleanup_refs_worker.rb +++ b/app/workers/merge_request_cleanup_refs_worker.rb @@ -9,7 +9,7 @@ class MergeRequestCleanupRefsWorker sidekiq_options retry: 3 - feature_category :code_review + feature_category :code_review_workflow idempotent! # Hard-coded to 4 for now. Will be configurable later on via application settings. diff --git a/app/workers/merge_request_mergeability_check_worker.rb b/app/workers/merge_request_mergeability_check_worker.rb index 0e1ab505644..2ef4220131a 100644 --- a/app/workers/merge_request_mergeability_check_worker.rb +++ b/app/workers/merge_request_mergeability_check_worker.rb @@ -7,7 +7,7 @@ class MergeRequestMergeabilityCheckWorker sidekiq_options retry: 3 - feature_category :code_review + feature_category :code_review_workflow idempotent! def logger diff --git a/app/workers/merge_requests/close_issue_worker.rb b/app/workers/merge_requests/close_issue_worker.rb index 86d63e571ac..8c3ba1bc5ab 100644 --- a/app/workers/merge_requests/close_issue_worker.rb +++ b/app/workers/merge_requests/close_issue_worker.rb @@ -5,7 +5,7 @@ module MergeRequests include ApplicationWorker data_consistency :always - feature_category :code_review + feature_category :code_review_workflow urgency :low idempotent! diff --git a/app/workers/merge_requests/create_approval_event_worker.rb b/app/workers/merge_requests/create_approval_event_worker.rb index 9b1a3c262e4..09ae51e943c 100644 --- a/app/workers/merge_requests/create_approval_event_worker.rb +++ b/app/workers/merge_requests/create_approval_event_worker.rb @@ -5,7 +5,7 @@ module MergeRequests include Gitlab::EventStore::Subscriber data_consistency :always - feature_category :code_review + feature_category :code_review_workflow urgency :low idempotent! diff --git a/app/workers/merge_requests/create_approval_note_worker.rb b/app/workers/merge_requests/create_approval_note_worker.rb index 841431f6a9d..18b0533169a 100644 --- a/app/workers/merge_requests/create_approval_note_worker.rb +++ b/app/workers/merge_requests/create_approval_note_worker.rb @@ -5,7 +5,7 @@ module MergeRequests include Gitlab::EventStore::Subscriber data_consistency :always - feature_category :code_review + feature_category :code_review_workflow urgency :low idempotent! diff --git a/app/workers/merge_requests/execute_approval_hooks_worker.rb b/app/workers/merge_requests/execute_approval_hooks_worker.rb index 81eca425a38..0a127e16f26 100644 --- a/app/workers/merge_requests/execute_approval_hooks_worker.rb +++ b/app/workers/merge_requests/execute_approval_hooks_worker.rb @@ -5,7 +5,7 @@ module MergeRequests include Gitlab::EventStore::Subscriber data_consistency :always - feature_category :code_review + feature_category :code_review_workflow urgency :low idempotent! diff --git a/app/workers/merge_requests/handle_assignees_change_worker.rb b/app/workers/merge_requests/handle_assignees_change_worker.rb index 7cf1be51d23..05e02905008 100644 --- a/app/workers/merge_requests/handle_assignees_change_worker.rb +++ b/app/workers/merge_requests/handle_assignees_change_worker.rb @@ -7,7 +7,7 @@ class MergeRequests::HandleAssigneesChangeWorker sidekiq_options retry: 3 - feature_category :code_review + feature_category :code_review_workflow urgency :high deduplicate :until_executed idempotent! diff --git a/app/workers/merge_requests/resolve_todos_after_approval_worker.rb b/app/workers/merge_requests/resolve_todos_after_approval_worker.rb index 7d9c76ea872..ef02e501de1 100644 --- a/app/workers/merge_requests/resolve_todos_after_approval_worker.rb +++ b/app/workers/merge_requests/resolve_todos_after_approval_worker.rb @@ -5,7 +5,7 @@ module MergeRequests include Gitlab::EventStore::Subscriber data_consistency :always - feature_category :code_review + feature_category :code_review_workflow urgency :low idempotent! diff --git a/app/workers/merge_requests/resolve_todos_worker.rb b/app/workers/merge_requests/resolve_todos_worker.rb index 314cdac4414..15bf92c8ae1 100644 --- a/app/workers/merge_requests/resolve_todos_worker.rb +++ b/app/workers/merge_requests/resolve_todos_worker.rb @@ -7,7 +7,7 @@ class MergeRequests::ResolveTodosWorker sidekiq_options retry: 3 - feature_category :code_review + feature_category :code_review_workflow urgency :high deduplicate :until_executed idempotent! diff --git a/app/workers/merge_requests/update_head_pipeline_worker.rb b/app/workers/merge_requests/update_head_pipeline_worker.rb index bc3a289c1e1..2479bc51cc4 100644 --- a/app/workers/merge_requests/update_head_pipeline_worker.rb +++ b/app/workers/merge_requests/update_head_pipeline_worker.rb @@ -4,7 +4,7 @@ module MergeRequests class UpdateHeadPipelineWorker include Gitlab::EventStore::Subscriber - feature_category :code_review + feature_category :code_review_workflow urgency :high worker_resource_boundary :cpu data_consistency :always diff --git a/app/workers/migrate_external_diffs_worker.rb b/app/workers/migrate_external_diffs_worker.rb index 566797d8b8a..4f1393a631c 100644 --- a/app/workers/migrate_external_diffs_worker.rb +++ b/app/workers/migrate_external_diffs_worker.rb @@ -7,7 +7,7 @@ class MigrateExternalDiffsWorker # rubocop:disable Scalability/IdempotentWorker sidekiq_options retry: 3 - feature_category :code_review + feature_category :code_review_workflow def perform(merge_request_diff_id) diff = MergeRequestDiff.find_by_id(merge_request_diff_id) diff --git a/app/workers/new_merge_request_worker.rb b/app/workers/new_merge_request_worker.rb index 9694d44e8c1..d6e8d517b5a 100644 --- a/app/workers/new_merge_request_worker.rb +++ b/app/workers/new_merge_request_worker.rb @@ -8,7 +8,7 @@ class NewMergeRequestWorker # rubocop:disable Scalability/IdempotentWorker sidekiq_options retry: 3 include NewIssuable - feature_category :code_review + feature_category :code_review_workflow urgency :high worker_resource_boundary :cpu weight 2 diff --git a/app/workers/remove_unreferenced_lfs_objects_worker.rb b/app/workers/remove_unreferenced_lfs_objects_worker.rb index c67ab6e356a..52e17b250c8 100644 --- a/app/workers/remove_unreferenced_lfs_objects_worker.rb +++ b/app/workers/remove_unreferenced_lfs_objects_worker.rb @@ -10,7 +10,7 @@ class RemoveUnreferencedLfsObjectsWorker include CronjobQueue # rubocop:enable Scalability/CronWorkerContext - feature_category :git_lfs + feature_category :source_code_management deduplicate :until_executed idempotent! diff --git a/app/workers/schedule_merge_request_cleanup_refs_worker.rb b/app/workers/schedule_merge_request_cleanup_refs_worker.rb index 8099c3d56b6..ced1f443ea6 100644 --- a/app/workers/schedule_merge_request_cleanup_refs_worker.rb +++ b/app/workers/schedule_merge_request_cleanup_refs_worker.rb @@ -7,7 +7,7 @@ class ScheduleMergeRequestCleanupRefsWorker include CronjobQueue # rubocop:disable Scalability/CronWorkerContext - feature_category :code_review + feature_category :code_review_workflow idempotent! def perform diff --git a/app/workers/schedule_migrate_external_diffs_worker.rb b/app/workers/schedule_migrate_external_diffs_worker.rb index b2dea5083b4..8f643cf7819 100644 --- a/app/workers/schedule_migrate_external_diffs_worker.rb +++ b/app/workers/schedule_migrate_external_diffs_worker.rb @@ -13,7 +13,7 @@ class ScheduleMigrateExternalDiffsWorker # rubocop:disable Scalability/Idempoten include Gitlab::ExclusiveLeaseHelpers - feature_category :code_review + feature_category :code_review_workflow def perform in_lock(self.class.name.underscore, ttl: 2.hours, retries: 0) do diff --git a/app/workers/stuck_merge_jobs_worker.rb b/app/workers/stuck_merge_jobs_worker.rb index 3a650fcb7bf..44f2d5ade58 100644 --- a/app/workers/stuck_merge_jobs_worker.rb +++ b/app/workers/stuck_merge_jobs_worker.rb @@ -7,7 +7,7 @@ class StuckMergeJobsWorker # rubocop:disable Scalability/IdempotentWorker include CronjobQueue # rubocop:disable Scalability/CronWorkerContext - feature_category :code_review + feature_category :code_review_workflow def self.logger Gitlab::AppLogger diff --git a/app/workers/update_merge_requests_worker.rb b/app/workers/update_merge_requests_worker.rb index eb69c0eaba6..caf46c1ac4e 100644 --- a/app/workers/update_merge_requests_worker.rb +++ b/app/workers/update_merge_requests_worker.rb @@ -7,7 +7,7 @@ class UpdateMergeRequestsWorker # rubocop:disable Scalability/IdempotentWorker sidekiq_options retry: 3 - feature_category :code_review + feature_category :code_review_workflow urgency :high worker_resource_boundary :cpu weight 3 diff --git a/config/feature_categories.yml b/config/feature_categories.yml index ae2eb043fdd..11be4eb2e70 100644 --- a/config/feature_categories.yml +++ b/config/feature_categories.yml @@ -9,6 +9,7 @@ --- - advanced_deployments - advisory_database +- api - api_security - application_instrumentation - application_performance @@ -24,7 +25,7 @@ - cloud_native_installation - cluster_cost_management - code_quality -- code_review +- code_review_workflow - code_search - code_suggestions - code_testing @@ -53,7 +54,6 @@ - disaster_recovery - dora_metrics - dynamic_application_security_testing -- editor_extension - environment_management - error_budgets - error_tracking @@ -64,12 +64,11 @@ - feature_flags - five_minute_production_app - fulfillment_admin_tooling -- fulfillment_developer_productivity - fulfillment_infrastructure - fuzz_testing - geo_replication -- git_lfs - gitaly +- gitlab_cli - global_search - helm_chart_registry - importers @@ -82,7 +81,6 @@ - intel_code_security - interactive_application_security_testing - internationalization -- jenkins_importer - kubernetes_management - license_compliance - logging @@ -141,5 +139,6 @@ - value_stream_management - vulnerability_management - web_ide +- webhooks - wiki - workflow_automation diff --git a/config/feature_flags/development/update_oauth_registration_flow.yml b/config/feature_flags/development/update_oauth_registration_flow.yml deleted file mode 100644 index 7b066ebf9ab..00000000000 --- a/config/feature_flags/development/update_oauth_registration_flow.yml +++ /dev/null @@ -1,8 +0,0 @@ ---- -name: update_oauth_registration_flow -introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/85871 -rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/364342 -milestone: '15.2' -type: development -group: group::acquisition -default_enabled: false diff --git a/db/docs/approval_merge_request_rules_approved_approvers.yml b/db/docs/approval_merge_request_rules_approved_approvers.yml index 4a453da4162..8d2d74ffcc5 100644 --- a/db/docs/approval_merge_request_rules_approved_approvers.yml +++ b/db/docs/approval_merge_request_rules_approved_approvers.yml @@ -2,7 +2,7 @@ table_name: approval_merge_request_rules_approved_approvers classes: [] feature_categories: -- code_review +- code_review_workflow description: Join table for approved approvers and ApprovalMergeRequestRule introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/8497 milestone: '11.7' diff --git a/db/docs/approver_groups.yml b/db/docs/approver_groups.yml index fd892ed3f4c..b69c110e3cc 100644 --- a/db/docs/approver_groups.yml +++ b/db/docs/approver_groups.yml @@ -3,7 +3,7 @@ table_name: approver_groups classes: - ApproverGroup feature_categories: -- code_review +- code_review_workflow - source_code_management description: Group approvers of given merge request introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/743 diff --git a/db/docs/approvers.yml b/db/docs/approvers.yml index ac15bbb8767..ea700bfb634 100644 --- a/db/docs/approvers.yml +++ b/db/docs/approvers.yml @@ -3,7 +3,7 @@ table_name: approvers classes: - Approver feature_categories: -- code_review +- code_review_workflow - source_code_management description: Approvers of given merge request introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/commit/3cc78d89984d9c9df8372c52b7bba38e6226f9f2 diff --git a/db/docs/draft_notes.yml b/db/docs/draft_notes.yml index 047241a7976..30e0bc96e22 100644 --- a/db/docs/draft_notes.yml +++ b/db/docs/draft_notes.yml @@ -3,7 +3,7 @@ table_name: draft_notes classes: - DraftNote feature_categories: -- code_review +- code_review_workflow - source_code_management description: Notes created during the review of an MR that are not yet published introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/4213 diff --git a/db/docs/lfs_file_locks.yml b/db/docs/lfs_file_locks.yml index c366c43d6d7..07850aedddb 100644 --- a/db/docs/lfs_file_locks.yml +++ b/db/docs/lfs_file_locks.yml @@ -3,7 +3,7 @@ table_name: lfs_file_locks classes: - LfsFileLock feature_categories: -- git_lfs +- source_code_management description: File locks for LFS objects introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/4091 milestone: '10.5' diff --git a/db/docs/lfs_object_states.yml b/db/docs/lfs_object_states.yml index 02334202bdc..a0a6d4345fb 100644 --- a/db/docs/lfs_object_states.yml +++ b/db/docs/lfs_object_states.yml @@ -3,7 +3,7 @@ table_name: lfs_object_states classes: - Geo::LfsObjectState feature_categories: -- git_lfs +- source_code_management description: Geo verification states for LFS objects introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/63981 milestone: '14.6' diff --git a/db/docs/lfs_objects.yml b/db/docs/lfs_objects.yml index 490bc1af0d9..431aace668f 100644 --- a/db/docs/lfs_objects.yml +++ b/db/docs/lfs_objects.yml @@ -3,7 +3,7 @@ table_name: lfs_objects classes: - LfsObject feature_categories: -- git_lfs +- source_code_management description: LFS files introduced_by_url: https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/1727 milestone: '8.2' diff --git a/db/docs/lfs_objects_projects.yml b/db/docs/lfs_objects_projects.yml index 7158e702312..e00132824be 100644 --- a/db/docs/lfs_objects_projects.yml +++ b/db/docs/lfs_objects_projects.yml @@ -3,7 +3,6 @@ table_name: lfs_objects_projects classes: - LfsObjectsProject feature_categories: -- git_lfs - source_code_management description: Join table relating lfs_objects and projects introduced_by_url: https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/1727 diff --git a/db/docs/merge_request_assignees.yml b/db/docs/merge_request_assignees.yml index 38f476ead90..12ca2eb513f 100644 --- a/db/docs/merge_request_assignees.yml +++ b/db/docs/merge_request_assignees.yml @@ -3,7 +3,7 @@ table_name: merge_request_assignees classes: - MergeRequestAssignee feature_categories: -- code_review +- code_review_workflow description: Store allocated assignees for merge requests introduced_by_url: https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/26496 milestone: '11.10' diff --git a/db/docs/merge_request_cleanup_schedules.yml b/db/docs/merge_request_cleanup_schedules.yml index e25c88c99a7..ba7c4e218f0 100644 --- a/db/docs/merge_request_cleanup_schedules.yml +++ b/db/docs/merge_request_cleanup_schedules.yml @@ -3,7 +3,7 @@ table_name: merge_request_cleanup_schedules classes: - MergeRequest::CleanupSchedule feature_categories: -- code_review +- code_review_workflow description: Store refs cleanup schedules for merge requests introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/46758 milestone: '13.6' diff --git a/db/docs/merge_request_context_commit_diff_files.yml b/db/docs/merge_request_context_commit_diff_files.yml index 6b64ea87555..ab92c3e69a2 100644 --- a/db/docs/merge_request_context_commit_diff_files.yml +++ b/db/docs/merge_request_context_commit_diff_files.yml @@ -3,7 +3,7 @@ table_name: merge_request_context_commit_diff_files classes: - MergeRequestContextCommitDiffFile feature_categories: -- code_review +- code_review_workflow description: Stores diffs data for merge request context commits introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/23701 milestone: '12.8' diff --git a/db/docs/merge_request_context_commits.yml b/db/docs/merge_request_context_commits.yml index 1c8fc45776f..a16d1177d9d 100644 --- a/db/docs/merge_request_context_commits.yml +++ b/db/docs/merge_request_context_commits.yml @@ -3,7 +3,7 @@ table_name: merge_request_context_commits classes: - MergeRequestContextCommit feature_categories: -- code_review +- code_review_workflow description: Store context commit related data for merge requests introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/23701 milestone: '12.8' diff --git a/db/docs/merge_request_diff_commit_users.yml b/db/docs/merge_request_diff_commit_users.yml index 1e6e78b37e3..59b5a73ca32 100644 --- a/db/docs/merge_request_diff_commit_users.yml +++ b/db/docs/merge_request_diff_commit_users.yml @@ -3,7 +3,7 @@ table_name: merge_request_diff_commit_users classes: - MergeRequest::DiffCommitUser feature_categories: -- code_review +- code_review_workflow description: Store commit user information for merge request diffs introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/63669 milestone: '14.1' diff --git a/db/docs/merge_request_diff_commits.yml b/db/docs/merge_request_diff_commits.yml index 1b2f910c88a..c489f1b3ecb 100644 --- a/db/docs/merge_request_diff_commits.yml +++ b/db/docs/merge_request_diff_commits.yml @@ -3,7 +3,7 @@ table_name: merge_request_diff_commits classes: - MergeRequestDiffCommit feature_categories: -- code_review +- code_review_workflow description: Store commit related information within a merge request diff introduced_by_url: https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/12527 milestone: '9.4' diff --git a/db/docs/merge_request_diff_files.yml b/db/docs/merge_request_diff_files.yml index 5bb625231f8..cefd7faa923 100644 --- a/db/docs/merge_request_diff_files.yml +++ b/db/docs/merge_request_diff_files.yml @@ -3,7 +3,7 @@ table_name: merge_request_diff_files classes: - MergeRequestDiffFile feature_categories: -- code_review +- code_review_workflow description: Store file related information within a merge request diff introduced_by_url: https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/12047 milestone: '9.4' diff --git a/db/docs/merge_request_diffs.yml b/db/docs/merge_request_diffs.yml index d1044ebffe8..3abd8d80d4b 100644 --- a/db/docs/merge_request_diffs.yml +++ b/db/docs/merge_request_diffs.yml @@ -3,7 +3,7 @@ table_name: merge_request_diffs classes: - MergeRequestDiff feature_categories: -- code_review +- code_review_workflow description: Store information about the changes made within a git push for a merge request introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/commit/c983e8eb3d9cac01090b8657735544f71f891576 milestone: '6.6' diff --git a/db/docs/merge_request_metrics.yml b/db/docs/merge_request_metrics.yml index 31267b6bf97..250f900246b 100644 --- a/db/docs/merge_request_metrics.yml +++ b/db/docs/merge_request_metrics.yml @@ -4,7 +4,7 @@ classes: - MergeRequest::Metrics feature_categories: - value_stream_management -- code_review +- code_review_workflow description: Store various metrics for merge requests. introduced_by_url: https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/5986 milestone: '8.12' diff --git a/db/docs/merge_request_reviewers.yml b/db/docs/merge_request_reviewers.yml index b8afea0d217..0de14b578de 100644 --- a/db/docs/merge_request_reviewers.yml +++ b/db/docs/merge_request_reviewers.yml @@ -3,7 +3,7 @@ table_name: merge_request_reviewers classes: - MergeRequestReviewer feature_categories: -- code_review +- code_review_workflow description: Store allocated reviewers for merge requests introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/40358 milestone: '13.4' diff --git a/db/docs/merge_requests.yml b/db/docs/merge_requests.yml index 8e849a242b4..bd08875eafe 100644 --- a/db/docs/merge_requests.yml +++ b/db/docs/merge_requests.yml @@ -3,7 +3,7 @@ table_name: merge_requests classes: - MergeRequest feature_categories: -- code_review +- code_review_workflow description: This is the main table that stores information about project merge requests. introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/commit/6d460aa2d6b3959593c168eed181516036525393 milestone: "<6.0" diff --git a/db/docs/merge_requests_closing_issues.yml b/db/docs/merge_requests_closing_issues.yml index 9ad45df375a..479a81d8c67 100644 --- a/db/docs/merge_requests_closing_issues.yml +++ b/db/docs/merge_requests_closing_issues.yml @@ -3,7 +3,7 @@ table_name: merge_requests_closing_issues classes: - MergeRequestsClosingIssues feature_categories: -- code_review +- code_review_workflow description: Store the events of merge request closing any issues introduced_by_url: https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/5986 milestone: '8.12' diff --git a/db/docs/note_diff_files.yml b/db/docs/note_diff_files.yml index 5e78644fe52..38f7ce9a30f 100644 --- a/db/docs/note_diff_files.yml +++ b/db/docs/note_diff_files.yml @@ -3,7 +3,7 @@ table_name: note_diff_files classes: - NoteDiffFile feature_categories: -- code_review +- code_review_workflow description: Persisted truncated note diffs introduced_by_url: https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/18991 milestone: '11.0' diff --git a/db/docs/notes.yml b/db/docs/notes.yml index f0a295fbbf8..a8dac9ccbd3 100644 --- a/db/docs/notes.yml +++ b/db/docs/notes.yml @@ -12,7 +12,7 @@ classes: - SyntheticNote - WeightNote feature_categories: -- code_review +- code_review_workflow - portfolio_management - service_desk - source_code_management diff --git a/db/docs/reviews.yml b/db/docs/reviews.yml index 81253d0c3c1..b5d8985c7d0 100644 --- a/db/docs/reviews.yml +++ b/db/docs/reviews.yml @@ -3,7 +3,7 @@ table_name: reviews classes: - Review feature_categories: -- code_review +- code_review_workflow description: TODO introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/8442 milestone: '11.6' diff --git a/db/docs/suggestions.yml b/db/docs/suggestions.yml index 7667a693b32..7d8ee3ca4d9 100644 --- a/db/docs/suggestions.yml +++ b/db/docs/suggestions.yml @@ -3,7 +3,7 @@ table_name: suggestions classes: - Suggestion feature_categories: -- code_review +- code_review_workflow description: Storing code suggestions within notes introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/8656 milestone: '11.6' diff --git a/db/docs/uploads.yml b/db/docs/uploads.yml index 709b7855c78..88f3bd68946 100644 --- a/db/docs/uploads.yml +++ b/db/docs/uploads.yml @@ -3,7 +3,7 @@ table_name: uploads classes: - Upload feature_categories: -- code_review +- code_review_workflow - design_management - importers - portfolio_management diff --git a/doc/api/graphql/reference/index.md b/doc/api/graphql/reference/index.md index fa219c96808..6f51db17d0c 100644 --- a/doc/api/graphql/reference/index.md +++ b/doc/api/graphql/reference/index.md @@ -10860,10 +10860,11 @@ List of branch rules for a project, grouped by branch name. | Name | Type | Description | | ---- | ---- | ----------- | | <a id="branchruleapprovalrules"></a>`approvalRules` | [`ApprovalProjectRuleConnection`](#approvalprojectruleconnection) | Merge request approval rules configured for this branch rule. (see [Connections](#connections)) | -| <a id="branchrulebranchprotection"></a>`branchProtection` | [`BranchProtection!`](#branchprotection) | Branch protections configured for this branch rule. | +| <a id="branchrulebranchprotection"></a>`branchProtection` | [`BranchProtection`](#branchprotection) | Branch protections configured for this branch rule. | | <a id="branchrulecreatedat"></a>`createdAt` | [`Time!`](#time) | Timestamp of when the branch rule was created. | | <a id="branchruleexternalstatuschecks"></a>`externalStatusChecks` | [`ExternalStatusCheckConnection`](#externalstatuscheckconnection) | External status checks configured for this branch rule. (see [Connections](#connections)) | | <a id="branchruleisdefault"></a>`isDefault` | [`Boolean!`](#boolean) | Check if this branch rule protects the project's default branch. | +| <a id="branchruleisprotected"></a>`isProtected` | [`Boolean!`](#boolean) | Check if this branch rule protects access for the branch. | | <a id="branchrulematchingbranchescount"></a>`matchingBranchesCount` | [`Int!`](#int) | Number of existing branches that match this branch rule. | | <a id="branchrulename"></a>`name` | [`String!`](#string) | Branch name, with wildcards, for the branch rules. | | <a id="branchruleupdatedat"></a>`updatedAt` | [`Time!`](#time) | Timestamp of when the branch rule was last updated. | diff --git a/doc/development/application_slis/index.md b/doc/development/application_slis/index.md index 75dd066680e..bd4587333e0 100644 --- a/doc/development/application_slis/index.md +++ b/doc/development/application_slis/index.md @@ -66,7 +66,7 @@ Gitlab::Metrics::Sli::Apdex.initialize_sli(:received_email, [ email_type: :service_desk }, { - feature_category: :code_review, + feature_category: :code_review_workflow, email_type: :create_merge_request } ]) diff --git a/doc/development/feature_categorization/index.md b/doc/development/feature_categorization/index.md index 85e3d5de403..7f275f25c3d 100644 --- a/doc/development/feature_categorization/index.md +++ b/doc/development/feature_categorization/index.md @@ -115,7 +115,7 @@ second argument: ```ruby class DashboardController < ApplicationController feature_category :team_planning, [:issues, :issues_calendar] - feature_category :code_review, [:merge_requests] + feature_category :code_review_workflow, [:merge_requests] end ``` diff --git a/doc/user/application_security/vulnerabilities/index.md b/doc/user/application_security/vulnerabilities/index.md index e86f9ff4673..22ef3ed8a1b 100644 --- a/doc/user/application_security/vulnerabilities/index.md +++ b/doc/user/application_security/vulnerabilities/index.md @@ -204,6 +204,8 @@ To enable security training for vulnerabilities in your project: 1. On the tab bar, select **Vulnerability Management**. 1. To enable a security training provider, turn on the toggle. +Security training uses content from third-party vendors. You must have an internet connection to use this feature. + ## View security training for a vulnerability > [Introduced](https://gitlab.com/groups/gitlab-org/-/epics/6176) in GitLab 14.9. diff --git a/doc/user/project/repository/img/web_editor_new_directory_dialog_v14_1.png b/doc/user/project/repository/img/web_editor_new_directory_dialog_v14_1.png Binary files differdeleted file mode 100644 index 1f7a6263d9a..00000000000 --- a/doc/user/project/repository/img/web_editor_new_directory_dialog_v14_1.png +++ /dev/null diff --git a/doc/user/project/repository/img/web_editor_new_directory_dropdown_v14_1.png b/doc/user/project/repository/img/web_editor_new_directory_dropdown_v14_1.png Binary files differdeleted file mode 100644 index bbdb9bca199..00000000000 --- a/doc/user/project/repository/img/web_editor_new_directory_dropdown_v14_1.png +++ /dev/null diff --git a/doc/user/project/repository/img/web_editor_new_tag_dropdown.png b/doc/user/project/repository/img/web_editor_new_tag_dropdown.png Binary files differdeleted file mode 100644 index 33e8ed891b5..00000000000 --- a/doc/user/project/repository/img/web_editor_new_tag_dropdown.png +++ /dev/null diff --git a/doc/user/project/repository/img/web_editor_new_tag_page.png b/doc/user/project/repository/img/web_editor_new_tag_page.png Binary files differdeleted file mode 100644 index d6d9945397c..00000000000 --- a/doc/user/project/repository/img/web_editor_new_tag_page.png +++ /dev/null diff --git a/doc/user/project/repository/img/web_editor_upload_file_dialog_v14_1.png b/doc/user/project/repository/img/web_editor_upload_file_dialog_v14_1.png Binary files differdeleted file mode 100644 index 632f591e25a..00000000000 --- a/doc/user/project/repository/img/web_editor_upload_file_dialog_v14_1.png +++ /dev/null diff --git a/doc/user/project/repository/img/web_editor_upload_file_dropdown_v14_1.png b/doc/user/project/repository/img/web_editor_upload_file_dropdown_v14_1.png Binary files differdeleted file mode 100644 index ad949aae8ce..00000000000 --- a/doc/user/project/repository/img/web_editor_upload_file_dropdown_v14_1.png +++ /dev/null diff --git a/doc/user/project/repository/web_editor.md b/doc/user/project/repository/web_editor.md index cc89ca0fb1a..2748fca3ffc 100644 --- a/doc/user/project/repository/web_editor.md +++ b/doc/user/project/repository/web_editor.md @@ -90,38 +90,23 @@ You don't need to construct these lines manually. Instead, you can: ## Upload a file -The ability to create a file is great when the content is text. However, this -doesn't work well for binary data such as images, PDFs, or other binary file types. In -this case, you need to upload a file. +To upload a binary file in the Web Editor: -From a project's files page, select the '+' button to the right of the branch -selector. Choose **Upload file** from the dropdown: - -![Upload file dropdown list](img/web_editor_upload_file_dropdown_v14_1.png) - -After the upload dialog pops up, there are two ways to upload your file. Either -drag and drop a file on the popup or use the **click to upload** link. After you -select a file to upload, a file preview displays. - -Enter a commit message, choose a branch, and select **Upload file** when you are -ready. - -![Upload file dialog](img/web_editor_upload_file_dialog_v14_1.png) +1. On the top bar, select **Main menu > Projects** and find your project. +1. On the project page, next to the branch name, select the plus icon (**{plus}**). +1. From the dropdown list, select **Upload file**. +1. Complete the fields. To create a merge request with the uploaded file, ensure the **Start a new merge request with these changes** toggle is turned on. +1. Select **Upload file**. ## Create a directory -To keep files in the repository organized it is often helpful to create a new -directory. - -From a project's files page, select the plus button (`+`) to the right of the branch selector. -Choose **New directory** from the dropdown. +To create a directory in the Web Editor: -![New directory dropdown list](img/web_editor_new_directory_dropdown_v14_1.png) - -In the new directory dialog, enter a directory name, a commit message, and choose -the target branch. Select **Create directory** to finish. - -![New directory dialog](img/web_editor_new_directory_dialog_v14_1.png) +1. On the top bar, select **Main menu > Projects** and find your project. +1. On the project page, next to the branch name, select the plus icon (**{plus}**). +1. From the dropdown list, select **New directory**. +1. Complete the fields. To create a merge request with the new directory, ensure the **Start a new merge request with these changes** toggle is turned on. +1. Select **Create directory**. ## Create a new branch @@ -209,24 +194,16 @@ modify files. ![New push widget](img/web_editor_new_push_widget.png) -## Create a new tag - -Tags help you mark major milestones such as production releases and -release candidates. You can create a tag from a branch or a commit -SHA: - -1. From a project's files page, choose **New tag** from the dropdown list. - - ![New tag dropdown list](img/web_editor_new_tag_dropdown.png) +## Create a tag -1. Give the tag a name such as `v1.0.0`. -1. Choose the branch or SHA from which you want to create this new tag. -1. Optional. Add a message and release notes. The release notes section supports - Markdown format. -1. Optional. Upload an attachment. -1. Select **Create tag**. GitLab redirects you to the tag list page. +You can create tags to mark milestones such as production releases and +release candidates. To create a tag in the Web Editor: - ![New tag page](img/web_editor_new_tag_page.png) +1. On the top bar, select **Main menu > Projects** and find your project. +1. On the project page, next to the branch name, select the plus icon (**{plus}**). +1. From the dropdown list, select **New tag**. +1. Complete the fields. From the **Create from** dropdown list, select an existing branch, tag, or commit SHA. +1. Select **Create tag**. ## Tips diff --git a/lib/api/helpers/award_emoji.rb b/lib/api/helpers/award_emoji.rb index f8417366ea4..f0b3cafc3d2 100644 --- a/lib/api/helpers/award_emoji.rb +++ b/lib/api/helpers/award_emoji.rb @@ -6,7 +6,7 @@ module API def self.awardables [ { type: 'issue', resource: :projects, find_by: :iid, feature_category: :team_planning }, - { type: 'merge_request', resource: :projects, find_by: :iid, feature_category: :code_review }, + { type: 'merge_request', resource: :projects, find_by: :iid, feature_category: :code_review_workflow }, { type: 'snippet', resource: :projects, find_by: :id, feature_category: :source_code_management } ] end diff --git a/lib/api/helpers/discussions_helpers.rb b/lib/api/helpers/discussions_helpers.rb index 182ada54a12..d497bc66015 100644 --- a/lib/api/helpers/discussions_helpers.rb +++ b/lib/api/helpers/discussions_helpers.rb @@ -9,8 +9,8 @@ module API { Issue => :team_planning, Snippet => :source_code_management, - MergeRequest => :code_review, - Commit => :code_review + MergeRequest => :code_review_workflow, + Commit => :code_review_workflow } end end diff --git a/lib/api/helpers/notes_helpers.rb b/lib/api/helpers/notes_helpers.rb index 302dac4abf7..da499abe475 100644 --- a/lib/api/helpers/notes_helpers.rb +++ b/lib/api/helpers/notes_helpers.rb @@ -8,7 +8,7 @@ module API def self.feature_category_per_noteable_type { Issue => :team_planning, - MergeRequest => :code_review, + MergeRequest => :code_review_workflow, Snippet => :source_code_management } end diff --git a/lib/api/helpers/resource_events_helpers.rb b/lib/api/helpers/resource_events_helpers.rb index c47a58e8fce..11cb65056cd 100644 --- a/lib/api/helpers/resource_events_helpers.rb +++ b/lib/api/helpers/resource_events_helpers.rb @@ -7,7 +7,7 @@ module API # This is a method instead of a constant, allowing EE to more easily extend it. { Issue => { feature_category: :team_planning, id_field: 'IID' }, - MergeRequest => { feature_category: :code_review, id_field: 'IID' } + MergeRequest => { feature_category: :code_review_workflow, id_field: 'IID' } } end end diff --git a/lib/api/merge_request_diffs.rb b/lib/api/merge_request_diffs.rb index c7f0f88eacc..e7193035ce0 100644 --- a/lib/api/merge_request_diffs.rb +++ b/lib/api/merge_request_diffs.rb @@ -7,7 +7,7 @@ module API before { authenticate! } - feature_category :code_review + feature_category :code_review_workflow params do requires :id, types: [String, Integer], desc: 'The ID or URL-encoded path of the project' diff --git a/lib/api/merge_requests.rb b/lib/api/merge_requests.rb index 4194f74bce4..25fbeca01dc 100644 --- a/lib/api/merge_requests.rb +++ b/lib/api/merge_requests.rb @@ -13,7 +13,7 @@ module API # These endpoints are defined in `TimeTrackingEndpoints` and is shared by # API::Issues. In order to be able to define the feature category of these # endpoints, we need to define them at the top-level by route. - feature_category :code_review, [ + feature_category :code_review_workflow, [ '/projects/:id/merge_requests/:merge_request_iid/time_estimate', '/projects/:id/merge_requests/:merge_request_iid/reset_time_estimate', '/projects/:id/merge_requests/:merge_request_iid/add_spent_time', @@ -138,7 +138,7 @@ module API use :merge_requests_params use :optional_scope_param end - get feature_category: :code_review, urgency: :low do + get feature_category: :code_review_workflow, urgency: :low do authenticate! unless params[:scope] == 'all' validate_anonymous_search_access! if params[:search].present? validate_search_rate_limit! if declared_params[:search].present? @@ -168,7 +168,7 @@ module API default: true, desc: 'Returns merge requests from non archived projects only.' end - get ":id/merge_requests", feature_category: :code_review, urgency: :low do + get ":id/merge_requests", feature_category: :code_review_workflow, urgency: :low do validate_anonymous_search_access! if declared_params[:search].present? validate_search_rate_limit! if declared_params[:search].present? merge_requests = find_merge_requests(group_id: user_group.id, include_subgroups: true) @@ -235,7 +235,7 @@ module API desc: 'Returns the request having the given `iid`.', documentation: { is_array: true } end - get ":id/merge_requests", feature_category: :code_review, urgency: :low do + get ":id/merge_requests", feature_category: :code_review_workflow, urgency: :low do authorize! :read_merge_request, user_project validate_anonymous_search_access! if declared_params[:search].present? validate_search_rate_limit! if declared_params[:search].present? @@ -281,7 +281,7 @@ module API desc: 'The target project of the merge request defaults to the :id of the project.' use :optional_params end - post ":id/merge_requests", feature_category: :code_review, urgency: :low do + post ":id/merge_requests", feature_category: :code_review_workflow, urgency: :low do Gitlab::QueryLimiting.disable!('https://gitlab.com/gitlab-org/gitlab/-/issues/20770') authorize! :create_merge_request_from, user_project @@ -309,7 +309,7 @@ module API params do requires :merge_request_iid, type: Integer, desc: 'The internal ID of the merge request.' end - delete ":id/merge_requests/:merge_request_iid", feature_category: :code_review, urgency: :low do + delete ":id/merge_requests/:merge_request_iid", feature_category: :code_review_workflow, urgency: :low do merge_request = find_project_merge_request(params[:merge_request_iid]) authorize!(:destroy_merge_request, merge_request) @@ -334,7 +334,7 @@ module API ] tags %w[merge_requests] end - get ':id/merge_requests/:merge_request_iid', feature_category: :code_review, urgency: :low do + get ':id/merge_requests/:merge_request_iid', feature_category: :code_review_workflow, urgency: :low do merge_request = find_merge_request_with_access(params[:merge_request_iid]) present merge_request, @@ -355,7 +355,7 @@ module API ] tags %w[merge_requests] end - get ':id/merge_requests/:merge_request_iid/participants', feature_category: :code_review, urgency: :low do + get ':id/merge_requests/:merge_request_iid/participants', feature_category: :code_review_workflow, urgency: :low do merge_request = find_merge_request_with_access(params[:merge_request_iid]) participants = ::Kaminari.paginate_array(merge_request.visible_participants(current_user)) @@ -371,7 +371,7 @@ module API ] tags %w[merge_requests] end - get ':id/merge_requests/:merge_request_iid/reviewers', feature_category: :code_review, urgency: :low do + get ':id/merge_requests/:merge_request_iid/reviewers', feature_category: :code_review_workflow, urgency: :low do merge_request = find_merge_request_with_access(params[:merge_request_iid]) reviewers = ::Kaminari.paginate_array(merge_request.merge_request_reviewers) @@ -387,7 +387,7 @@ module API ] tags %w[merge_requests] end - get ':id/merge_requests/:merge_request_iid/commits', feature_category: :code_review, urgency: :low do + get ':id/merge_requests/:merge_request_iid/commits', feature_category: :code_review_workflow, urgency: :low do merge_request = find_merge_request_with_access(params[:merge_request_iid]) commits = @@ -405,7 +405,7 @@ module API ] tags %w[merge_requests] end - get ':id/merge_requests/:merge_request_iid/context_commits', feature_category: :code_review, urgency: :high do + get ':id/merge_requests/:merge_request_iid/context_commits', feature_category: :code_review_workflow, urgency: :high do merge_request = find_merge_request_with_access(params[:merge_request_iid]) context_commits = paginate(merge_request.merge_request_context_commits).map(&:to_commit) @@ -429,7 +429,7 @@ module API ] tags %w[merge_requests] end - post ':id/merge_requests/:merge_request_iid/context_commits', feature_category: :code_review do + post ':id/merge_requests/:merge_request_iid/context_commits', feature_category: :code_review_workflow do commit_ids = params[:commits] if commit_ids.size > CONTEXT_COMMITS_POST_LIMIT @@ -466,7 +466,7 @@ module API ] tags %w[merge_requests] end - delete ':id/merge_requests/:merge_request_iid/context_commits', feature_category: :code_review do + delete ':id/merge_requests/:merge_request_iid/context_commits', feature_category: :code_review_workflow do commit_ids = params[:commits] merge_request = find_merge_request_with_access(params[:merge_request_iid]) @@ -490,7 +490,7 @@ module API ] tags %w[merge_requests] end - get ':id/merge_requests/:merge_request_iid/changes', feature_category: :code_review, urgency: :low do + get ':id/merge_requests/:merge_request_iid/changes', feature_category: :code_review_workflow, urgency: :low do merge_request = find_merge_request_with_access(params[:merge_request_iid]) present merge_request, @@ -512,7 +512,7 @@ module API params do use :pagination end - get ':id/merge_requests/:merge_request_iid/diffs', feature_category: :code_review, urgency: :low do + get ':id/merge_requests/:merge_request_iid/diffs', feature_category: :code_review_workflow, urgency: :low do merge_request = find_merge_request_with_access(params[:merge_request_iid]) present paginate(merge_request.merge_request_diff.paginated_diffs(params[:page], params[:per_page])).diffs, with: Entities::Diff @@ -580,7 +580,7 @@ module API use :optional_params at_least_one_of(*::API::MergeRequests.update_params_at_least_one_of) end - put ':id/merge_requests/:merge_request_iid', feature_category: :code_review, urgency: :low do + put ':id/merge_requests/:merge_request_iid', feature_category: :code_review_workflow, urgency: :low do Gitlab::QueryLimiting.disable!('https://gitlab.com/gitlab-org/gitlab/-/issues/20772') merge_request = find_merge_request_with_access(params.delete(:merge_request_iid), :update_merge_request) @@ -622,7 +622,7 @@ module API optional :sha, type: String, desc: 'If present, then this SHA must match the HEAD of the source branch, otherwise the merge fails.' optional :squash, type: Grape::API::Boolean, desc: 'If `true`, the commits are squashed into a single commit on merge.' end - put ':id/merge_requests/:merge_request_iid/merge', feature_category: :code_review, urgency: :low do + put ':id/merge_requests/:merge_request_iid/merge', feature_category: :code_review_workflow, urgency: :low do Gitlab::QueryLimiting.disable!('https://gitlab.com/gitlab-org/gitlab/-/issues/4796') merge_request = find_project_merge_request(params[:merge_request_iid]) @@ -673,7 +673,7 @@ module API ] tags %w[merge_requests] end - get ':id/merge_requests/:merge_request_iid/merge_ref', feature_category: :code_review do + get ':id/merge_requests/:merge_request_iid/merge_ref', feature_category: :code_review_workflow do merge_request = find_project_merge_request(params[:merge_request_iid]) result = ::MergeRequests::MergeabilityCheckService.new(merge_request).execute(recheck: true) @@ -696,7 +696,7 @@ module API ] tags %w[merge_requests] end - post ':id/merge_requests/:merge_request_iid/cancel_merge_when_pipeline_succeeds', feature_category: :code_review do + post ':id/merge_requests/:merge_request_iid/cancel_merge_when_pipeline_succeeds', feature_category: :code_review_workflow do merge_request = find_project_merge_request(params[:merge_request_iid]) unauthorized! unless merge_request.can_cancel_auto_merge?(current_user) @@ -716,7 +716,7 @@ module API params do optional :skip_ci, type: Boolean, desc: 'Set to true to skip creating a CI pipeline.' end - put ':id/merge_requests/:merge_request_iid/rebase', feature_category: :code_review, urgency: :low do + put ':id/merge_requests/:merge_request_iid/rebase', feature_category: :code_review_workflow, urgency: :low do merge_request = find_project_merge_request(params[:merge_request_iid]) authorize_merge_request_rebase!(merge_request) @@ -739,7 +739,7 @@ module API params do use :pagination end - get ':id/merge_requests/:merge_request_iid/closes_issues', feature_category: :code_review, urgency: :low do + get ':id/merge_requests/:merge_request_iid/closes_issues', feature_category: :code_review_workflow, urgency: :low do merge_request = find_merge_request_with_access(params[:merge_request_iid]) issues = ::Kaminari.paginate_array(merge_request.visible_closing_issues_for(current_user)) issues = paginate(issues) diff --git a/lib/api/resource_milestone_events.rb b/lib/api/resource_milestone_events.rb index 5640e88ae6e..3eff3e8ad36 100644 --- a/lib/api/resource_milestone_events.rb +++ b/lib/api/resource_milestone_events.rb @@ -11,7 +11,7 @@ module API { Issue => :team_planning, - MergeRequest => :code_review + MergeRequest => :code_review_workflow }.each do |eventable_type, feature_category| parent_type = eventable_type.parent_class.to_s.underscore eventables_str = eventable_type.to_s.underscore.pluralize diff --git a/lib/api/subscriptions.rb b/lib/api/subscriptions.rb index cda30dc957f..52e5ab30d06 100644 --- a/lib/api/subscriptions.rb +++ b/lib/api/subscriptions.rb @@ -15,7 +15,7 @@ module API entity: Entities::MergeRequest, source: Project, finder: ->(id) { find_merge_request_with_access(id, :update_merge_request) }, - feature_category: :code_review + feature_category: :code_review_workflow }, { type: 'issues', diff --git a/lib/api/suggestions.rb b/lib/api/suggestions.rb index 6260983087f..eee83d5655b 100644 --- a/lib/api/suggestions.rb +++ b/lib/api/suggestions.rb @@ -4,7 +4,7 @@ module API class Suggestions < ::API::Base before { authenticate! } - feature_category :code_review + feature_category :code_review_workflow resource :suggestions do desc 'Apply suggestion patch in the Merge Request it was created' do diff --git a/lib/gitlab/import_export/project/import_export.yml b/lib/gitlab/import_export/project/import_export.yml index 0d9e47b12c5..99364996864 100644 --- a/lib/gitlab/import_export/project/import_export.yml +++ b/lib/gitlab/import_export/project/import_export.yml @@ -137,6 +137,7 @@ included_attributes: ci_cd_settings: - :group_runners_enabled - :runner_token_expiration_interval + - :default_git_depth metrics_setting: - :dashboard_timezone - :external_dashboard_url @@ -719,7 +720,6 @@ included_attributes: - :feature_flags_access_level - :releases_access_level - :infrastructure_access_level - - :allow_merge_on_skipped_pipeline - :auto_devops_deploy_strategy - :auto_devops_enabled - :container_registry_enabled @@ -728,13 +728,14 @@ included_attributes: - :merge_method - :merge_requests_enabled - :snippets_enabled - - :squash_option - :topics - :visibility - :wiki_enabled - :build_git_strategy - :build_enabled - :security_and_compliance_enabled + - :allow_merge_on_skipped_pipeline + - :squash_option resource_milestone_events: - :user_id - :action @@ -1072,6 +1073,9 @@ excluded_attributes: - :sequence methods: + project: + - :allow_merge_on_skipped_pipeline + - :squash_option notes: - :type labels: @@ -1180,6 +1184,7 @@ ee: - :reject_unsigned_commits - :commit_committer_check - :regexp_uses_re2 + - :reject_non_dco_commits unprotect_access_levels: - :access_level - :user_id diff --git a/lib/gitlab/metrics/requests_rack_middleware.rb b/lib/gitlab/metrics/requests_rack_middleware.rb index 0172de8731d..cfdac5264e0 100644 --- a/lib/gitlab/metrics/requests_rack_middleware.rb +++ b/lib/gitlab/metrics/requests_rack_middleware.rb @@ -23,7 +23,7 @@ module Gitlab # with an explosion in unused metric combinations, but we want the # most common ones to be always present. FEATURE_CATEGORIES_TO_INITIALIZE = ['authentication_and_authorization', - 'code_review', 'continuous_integration', + 'code_review_workflow', 'continuous_integration', 'not_owned', 'source_code_management', FEATURE_CATEGORY_DEFAULT].freeze diff --git a/locale/gitlab.pot b/locale/gitlab.pot index 47b744ef423..9a0966da3a6 100644 --- a/locale/gitlab.pot +++ b/locale/gitlab.pot @@ -8069,13 +8069,10 @@ msgstr "" msgid "Change your password or recover your current one" msgstr "" -msgid "ChangeReviewer|Reviewer changed from %{old} to %{new}" +msgid "ChangeReviewer|%{added_reviewers_text}%{removed_reviewers_text}" msgstr "" -msgid "ChangeReviewer|Reviewer changed to %{new}" -msgstr "" - -msgid "ChangeReviewer|Unassigned" +msgid "ChangeReviewer|All reviewers were removed." msgstr "" msgid "ChangeTypeAction|Cherry-pick" @@ -30567,6 +30564,9 @@ msgstr "" msgid "PipelineSchedules|Save pipeline schedule" msgstr "" +msgid "PipelineSchedules|Successfully scheduled a pipeline to run. Go to the %{linkStart}Pipelines page%{linkEnd} for details. " +msgstr "" + msgid "PipelineSchedules|Successfully taken ownership from %{owner}." msgstr "" @@ -30585,6 +30585,9 @@ msgstr "" msgid "PipelineSchedules|There was a problem fetching pipeline schedules." msgstr "" +msgid "PipelineSchedules|There was a problem playing the pipeline schedule." +msgstr "" + msgid "PipelineSchedules|There was a problem taking ownership of the pipeline schedule." msgstr "" diff --git a/spec/config/inject_enterprise_edition_module_spec.rb b/spec/config/inject_enterprise_edition_module_spec.rb index 47cb36c569e..e8c0905ff89 100644 --- a/spec/config/inject_enterprise_edition_module_spec.rb +++ b/spec/config/inject_enterprise_edition_module_spec.rb @@ -2,7 +2,7 @@ require 'fast_spec_helper' -RSpec.describe InjectEnterpriseEditionModule, feature_category: :fulfillment_developer_productivity do +RSpec.describe InjectEnterpriseEditionModule, feature_category: :not_owned do let(:extension_name) { 'FF' } let(:extension_namespace) { Module.new } let(:fish_name) { 'Fish' } diff --git a/spec/controllers/projects/merge_requests/creations_controller_spec.rb b/spec/controllers/projects/merge_requests/creations_controller_spec.rb index ace8c04b819..7db708e0e78 100644 --- a/spec/controllers/projects/merge_requests/creations_controller_spec.rb +++ b/spec/controllers/projects/merge_requests/creations_controller_spec.rb @@ -307,7 +307,7 @@ RSpec.describe Projects::MergeRequests::CreationsController do end end - describe 'GET target_projects', feature_category: :code_review do + describe 'GET target_projects', feature_category: :code_review_workflow do it 'returns target projects JSON' do get :target_projects, params: { namespace_id: project.namespace.to_param, project_id: project } diff --git a/spec/controllers/projects/merge_requests_controller_spec.rb b/spec/controllers/projects/merge_requests_controller_spec.rb index b347c03e5cf..095775b0ddd 100644 --- a/spec/controllers/projects/merge_requests_controller_spec.rb +++ b/spec/controllers/projects/merge_requests_controller_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe Projects::MergeRequestsController, feature_category: :code_review do +RSpec.describe Projects::MergeRequestsController, feature_category: :code_review_workflow do include ProjectForksHelper include Gitlab::Routing using RSpec::Parameterized::TableSyntax diff --git a/spec/features/dashboard/merge_requests_spec.rb b/spec/features/dashboard/merge_requests_spec.rb index 78b690c200a..a146a6987bc 100644 --- a/spec/features/dashboard/merge_requests_spec.rb +++ b/spec/features/dashboard/merge_requests_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'Dashboard Merge Requests', feature_category: :code_review do +RSpec.describe 'Dashboard Merge Requests', feature_category: :code_review_workflow do include Spec::Support::Helpers::Features::SortingHelpers include FilteredSearchHelpers include ProjectForksHelper diff --git a/spec/features/groups/merge_requests_spec.rb b/spec/features/groups/merge_requests_spec.rb index 87f1f422e90..8a3401d0572 100644 --- a/spec/features/groups/merge_requests_spec.rb +++ b/spec/features/groups/merge_requests_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'Group merge requests page', feature_category: :code_review do +RSpec.describe 'Group merge requests page', feature_category: :code_review_workflow do include FilteredSearchHelpers let(:path) { merge_requests_group_path(group) } diff --git a/spec/features/merge_request/batch_comments_spec.rb b/spec/features/merge_request/batch_comments_spec.rb index e16c1ae094b..736c986d0fe 100644 --- a/spec/features/merge_request/batch_comments_spec.rb +++ b/spec/features/merge_request/batch_comments_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'Merge request > Batch comments', :js, feature_category: :code_review do +RSpec.describe 'Merge request > Batch comments', :js, feature_category: :code_review_workflow do include MergeRequestDiffHelpers include RepoHelpers diff --git a/spec/features/merge_request/close_reopen_report_toggle_spec.rb b/spec/features/merge_request/close_reopen_report_toggle_spec.rb index 63ed355b16e..0086943956b 100644 --- a/spec/features/merge_request/close_reopen_report_toggle_spec.rb +++ b/spec/features/merge_request/close_reopen_report_toggle_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'Issuables Close/Reopen/Report toggle', feature_category: :code_review do +RSpec.describe 'Issuables Close/Reopen/Report toggle', feature_category: :code_review_workflow do include IssuablesHelper let(:user) { create(:user) } diff --git a/spec/features/merge_request/maintainer_edits_fork_spec.rb b/spec/features/merge_request/maintainer_edits_fork_spec.rb index bd040a5b894..b8dc3af8a6a 100644 --- a/spec/features/merge_request/maintainer_edits_fork_spec.rb +++ b/spec/features/merge_request/maintainer_edits_fork_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' RSpec.describe 'a maintainer edits files on a source-branch of an MR from a fork', :js, :sidekiq_might_not_need_inline, -feature_category: :code_review do +feature_category: :code_review_workflow do include Spec::Support::Helpers::Features::SourceEditorSpecHelpers include ProjectForksHelper let(:user) { create(:user, username: 'the-maintainer') } diff --git a/spec/features/merge_request/merge_request_discussion_lock_spec.rb b/spec/features/merge_request/merge_request_discussion_lock_spec.rb index b48d4d80647..11ec2a86b43 100644 --- a/spec/features/merge_request/merge_request_discussion_lock_spec.rb +++ b/spec/features/merge_request/merge_request_discussion_lock_spec.rb @@ -4,7 +4,7 @@ require 'spec_helper' -RSpec.describe 'Merge Request Discussion Lock', :js, feature_category: :code_review do +RSpec.describe 'Merge Request Discussion Lock', :js, feature_category: :code_review_workflow do let(:user) { create(:user) } let(:project) { create(:project, :public, :repository) } let(:merge_request) { create(:merge_request, source_project: project, author: user) } diff --git a/spec/features/merge_request/user_accepts_merge_request_spec.rb b/spec/features/merge_request/user_accepts_merge_request_spec.rb index dda22abada0..8ff0c294b24 100644 --- a/spec/features/merge_request/user_accepts_merge_request_spec.rb +++ b/spec/features/merge_request/user_accepts_merge_request_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'User accepts a merge request', :js, :sidekiq_might_not_need_inline, feature_category: :code_review do +RSpec.describe 'User accepts a merge request', :js, :sidekiq_might_not_need_inline, feature_category: :code_review_workflow do let(:merge_request) { create(:merge_request, :simple, source_project: project) } let(:project) { create(:project, :public, :repository) } let(:user) { create(:user) } diff --git a/spec/features/merge_request/user_allows_commits_from_memebers_who_can_merge_spec.rb b/spec/features/merge_request/user_allows_commits_from_memebers_who_can_merge_spec.rb index cf6836b544b..0ff773ef02d 100644 --- a/spec/features/merge_request/user_allows_commits_from_memebers_who_can_merge_spec.rb +++ b/spec/features/merge_request/user_allows_commits_from_memebers_who_can_merge_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' RSpec.describe 'create a merge request, allowing commits from members who can merge to the target branch', :js, -feature_category: :code_review do +feature_category: :code_review_workflow do include ProjectForksHelper let(:user) { create(:user) } let(:target_project) { create(:project, :public, :repository) } diff --git a/spec/features/merge_request/user_approves_spec.rb b/spec/features/merge_request/user_approves_spec.rb index bfb6a3ec8de..5b5ad4468ec 100644 --- a/spec/features/merge_request/user_approves_spec.rb +++ b/spec/features/merge_request/user_approves_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'Merge request > User approves', :js, feature_category: :code_review do +RSpec.describe 'Merge request > User approves', :js, feature_category: :code_review_workflow do let(:user) { create(:user) } let(:project) { create(:project, :public, :repository) } let(:merge_request) { create(:merge_request, source_project: project) } diff --git a/spec/features/merge_request/user_assigns_themselves_reviewer_spec.rb b/spec/features/merge_request/user_assigns_themselves_reviewer_spec.rb index 2b93f88e96b..711b2db8a32 100644 --- a/spec/features/merge_request/user_assigns_themselves_reviewer_spec.rb +++ b/spec/features/merge_request/user_assigns_themselves_reviewer_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'Merge request > User assigns themselves as a reviewer', feature_category: :code_review do +RSpec.describe 'Merge request > User assigns themselves as a reviewer', feature_category: :code_review_workflow do let_it_be(:project) { create(:project, :public, :repository) } let(:user) { project.creator } let(:merge_request) { create(:merge_request, :simple, source_project: project, author: user, description: "test mr") } diff --git a/spec/features/merge_request/user_assigns_themselves_spec.rb b/spec/features/merge_request/user_assigns_themselves_spec.rb index 826904bd165..ed4ea91f704 100644 --- a/spec/features/merge_request/user_assigns_themselves_spec.rb +++ b/spec/features/merge_request/user_assigns_themselves_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'Merge request > User assigns themselves', feature_category: :code_review do +RSpec.describe 'Merge request > User assigns themselves', feature_category: :code_review_workflow do let(:project) { create(:project, :public, :repository) } let(:user) { project.creator } let(:issue1) { create(:issue, project: project) } diff --git a/spec/features/merge_request/user_awards_emoji_spec.rb b/spec/features/merge_request/user_awards_emoji_spec.rb index dceac8d6a69..f43672942ff 100644 --- a/spec/features/merge_request/user_awards_emoji_spec.rb +++ b/spec/features/merge_request/user_awards_emoji_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'Merge request > User awards emoji', :js, feature_category: :code_review do +RSpec.describe 'Merge request > User awards emoji', :js, feature_category: :code_review_workflow do let(:project) { create(:project, :public, :repository) } let(:user) { project.creator } let(:merge_request) { create(:merge_request, source_project: project, author: create(:user)) } diff --git a/spec/features/merge_request/user_clicks_merge_request_tabs_spec.rb b/spec/features/merge_request/user_clicks_merge_request_tabs_spec.rb index 3e3ff91ad19..90cf07831ba 100644 --- a/spec/features/merge_request/user_clicks_merge_request_tabs_spec.rb +++ b/spec/features/merge_request/user_clicks_merge_request_tabs_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'User clicks on merge request tabs', :js, feature_category: :code_review do +RSpec.describe 'User clicks on merge request tabs', :js, feature_category: :code_review_workflow do let(:project) { create(:project, :public, :repository) } let(:merge_request) { create(:merge_request, source_project: project, target_project: project) } diff --git a/spec/features/merge_request/user_closes_reopens_merge_request_state_spec.rb b/spec/features/merge_request/user_closes_reopens_merge_request_state_spec.rb index c5ef6b912fe..537702df12d 100644 --- a/spec/features/merge_request/user_closes_reopens_merge_request_state_spec.rb +++ b/spec/features/merge_request/user_closes_reopens_merge_request_state_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' RSpec.describe 'User closes/reopens a merge request', :js, quarantine: 'https://gitlab.com/gitlab-org/gitlab/-/issues/297500', - feature_category: :code_review do + feature_category: :code_review_workflow do let_it_be(:project) { create(:project, :repository) } let_it_be(:user) { create(:user) } diff --git a/spec/features/merge_request/user_comments_on_commit_spec.rb b/spec/features/merge_request/user_comments_on_commit_spec.rb index 64fe144cd0d..0538f367022 100644 --- a/spec/features/merge_request/user_comments_on_commit_spec.rb +++ b/spec/features/merge_request/user_comments_on_commit_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'User comments on a commit', :js, feature_category: :code_review do +RSpec.describe 'User comments on a commit', :js, feature_category: :code_review_workflow do include MergeRequestDiffHelpers include RepoHelpers diff --git a/spec/features/merge_request/user_comments_on_diff_spec.rb b/spec/features/merge_request/user_comments_on_diff_spec.rb index f1a942d5708..66b87148eb2 100644 --- a/spec/features/merge_request/user_comments_on_diff_spec.rb +++ b/spec/features/merge_request/user_comments_on_diff_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'User comments on a diff', :js, feature_category: :code_review do +RSpec.describe 'User comments on a diff', :js, feature_category: :code_review_workflow do include MergeRequestDiffHelpers include RepoHelpers diff --git a/spec/features/merge_request/user_comments_on_merge_request_spec.rb b/spec/features/merge_request/user_comments_on_merge_request_spec.rb index d5ad78746f4..9335615b4c7 100644 --- a/spec/features/merge_request/user_comments_on_merge_request_spec.rb +++ b/spec/features/merge_request/user_comments_on_merge_request_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'User comments on a merge request', :js, feature_category: :code_review do +RSpec.describe 'User comments on a merge request', :js, feature_category: :code_review_workflow do include RepoHelpers let(:project) { create(:project, :repository) } diff --git a/spec/features/merge_request/user_creates_image_diff_notes_spec.rb b/spec/features/merge_request/user_creates_image_diff_notes_spec.rb index eb7894f4ef7..1d7a3fae371 100644 --- a/spec/features/merge_request/user_creates_image_diff_notes_spec.rb +++ b/spec/features/merge_request/user_creates_image_diff_notes_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'Merge request > User creates image diff notes', :js, feature_category: :code_review do +RSpec.describe 'Merge request > User creates image diff notes', :js, feature_category: :code_review_workflow do include NoteInteractionHelpers let(:project) { create(:project, :public, :repository) } diff --git a/spec/features/merge_request/user_creates_merge_request_spec.rb b/spec/features/merge_request/user_creates_merge_request_spec.rb index 50629f11959..1717069a259 100644 --- a/spec/features/merge_request/user_creates_merge_request_spec.rb +++ b/spec/features/merge_request/user_creates_merge_request_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'User creates a merge request', :js, feature_category: :code_review do +RSpec.describe 'User creates a merge request', :js, feature_category: :code_review_workflow do include ProjectForksHelper shared_examples 'creates a merge request' do diff --git a/spec/features/merge_request/user_creates_mr_spec.rb b/spec/features/merge_request/user_creates_mr_spec.rb index 5effde234cd..523027582b3 100644 --- a/spec/features/merge_request/user_creates_mr_spec.rb +++ b/spec/features/merge_request/user_creates_mr_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'Merge request > User creates MR', feature_category: :code_review do +RSpec.describe 'Merge request > User creates MR', feature_category: :code_review_workflow do include ProjectForksHelper before do diff --git a/spec/features/merge_request/user_customizes_merge_commit_message_spec.rb b/spec/features/merge_request/user_customizes_merge_commit_message_spec.rb index 4f1119d6c33..3c30ef02a19 100644 --- a/spec/features/merge_request/user_customizes_merge_commit_message_spec.rb +++ b/spec/features/merge_request/user_customizes_merge_commit_message_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'Merge request < User customizes merge commit message', :js, feature_category: :code_review do +RSpec.describe 'Merge request < User customizes merge commit message', :js, feature_category: :code_review_workflow do let(:project) { create(:project, :public, :repository) } let(:user) { project.creator } let(:issue_1) { create(:issue, project: project) } diff --git a/spec/features/merge_request/user_edits_assignees_sidebar_spec.rb b/spec/features/merge_request/user_edits_assignees_sidebar_spec.rb index c04040dd6fd..60631027d9d 100644 --- a/spec/features/merge_request/user_edits_assignees_sidebar_spec.rb +++ b/spec/features/merge_request/user_edits_assignees_sidebar_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'Merge request > User edits assignees sidebar', :js, feature_category: :code_review do +RSpec.describe 'Merge request > User edits assignees sidebar', :js, feature_category: :code_review_workflow do let(:project) { create(:project, :public, :repository) } let(:protected_branch) { create(:protected_branch, :maintainers_can_push, name: 'master', project: project) } let(:merge_request) { create(:merge_request, :simple, source_project: project, target_branch: protected_branch.name) } diff --git a/spec/features/merge_request/user_edits_merge_request_spec.rb b/spec/features/merge_request/user_edits_merge_request_spec.rb index 6701c7d91ae..839081d00dc 100644 --- a/spec/features/merge_request/user_edits_merge_request_spec.rb +++ b/spec/features/merge_request/user_edits_merge_request_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'User edits a merge request', :js, feature_category: :code_review do +RSpec.describe 'User edits a merge request', :js, feature_category: :code_review_workflow do let(:project) { create(:project, :repository) } let(:merge_request) { create(:merge_request, source_project: project, target_project: project) } let(:user) { create(:user) } diff --git a/spec/features/merge_request/user_edits_mr_spec.rb b/spec/features/merge_request/user_edits_mr_spec.rb index 18e6827a872..6fcbfd309e2 100644 --- a/spec/features/merge_request/user_edits_mr_spec.rb +++ b/spec/features/merge_request/user_edits_mr_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'Merge request > User edits MR', feature_category: :code_review do +RSpec.describe 'Merge request > User edits MR', feature_category: :code_review_workflow do include ProjectForksHelper before do diff --git a/spec/features/merge_request/user_edits_reviewers_sidebar_spec.rb b/spec/features/merge_request/user_edits_reviewers_sidebar_spec.rb index 38c76314b9e..26a9b955e2d 100644 --- a/spec/features/merge_request/user_edits_reviewers_sidebar_spec.rb +++ b/spec/features/merge_request/user_edits_reviewers_sidebar_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'Merge request > User edits reviewers sidebar', :js, feature_category: :code_review do +RSpec.describe 'Merge request > User edits reviewers sidebar', :js, feature_category: :code_review_workflow do context 'with invite members considerations' do let_it_be(:merge_request) { create(:merge_request) } let_it_be(:project) { merge_request.project } diff --git a/spec/features/merge_request/user_expands_diff_spec.rb b/spec/features/merge_request/user_expands_diff_spec.rb index 8adbdcd310c..9fbb5773eae 100644 --- a/spec/features/merge_request/user_expands_diff_spec.rb +++ b/spec/features/merge_request/user_expands_diff_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'User expands diff', :js, feature_category: :code_review do +RSpec.describe 'User expands diff', :js, feature_category: :code_review_workflow do let(:project) { create(:project, :public, :repository) } let(:merge_request) { create(:merge_request, source_branch: 'expand-collapse-files', source_project: project, target_project: project) } diff --git a/spec/features/merge_request/user_interacts_with_batched_mr_diffs_spec.rb b/spec/features/merge_request/user_interacts_with_batched_mr_diffs_spec.rb index 1b9b3941714..a013666a496 100644 --- a/spec/features/merge_request/user_interacts_with_batched_mr_diffs_spec.rb +++ b/spec/features/merge_request/user_interacts_with_batched_mr_diffs_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'Batch diffs', :js, feature_category: :code_review do +RSpec.describe 'Batch diffs', :js, feature_category: :code_review_workflow do include MergeRequestDiffHelpers include RepoHelpers diff --git a/spec/features/merge_request/user_locks_discussion_spec.rb b/spec/features/merge_request/user_locks_discussion_spec.rb index 1bfd52d49e8..a603a5c1e0b 100644 --- a/spec/features/merge_request/user_locks_discussion_spec.rb +++ b/spec/features/merge_request/user_locks_discussion_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'Merge request > User locks discussion', :js, feature_category: :code_review do +RSpec.describe 'Merge request > User locks discussion', :js, feature_category: :code_review_workflow do let(:user) { create(:user) } let(:project) { create(:project, :public, :repository) } let(:merge_request) { create(:merge_request, source_project: project) } diff --git a/spec/features/merge_request/user_manages_subscription_spec.rb b/spec/features/merge_request/user_manages_subscription_spec.rb index 16d869fc5a1..d4ccc4a93b5 100644 --- a/spec/features/merge_request/user_manages_subscription_spec.rb +++ b/spec/features/merge_request/user_manages_subscription_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'User manages subscription', :js, feature_category: :code_review do +RSpec.describe 'User manages subscription', :js, feature_category: :code_review_workflow do let(:project) { create(:project, :public, :repository) } let(:merge_request) { create(:merge_request, source_project: project, target_project: project) } let(:user) { create(:user) } diff --git a/spec/features/merge_request/user_marks_merge_request_as_draft_spec.rb b/spec/features/merge_request/user_marks_merge_request_as_draft_spec.rb index 201cdc94b56..8cbc2b975e4 100644 --- a/spec/features/merge_request/user_marks_merge_request_as_draft_spec.rb +++ b/spec/features/merge_request/user_marks_merge_request_as_draft_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'Merge request > User marks merge request as draft', :js, feature_category: :code_review do +RSpec.describe 'Merge request > User marks merge request as draft', :js, feature_category: :code_review_workflow do let(:user) { create(:user) } let(:project) { create(:project, :public, :repository) } let(:merge_request) { create(:merge_request, source_project: project) } diff --git a/spec/features/merge_request/user_merges_immediately_spec.rb b/spec/features/merge_request/user_merges_immediately_spec.rb index b0aeea997f0..79c166434aa 100644 --- a/spec/features/merge_request/user_merges_immediately_spec.rb +++ b/spec/features/merge_request/user_merges_immediately_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'Merge requests > User merges immediately', :js, feature_category: :code_review do +RSpec.describe 'Merge requests > User merges immediately', :js, feature_category: :code_review_workflow do let(:project) { create(:project, :public, :repository) } let(:user) { project.creator } let!(:merge_request) do diff --git a/spec/features/merge_request/user_merges_merge_request_spec.rb b/spec/features/merge_request/user_merges_merge_request_spec.rb index 4196fdd5dac..6ffb33603d5 100644 --- a/spec/features/merge_request/user_merges_merge_request_spec.rb +++ b/spec/features/merge_request/user_merges_merge_request_spec.rb @@ -2,7 +2,7 @@ require "spec_helper" -RSpec.describe "User merges a merge request", :js, feature_category: :code_review do +RSpec.describe "User merges a merge request", :js, feature_category: :code_review_workflow do let(:user) { project.first_owner } before do diff --git a/spec/features/merge_request/user_merges_only_if_pipeline_succeeds_spec.rb b/spec/features/merge_request/user_merges_only_if_pipeline_succeeds_spec.rb index 447418b5a4b..c73ba1bdbe5 100644 --- a/spec/features/merge_request/user_merges_only_if_pipeline_succeeds_spec.rb +++ b/spec/features/merge_request/user_merges_only_if_pipeline_succeeds_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'Merge request > User merges only if pipeline succeeds', :js, feature_category: :code_review do +RSpec.describe 'Merge request > User merges only if pipeline succeeds', :js, feature_category: :code_review_workflow do let(:merge_request) { create(:merge_request_with_diffs) } let(:project) { merge_request.target_project } diff --git a/spec/features/merge_request/user_merges_when_pipeline_succeeds_spec.rb b/spec/features/merge_request/user_merges_when_pipeline_succeeds_spec.rb index 78a21527794..6d2c8f15a82 100644 --- a/spec/features/merge_request/user_merges_when_pipeline_succeeds_spec.rb +++ b/spec/features/merge_request/user_merges_when_pipeline_succeeds_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'Merge request > User merges when pipeline succeeds', :js, feature_category: :code_review do +RSpec.describe 'Merge request > User merges when pipeline succeeds', :js, feature_category: :code_review_workflow do let(:project) { create(:project, :public, :repository) } let(:user) { project.creator } let(:merge_request) do diff --git a/spec/features/merge_request/user_opens_checkout_branch_modal_spec.rb b/spec/features/merge_request/user_opens_checkout_branch_modal_spec.rb index 116de50f2a2..7cb1c95f6dc 100644 --- a/spec/features/merge_request/user_opens_checkout_branch_modal_spec.rb +++ b/spec/features/merge_request/user_opens_checkout_branch_modal_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'Merge request > User opens checkout branch modal', :js, feature_category: :code_review do +RSpec.describe 'Merge request > User opens checkout branch modal', :js, feature_category: :code_review_workflow do include ProjectForksHelper let(:project) { create(:project, :public, :repository) } diff --git a/spec/features/merge_request/user_opens_context_commits_modal_spec.rb b/spec/features/merge_request/user_opens_context_commits_modal_spec.rb index f32a51cfcd4..99764e2c052 100644 --- a/spec/features/merge_request/user_opens_context_commits_modal_spec.rb +++ b/spec/features/merge_request/user_opens_context_commits_modal_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'Merge request > Context commits', :js, feature_category: :code_review do +RSpec.describe 'Merge request > Context commits', :js, feature_category: :code_review_workflow do let(:user) { create(:user) } let(:project) { create(:project, :public, :repository) } let(:merge_request) { create(:merge_request, source_project: project) } diff --git a/spec/features/merge_request/user_posts_diff_notes_spec.rb b/spec/features/merge_request/user_posts_diff_notes_spec.rb index f2ec0e2df6d..a74a8b1cd5a 100644 --- a/spec/features/merge_request/user_posts_diff_notes_spec.rb +++ b/spec/features/merge_request/user_posts_diff_notes_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'Merge request > User posts diff notes', :js, feature_category: :code_review do +RSpec.describe 'Merge request > User posts diff notes', :js, feature_category: :code_review_workflow do include MergeRequestDiffHelpers include Spec::Support::Helpers::ModalHelpers diff --git a/spec/features/merge_request/user_posts_notes_spec.rb b/spec/features/merge_request/user_posts_notes_spec.rb index 194e04a9544..f167ab8fe8a 100644 --- a/spec/features/merge_request/user_posts_notes_spec.rb +++ b/spec/features/merge_request/user_posts_notes_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'Merge request > User posts notes', :js, feature_category: :code_review do +RSpec.describe 'Merge request > User posts notes', :js, feature_category: :code_review_workflow do include NoteInteractionHelpers let_it_be(:project) { create(:project, :repository) } diff --git a/spec/features/merge_request/user_rebases_merge_request_spec.rb b/spec/features/merge_request/user_rebases_merge_request_spec.rb index c3ee5ddc3b1..1b46b4e1d7f 100644 --- a/spec/features/merge_request/user_rebases_merge_request_spec.rb +++ b/spec/features/merge_request/user_rebases_merge_request_spec.rb @@ -2,7 +2,7 @@ require "spec_helper" -RSpec.describe "User rebases a merge request", :js, feature_category: :code_review do +RSpec.describe "User rebases a merge request", :js, feature_category: :code_review_workflow do let(:merge_request) { create(:merge_request, :simple, source_project: project) } let(:user) { project.first_owner } diff --git a/spec/features/merge_request/user_resolves_conflicts_spec.rb b/spec/features/merge_request/user_resolves_conflicts_spec.rb index d4c80c1e9e2..7b1afd786f7 100644 --- a/spec/features/merge_request/user_resolves_conflicts_spec.rb +++ b/spec/features/merge_request/user_resolves_conflicts_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'Merge request > User resolves conflicts', :js, feature_category: :code_review do +RSpec.describe 'Merge request > User resolves conflicts', :js, feature_category: :code_review_workflow do include Spec::Support::Helpers::Features::SourceEditorSpecHelpers let(:project) { create(:project, :repository) } diff --git a/spec/features/merge_request/user_resolves_diff_notes_and_discussions_resolve_spec.rb b/spec/features/merge_request/user_resolves_diff_notes_and_discussions_resolve_spec.rb index f0507e94424..c3b9068d708 100644 --- a/spec/features/merge_request/user_resolves_diff_notes_and_discussions_resolve_spec.rb +++ b/spec/features/merge_request/user_resolves_diff_notes_and_discussions_resolve_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'Merge request > User resolves diff notes and threads', :js, feature_category: :code_review do +RSpec.describe 'Merge request > User resolves diff notes and threads', :js, feature_category: :code_review_workflow do let(:project) { create(:project, :public, :repository) } let(:user) { project.creator } let(:guest) { create(:user) } diff --git a/spec/features/merge_request/user_resolves_outdated_diff_discussions_spec.rb b/spec/features/merge_request/user_resolves_outdated_diff_discussions_spec.rb index a7508ede1a1..5c41ac79552 100644 --- a/spec/features/merge_request/user_resolves_outdated_diff_discussions_spec.rb +++ b/spec/features/merge_request/user_resolves_outdated_diff_discussions_spec.rb @@ -2,7 +2,8 @@ require 'spec_helper' -RSpec.describe 'Merge request > User resolves outdated diff discussions', :js, feature_category: :code_review do +RSpec.describe 'Merge request > User resolves outdated diff discussions', + :js, feature_category: :code_review_workflow do let(:project) { create(:project, :repository, :public) } let(:merge_request) do diff --git a/spec/features/merge_request/user_resolves_wip_mr_spec.rb b/spec/features/merge_request/user_resolves_wip_mr_spec.rb index b7f20a16a3f..8a19a72f6ae 100644 --- a/spec/features/merge_request/user_resolves_wip_mr_spec.rb +++ b/spec/features/merge_request/user_resolves_wip_mr_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'Merge request > User resolves Draft', :js, feature_category: :code_review do +RSpec.describe 'Merge request > User resolves Draft', :js, feature_category: :code_review_workflow do let(:project) { create(:project, :public, :repository) } let(:user) { project.creator } let(:merge_request) do diff --git a/spec/features/merge_request/user_reverts_merge_request_spec.rb b/spec/features/merge_request/user_reverts_merge_request_spec.rb index edfa9267871..43ce473b407 100644 --- a/spec/features/merge_request/user_reverts_merge_request_spec.rb +++ b/spec/features/merge_request/user_reverts_merge_request_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'User reverts a merge request', :js, feature_category: :code_review do +RSpec.describe 'User reverts a merge request', :js, feature_category: :code_review_workflow do let(:merge_request) { create(:merge_request, :simple, source_project: project) } let(:project) { create(:project, :public, :repository) } let(:user) { create(:user) } diff --git a/spec/features/merge_request/user_reviews_image_spec.rb b/spec/features/merge_request/user_reviews_image_spec.rb index 5814dc6b58c..815b006d029 100644 --- a/spec/features/merge_request/user_reviews_image_spec.rb +++ b/spec/features/merge_request/user_reviews_image_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'Merge request > image review', :js, feature_category: :code_review do +RSpec.describe 'Merge request > image review', :js, feature_category: :code_review_workflow do include MergeRequestDiffHelpers include RepoHelpers diff --git a/spec/features/merge_request/user_scrolls_to_note_on_load_spec.rb b/spec/features/merge_request/user_scrolls_to_note_on_load_spec.rb index fdd2aeec274..1c8bb903f7d 100644 --- a/spec/features/merge_request/user_scrolls_to_note_on_load_spec.rb +++ b/spec/features/merge_request/user_scrolls_to_note_on_load_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'Merge request > User scrolls to note on load', :js, feature_category: :code_review do +RSpec.describe 'Merge request > User scrolls to note on load', :js, feature_category: :code_review_workflow do let(:project) { create(:project, :public, :repository) } let(:user) { project.creator } let(:merge_request) { create(:merge_request, source_project: project, author: user) } diff --git a/spec/features/merge_request/user_sees_avatar_on_diff_notes_spec.rb b/spec/features/merge_request/user_sees_avatar_on_diff_notes_spec.rb index 8c2fc62d16f..94393ea00e4 100644 --- a/spec/features/merge_request/user_sees_avatar_on_diff_notes_spec.rb +++ b/spec/features/merge_request/user_sees_avatar_on_diff_notes_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' include Spec::Support::Helpers::ModalHelpers # rubocop:disable Style/MixinUsage -RSpec.describe 'Merge request > User sees avatars on diff notes', :js, feature_category: :code_review do +RSpec.describe 'Merge request > User sees avatars on diff notes', :js, feature_category: :code_review_workflow do include NoteInteractionHelpers include Spec::Support::Helpers::ModalHelpers include MergeRequestDiffHelpers diff --git a/spec/features/merge_request/user_sees_breadcrumb_links_spec.rb b/spec/features/merge_request/user_sees_breadcrumb_links_spec.rb index 0b6aefcdab6..4d91669f206 100644 --- a/spec/features/merge_request/user_sees_breadcrumb_links_spec.rb +++ b/spec/features/merge_request/user_sees_breadcrumb_links_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'New merge request breadcrumb', feature_category: :code_review do +RSpec.describe 'New merge request breadcrumb', feature_category: :code_review_workflow do let(:project) { create(:project, :repository) } let(:user) { project.creator } diff --git a/spec/features/merge_request/user_sees_check_out_branch_modal_spec.rb b/spec/features/merge_request/user_sees_check_out_branch_modal_spec.rb index bbfa2be47cc..6909e335b81 100644 --- a/spec/features/merge_request/user_sees_check_out_branch_modal_spec.rb +++ b/spec/features/merge_request/user_sees_check_out_branch_modal_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'Merge request > User sees check out branch modal', :js, feature_category: :code_review do +RSpec.describe 'Merge request > User sees check out branch modal', :js, feature_category: :code_review_workflow do let(:project) { create(:project, :public, :repository) } let(:user) { project.creator } let(:merge_request) { create(:merge_request, source_project: project) } diff --git a/spec/features/merge_request/user_sees_cherry_pick_modal_spec.rb b/spec/features/merge_request/user_sees_cherry_pick_modal_spec.rb index 07b7cb1e8d8..411a2865b1a 100644 --- a/spec/features/merge_request/user_sees_cherry_pick_modal_spec.rb +++ b/spec/features/merge_request/user_sees_cherry_pick_modal_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'Merge request > User cherry-picks', :js, feature_category: :code_review do +RSpec.describe 'Merge request > User cherry-picks', :js, feature_category: :code_review_workflow do let(:group) { create(:group) } let(:project) { create(:project, :repository, namespace: group) } let(:user) { project.creator } diff --git a/spec/features/merge_request/user_sees_closing_issues_message_spec.rb b/spec/features/merge_request/user_sees_closing_issues_message_spec.rb index 9a1d47a13b5..3d41d5e24b2 100644 --- a/spec/features/merge_request/user_sees_closing_issues_message_spec.rb +++ b/spec/features/merge_request/user_sees_closing_issues_message_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'Merge request > User sees closing issues message', :js, feature_category: :code_review do +RSpec.describe 'Merge request > User sees closing issues message', :js, feature_category: :code_review_workflow do let(:project) { create(:project, :public, :repository) } let(:user) { project.creator } let(:issue_1) { create(:issue, project: project) } diff --git a/spec/features/merge_request/user_sees_deleted_target_branch_spec.rb b/spec/features/merge_request/user_sees_deleted_target_branch_spec.rb index 16ae8b4304b..5011bd6de14 100644 --- a/spec/features/merge_request/user_sees_deleted_target_branch_spec.rb +++ b/spec/features/merge_request/user_sees_deleted_target_branch_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'Merge request > User sees deleted target branch', :js, feature_category: :code_review do +RSpec.describe 'Merge request > User sees deleted target branch', :js, feature_category: :code_review_workflow do let(:merge_request) { create(:merge_request) } let(:project) { merge_request.project } let(:user) { project.creator } diff --git a/spec/features/merge_request/user_sees_diff_spec.rb b/spec/features/merge_request/user_sees_diff_spec.rb index 101ff8fc152..daeeaa1bd88 100644 --- a/spec/features/merge_request/user_sees_diff_spec.rb +++ b/spec/features/merge_request/user_sees_diff_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'Merge request > User sees diff', :js, feature_category: :code_review do +RSpec.describe 'Merge request > User sees diff', :js, feature_category: :code_review_workflow do include ProjectForksHelper include RepoHelpers include MergeRequestDiffHelpers diff --git a/spec/features/merge_request/user_sees_discussions_navigation_spec.rb b/spec/features/merge_request/user_sees_discussions_navigation_spec.rb index a22fb2cff00..2afe7e3edba 100644 --- a/spec/features/merge_request/user_sees_discussions_navigation_spec.rb +++ b/spec/features/merge_request/user_sees_discussions_navigation_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'Merge request > User sees discussions navigation', :js, feature_category: :code_review do +RSpec.describe 'Merge request > User sees discussions navigation', :js, feature_category: :code_review_workflow do let_it_be(:project) { create(:project, :public, :repository) } let_it_be(:user) { project.creator } let_it_be(:merge_request) { create(:merge_request, source_project: project) } diff --git a/spec/features/merge_request/user_sees_discussions_spec.rb b/spec/features/merge_request/user_sees_discussions_spec.rb index 0eae6e39eec..3ca5ac23ddb 100644 --- a/spec/features/merge_request/user_sees_discussions_spec.rb +++ b/spec/features/merge_request/user_sees_discussions_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'Merge request > User sees threads', :js, feature_category: :code_review do +RSpec.describe 'Merge request > User sees threads', :js, feature_category: :code_review_workflow do let(:project) { create(:project, :public, :repository) } let(:user) { project.creator } let(:merge_request) { create(:merge_request, source_project: project) } diff --git a/spec/features/merge_request/user_sees_merge_button_depending_on_unresolved_discussions_spec.rb b/spec/features/merge_request/user_sees_merge_button_depending_on_unresolved_discussions_spec.rb index 6db5480abb4..b83580565e4 100644 --- a/spec/features/merge_request/user_sees_merge_button_depending_on_unresolved_discussions_spec.rb +++ b/spec/features/merge_request/user_sees_merge_button_depending_on_unresolved_discussions_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' RSpec.describe 'Merge request > User sees merge button depending on unresolved threads', :js, -feature_category: :code_review do +feature_category: :code_review_workflow do let(:project) { create(:project, :repository) } let(:user) { project.creator } let!(:merge_request) { create(:merge_request_with_diff_notes, source_project: project, author: user) } diff --git a/spec/features/merge_request/user_sees_merge_request_pipelines_spec.rb b/spec/features/merge_request/user_sees_merge_request_pipelines_spec.rb index f7594c717d1..458746f0854 100644 --- a/spec/features/merge_request/user_sees_merge_request_pipelines_spec.rb +++ b/spec/features/merge_request/user_sees_merge_request_pipelines_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'Merge request > User sees pipelines triggered by merge request', :js, feature_category: :code_review do +RSpec.describe 'Merge request > User sees pipelines triggered by merge request', :js, feature_category: :code_review_workflow do include ProjectForksHelper include TestReportsHelper diff --git a/spec/features/merge_request/user_sees_merge_widget_spec.rb b/spec/features/merge_request/user_sees_merge_widget_spec.rb index e5aa0f6e64d..237f361bd72 100644 --- a/spec/features/merge_request/user_sees_merge_widget_spec.rb +++ b/spec/features/merge_request/user_sees_merge_widget_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'Merge request > User sees merge widget', :js, feature_category: :code_review do +RSpec.describe 'Merge request > User sees merge widget', :js, feature_category: :code_review_workflow do include ProjectForksHelper include TestReportsHelper include ReactiveCachingHelpers diff --git a/spec/features/merge_request/user_sees_mr_from_deleted_forked_project_spec.rb b/spec/features/merge_request/user_sees_mr_from_deleted_forked_project_spec.rb index 4bfdce29c6a..fac0a84f155 100644 --- a/spec/features/merge_request/user_sees_mr_from_deleted_forked_project_spec.rb +++ b/spec/features/merge_request/user_sees_mr_from_deleted_forked_project_spec.rb @@ -2,7 +2,8 @@ require 'spec_helper' -RSpec.describe 'Merge request > User sees MR from deleted forked project', :js, feature_category: :code_review do +RSpec.describe 'Merge request > User sees MR from deleted forked project', + :js, feature_category: :code_review_workflow do include ProjectForksHelper let(:project) { create(:project, :public, :repository) } diff --git a/spec/features/merge_request/user_sees_mr_with_deleted_source_branch_spec.rb b/spec/features/merge_request/user_sees_mr_with_deleted_source_branch_spec.rb index 8e6f6d04676..9b46cf37648 100644 --- a/spec/features/merge_request/user_sees_mr_with_deleted_source_branch_spec.rb +++ b/spec/features/merge_request/user_sees_mr_with_deleted_source_branch_spec.rb @@ -5,7 +5,8 @@ require 'spec_helper' # This test serves as a regression test for a bug that caused an error # message to be shown by JavaScript when the source branch was deleted. # Please do not remove ":js". -RSpec.describe 'Merge request > User sees MR with deleted source branch', :js, feature_category: :code_review do +RSpec.describe 'Merge request > User sees MR with deleted source branch', + :js, feature_category: :code_review_workflow do let(:project) { create(:project, :public, :repository) } let(:merge_request) { create(:merge_request, source_project: project) } let(:user) { project.creator } diff --git a/spec/features/merge_request/user_sees_notes_from_forked_project_spec.rb b/spec/features/merge_request/user_sees_notes_from_forked_project_spec.rb index 8f011f5616b..ac195dd9873 100644 --- a/spec/features/merge_request/user_sees_notes_from_forked_project_spec.rb +++ b/spec/features/merge_request/user_sees_notes_from_forked_project_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'Merge request > User sees notes from forked project', :js, feature_category: :code_review do +RSpec.describe 'Merge request > User sees notes from forked project', :js, feature_category: :code_review_workflow do include ProjectForksHelper let(:project) { create(:project, :public, :repository) } diff --git a/spec/features/merge_request/user_sees_page_metadata_spec.rb b/spec/features/merge_request/user_sees_page_metadata_spec.rb index f97732f91a7..50fc60e342e 100644 --- a/spec/features/merge_request/user_sees_page_metadata_spec.rb +++ b/spec/features/merge_request/user_sees_page_metadata_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'Merge request > User sees page metadata', feature_category: :code_review do +RSpec.describe 'Merge request > User sees page metadata', feature_category: :code_review_workflow do let(:merge_request) { create(:merge_request, description: '**Lorem** _ipsum_ dolor sit [amet](https://example.com)') } let(:project) { merge_request.target_project } let(:user) { project.creator } diff --git a/spec/features/merge_request/user_sees_pipelines_spec.rb b/spec/features/merge_request/user_sees_pipelines_spec.rb index 8faaf6bf39b..cab940ba704 100644 --- a/spec/features/merge_request/user_sees_pipelines_spec.rb +++ b/spec/features/merge_request/user_sees_pipelines_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'Merge request > User sees pipelines', :js, feature_category: :code_review do +RSpec.describe 'Merge request > User sees pipelines', :js, feature_category: :code_review_workflow do describe 'pipeline tab' do let(:merge_request) { create(:merge_request) } let(:project) { merge_request.target_project } diff --git a/spec/features/merge_request/user_sees_system_notes_spec.rb b/spec/features/merge_request/user_sees_system_notes_spec.rb index 40402c95d6f..d547aa84bdd 100644 --- a/spec/features/merge_request/user_sees_system_notes_spec.rb +++ b/spec/features/merge_request/user_sees_system_notes_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'Merge request > User sees system notes', :js, feature_category: :code_review do +RSpec.describe 'Merge request > User sees system notes', :js, feature_category: :code_review_workflow do let(:public_project) { create(:project, :public, :repository) } let(:private_project) { create(:project, :private, :repository) } let(:user) { private_project.creator } diff --git a/spec/features/merge_request/user_sees_versions_spec.rb b/spec/features/merge_request/user_sees_versions_spec.rb index f0ff6e1769a..f94b288300a 100644 --- a/spec/features/merge_request/user_sees_versions_spec.rb +++ b/spec/features/merge_request/user_sees_versions_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'Merge request > User sees versions', :js, feature_category: :code_review do +RSpec.describe 'Merge request > User sees versions', :js, feature_category: :code_review_workflow do include MergeRequestDiffHelpers let(:merge_request) do diff --git a/spec/features/merge_request/user_sees_wip_help_message_spec.rb b/spec/features/merge_request/user_sees_wip_help_message_spec.rb index 1a751af6ded..fdefe5ffb06 100644 --- a/spec/features/merge_request/user_sees_wip_help_message_spec.rb +++ b/spec/features/merge_request/user_sees_wip_help_message_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'Merge request > User sees draft help message', feature_category: :code_review do +RSpec.describe 'Merge request > User sees draft help message', feature_category: :code_review_workflow do let(:project) { create(:project, :public, :repository) } let(:user) { project.creator } diff --git a/spec/features/merge_request/user_selects_branches_for_new_mr_spec.rb b/spec/features/merge_request/user_selects_branches_for_new_mr_spec.rb index 8b6c9dc18f6..b7784de12b9 100644 --- a/spec/features/merge_request/user_selects_branches_for_new_mr_spec.rb +++ b/spec/features/merge_request/user_selects_branches_for_new_mr_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'Merge request > User selects branches for new MR', :js, feature_category: :code_review do +RSpec.describe 'Merge request > User selects branches for new MR', :js, feature_category: :code_review_workflow do let(:project) { create(:project, :public, :repository) } let(:user) { project.creator } diff --git a/spec/features/merge_request/user_squashes_merge_request_spec.rb b/spec/features/merge_request/user_squashes_merge_request_spec.rb index 43590aed3cc..63faf830f7e 100644 --- a/spec/features/merge_request/user_squashes_merge_request_spec.rb +++ b/spec/features/merge_request/user_squashes_merge_request_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'User squashes a merge request', :js, feature_category: :code_review do +RSpec.describe 'User squashes a merge request', :js, feature_category: :code_review_workflow do let(:user) { create(:user) } let(:project) { create(:project, :repository) } let(:source_branch) { 'csv' } diff --git a/spec/features/merge_request/user_suggests_changes_on_diff_spec.rb b/spec/features/merge_request/user_suggests_changes_on_diff_spec.rb index 5a5494a2fe9..efd88df0f97 100644 --- a/spec/features/merge_request/user_suggests_changes_on_diff_spec.rb +++ b/spec/features/merge_request/user_suggests_changes_on_diff_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'User comments on a diff', :js, feature_category: :code_review do +RSpec.describe 'User comments on a diff', :js, feature_category: :code_review_workflow do include MergeRequestDiffHelpers include RepoHelpers diff --git a/spec/features/merge_request/user_toggles_whitespace_changes_spec.rb b/spec/features/merge_request/user_toggles_whitespace_changes_spec.rb index 993eb59cb74..15715a6d775 100644 --- a/spec/features/merge_request/user_toggles_whitespace_changes_spec.rb +++ b/spec/features/merge_request/user_toggles_whitespace_changes_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'Merge request > User toggles whitespace changes', :js, feature_category: :code_review do +RSpec.describe 'Merge request > User toggles whitespace changes', :js, feature_category: :code_review_workflow do let(:merge_request) { create(:merge_request) } let(:project) { merge_request.project } let(:user) { project.creator } diff --git a/spec/features/merge_request/user_tries_to_access_private_project_info_through_new_mr_spec.rb b/spec/features/merge_request/user_tries_to_access_private_project_info_through_new_mr_spec.rb index 5095457509a..5770f5ab94d 100644 --- a/spec/features/merge_request/user_tries_to_access_private_project_info_through_new_mr_spec.rb +++ b/spec/features/merge_request/user_tries_to_access_private_project_info_through_new_mr_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' RSpec.describe 'Merge Request > User tries to access private project information through the new mr page', -feature_category: :code_review do +feature_category: :code_review_workflow do let(:current_user) { create(:user) } let(:private_project) do create(:project, :public, :repository, diff --git a/spec/features/merge_request/user_uses_quick_actions_spec.rb b/spec/features/merge_request/user_uses_quick_actions_spec.rb index 99befbace74..1a88918da65 100644 --- a/spec/features/merge_request/user_uses_quick_actions_spec.rb +++ b/spec/features/merge_request/user_uses_quick_actions_spec.rb @@ -8,7 +8,7 @@ require 'spec_helper' # Because this kind of spec takes more time to run there is no need to add new ones # for each existing quick action unless they test something not tested by existing tests. RSpec.describe 'Merge request > User uses quick actions', :js, :use_clean_rails_redis_caching, -feature_category: :code_review do +feature_category: :code_review_workflow do include Spec::Support::Helpers::Features::NotesHelpers let(:project) { create(:project, :public, :repository) } diff --git a/spec/features/merge_request/user_views_auto_expanding_diff_spec.rb b/spec/features/merge_request/user_views_auto_expanding_diff_spec.rb index 19a77a9192c..57072421986 100644 --- a/spec/features/merge_request/user_views_auto_expanding_diff_spec.rb +++ b/spec/features/merge_request/user_views_auto_expanding_diff_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'User views diffs file-by-file', :js, feature_category: :code_review do +RSpec.describe 'User views diffs file-by-file', :js, feature_category: :code_review_workflow do let(:merge_request) do create(:merge_request, source_branch: 'squash-large-files', source_project: project, target_project: project) end diff --git a/spec/features/merge_request/user_views_diffs_commit_spec.rb b/spec/features/merge_request/user_views_diffs_commit_spec.rb index 84cbfb35539..ba1b41982c9 100644 --- a/spec/features/merge_request/user_views_diffs_commit_spec.rb +++ b/spec/features/merge_request/user_views_diffs_commit_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'User views diff by commit', :js, feature_category: :code_review do +RSpec.describe 'User views diff by commit', :js, feature_category: :code_review_workflow do let(:merge_request) do create(:merge_request_with_diffs, source_project: project, target_project: project, source_branch: 'merge-test') end diff --git a/spec/features/merge_request/user_views_diffs_file_by_file_spec.rb b/spec/features/merge_request/user_views_diffs_file_by_file_spec.rb index 9db6f86e14d..4d59bd4ccb0 100644 --- a/spec/features/merge_request/user_views_diffs_file_by_file_spec.rb +++ b/spec/features/merge_request/user_views_diffs_file_by_file_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'User views diffs file-by-file', :js, feature_category: :code_review do +RSpec.describe 'User views diffs file-by-file', :js, feature_category: :code_review_workflow do let(:merge_request) do create(:merge_request_with_diffs, source_project: project, target_project: project, source_branch: 'merge-test') end diff --git a/spec/features/merge_request/user_views_diffs_spec.rb b/spec/features/merge_request/user_views_diffs_spec.rb index 7363f6dfb32..6b759625c61 100644 --- a/spec/features/merge_request/user_views_diffs_spec.rb +++ b/spec/features/merge_request/user_views_diffs_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'User views diffs', :js, feature_category: :code_review do +RSpec.describe 'User views diffs', :js, feature_category: :code_review_workflow do let(:merge_request) do create(:merge_request_with_diffs, source_project: project, target_project: project, source_branch: 'merge-test') end diff --git a/spec/features/merge_request/user_views_merge_request_from_deleted_fork_spec.rb b/spec/features/merge_request/user_views_merge_request_from_deleted_fork_spec.rb index 2a9275adfcf..8f448d06db1 100644 --- a/spec/features/merge_request/user_views_merge_request_from_deleted_fork_spec.rb +++ b/spec/features/merge_request/user_views_merge_request_from_deleted_fork_spec.rb @@ -6,7 +6,7 @@ require 'spec_helper' # updated. # This can occur when the fork a merge request is created from is in the process # of being destroyed. -RSpec.describe 'User views merged merge request from deleted fork', feature_category: :code_review do +RSpec.describe 'User views merged merge request from deleted fork', feature_category: :code_review_workflow do include ProjectForksHelper let(:project) { create(:project, :repository) } diff --git a/spec/features/merge_request/user_views_open_merge_request_spec.rb b/spec/features/merge_request/user_views_open_merge_request_spec.rb index 8b9e973217d..e481e3f2dfb 100644 --- a/spec/features/merge_request/user_views_open_merge_request_spec.rb +++ b/spec/features/merge_request/user_views_open_merge_request_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'User views an open merge request', feature_category: :code_review do +RSpec.describe 'User views an open merge request', feature_category: :code_review_workflow do let(:merge_request) do create(:merge_request, source_project: project, target_project: project, description: '# Description header') end diff --git a/spec/features/merge_requests/filters_generic_behavior_spec.rb b/spec/features/merge_requests/filters_generic_behavior_spec.rb index 0d6b5edcbab..197b9fa770d 100644 --- a/spec/features/merge_requests/filters_generic_behavior_spec.rb +++ b/spec/features/merge_requests/filters_generic_behavior_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'Merge Requests > Filters generic behavior', :js, feature_category: :code_review do +RSpec.describe 'Merge Requests > Filters generic behavior', :js, feature_category: :code_review_workflow do include FilteredSearchHelpers let(:project) { create(:project, :public, :repository) } diff --git a/spec/features/merge_requests/rss_spec.rb b/spec/features/merge_requests/rss_spec.rb index 4c73ce3b684..9c9f46278f6 100644 --- a/spec/features/merge_requests/rss_spec.rb +++ b/spec/features/merge_requests/rss_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'Project Merge Requests RSS', feature_category: :code_review do +RSpec.describe 'Project Merge Requests RSS', feature_category: :code_review_workflow do let_it_be(:user) { create(:user) } let_it_be(:group) { create(:group) } let_it_be(:project) { create(:project, :repository, group: group, visibility_level: Gitlab::VisibilityLevel::PUBLIC) } diff --git a/spec/features/merge_requests/user_exports_as_csv_spec.rb b/spec/features/merge_requests/user_exports_as_csv_spec.rb index aedd7ef4d79..23ac1b264ad 100644 --- a/spec/features/merge_requests/user_exports_as_csv_spec.rb +++ b/spec/features/merge_requests/user_exports_as_csv_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'Merge Requests > Exports as CSV', :js, feature_category: :code_review do +RSpec.describe 'Merge Requests > Exports as CSV', :js, feature_category: :code_review_workflow do let!(:project) { create(:project, :public, :repository) } let!(:user) { project.creator } let!(:open_mr) { create(:merge_request, title: 'Bugfix1', source_project: project, target_project: project, source_branch: 'bugfix1') } diff --git a/spec/features/merge_requests/user_filters_by_approvals_spec.rb b/spec/features/merge_requests/user_filters_by_approvals_spec.rb index 56c8a65385c..f2748c2549f 100644 --- a/spec/features/merge_requests/user_filters_by_approvals_spec.rb +++ b/spec/features/merge_requests/user_filters_by_approvals_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'Merge Requests > User filters', :js, feature_category: :code_review do +RSpec.describe 'Merge Requests > User filters', :js, feature_category: :code_review_workflow do include FilteredSearchHelpers let_it_be(:project) { create(:project, :public, :repository) } diff --git a/spec/features/merge_requests/user_filters_by_assignees_spec.rb b/spec/features/merge_requests/user_filters_by_assignees_spec.rb index 818cf6f076f..22e38679c0f 100644 --- a/spec/features/merge_requests/user_filters_by_assignees_spec.rb +++ b/spec/features/merge_requests/user_filters_by_assignees_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'Merge Requests > User filters by assignees', :js, feature_category: :code_review do +RSpec.describe 'Merge Requests > User filters by assignees', :js, feature_category: :code_review_workflow do include FilteredSearchHelpers let(:project) { create(:project, :public, :repository) } diff --git a/spec/features/merge_requests/user_filters_by_deployments_spec.rb b/spec/features/merge_requests/user_filters_by_deployments_spec.rb index 5f7d2fa9f9a..06997806a74 100644 --- a/spec/features/merge_requests/user_filters_by_deployments_spec.rb +++ b/spec/features/merge_requests/user_filters_by_deployments_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'Merge Requests > User filters by deployments', :js, feature_category: :code_review do +RSpec.describe 'Merge Requests > User filters by deployments', :js, feature_category: :code_review_workflow do include FilteredSearchHelpers let!(:project) { create(:project, :public, :repository) } diff --git a/spec/features/merge_requests/user_filters_by_draft_spec.rb b/spec/features/merge_requests/user_filters_by_draft_spec.rb index d50d7edaefb..2b6a2062893 100644 --- a/spec/features/merge_requests/user_filters_by_draft_spec.rb +++ b/spec/features/merge_requests/user_filters_by_draft_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'Merge Requests > User filters by draft', :js, feature_category: :code_review do +RSpec.describe 'Merge Requests > User filters by draft', :js, feature_category: :code_review_workflow do include FilteredSearchHelpers let(:project) { create(:project, :public, :repository) } diff --git a/spec/features/merge_requests/user_filters_by_labels_spec.rb b/spec/features/merge_requests/user_filters_by_labels_spec.rb index 030eb1b6431..84d75eb221e 100644 --- a/spec/features/merge_requests/user_filters_by_labels_spec.rb +++ b/spec/features/merge_requests/user_filters_by_labels_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'Merge Requests > User filters by labels', :js, feature_category: :code_review do +RSpec.describe 'Merge Requests > User filters by labels', :js, feature_category: :code_review_workflow do include FilteredSearchHelpers let(:project) { create(:project, :public, :repository) } diff --git a/spec/features/merge_requests/user_filters_by_milestones_spec.rb b/spec/features/merge_requests/user_filters_by_milestones_spec.rb index abdb6c7787b..75bbc3a14a8 100644 --- a/spec/features/merge_requests/user_filters_by_milestones_spec.rb +++ b/spec/features/merge_requests/user_filters_by_milestones_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'Merge Requests > User filters by milestones', :js, feature_category: :code_review do +RSpec.describe 'Merge Requests > User filters by milestones', :js, feature_category: :code_review_workflow do include FilteredSearchHelpers let(:project) { create(:project, :public, :repository) } diff --git a/spec/features/merge_requests/user_filters_by_multiple_criteria_spec.rb b/spec/features/merge_requests/user_filters_by_multiple_criteria_spec.rb index ae171f47ec3..9f10533bb72 100644 --- a/spec/features/merge_requests/user_filters_by_multiple_criteria_spec.rb +++ b/spec/features/merge_requests/user_filters_by_multiple_criteria_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'Merge requests > User filters by multiple criteria', :js, feature_category: :code_review do +RSpec.describe 'Merge requests > User filters by multiple criteria', :js, feature_category: :code_review_workflow do include FilteredSearchHelpers let!(:project) { create(:project, :public, :repository) } diff --git a/spec/features/merge_requests/user_filters_by_target_branch_spec.rb b/spec/features/merge_requests/user_filters_by_target_branch_spec.rb index e0755695f5c..cc30c274b51 100644 --- a/spec/features/merge_requests/user_filters_by_target_branch_spec.rb +++ b/spec/features/merge_requests/user_filters_by_target_branch_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'Merge Requests > User filters by target branch', :js, feature_category: :code_review do +RSpec.describe 'Merge Requests > User filters by target branch', :js, feature_category: :code_review_workflow do include FilteredSearchHelpers let!(:project) { create(:project, :public, :repository) } diff --git a/spec/features/merge_requests/user_lists_merge_requests_spec.rb b/spec/features/merge_requests/user_lists_merge_requests_spec.rb index d9c3bcda0d3..3171ae89fe6 100644 --- a/spec/features/merge_requests/user_lists_merge_requests_spec.rb +++ b/spec/features/merge_requests/user_lists_merge_requests_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'Merge requests > User lists merge requests', feature_category: :code_review do +RSpec.describe 'Merge requests > User lists merge requests', feature_category: :code_review_workflow do include MergeRequestHelpers include SortingHelper diff --git a/spec/features/merge_requests/user_mass_updates_spec.rb b/spec/features/merge_requests/user_mass_updates_spec.rb index 133017d5b25..5a9054ece48 100644 --- a/spec/features/merge_requests/user_mass_updates_spec.rb +++ b/spec/features/merge_requests/user_mass_updates_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'Merge requests > User mass updates', :js, feature_category: :code_review do +RSpec.describe 'Merge requests > User mass updates', :js, feature_category: :code_review_workflow do let(:project) { create(:project, :repository) } let(:user) { project.creator } let(:user2) { create(:user) } diff --git a/spec/features/merge_requests/user_sees_empty_state_spec.rb b/spec/features/merge_requests/user_sees_empty_state_spec.rb index a50ea300249..f5803a47b2c 100644 --- a/spec/features/merge_requests/user_sees_empty_state_spec.rb +++ b/spec/features/merge_requests/user_sees_empty_state_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'Merge request > User sees empty state', feature_category: :code_review do +RSpec.describe 'Merge request > User sees empty state', feature_category: :code_review_workflow do include ProjectForksHelper let(:project) { create(:project, :public, :repository) } diff --git a/spec/features/merge_requests/user_sorts_merge_requests_spec.rb b/spec/features/merge_requests/user_sorts_merge_requests_spec.rb index d268cfc59f3..cf99f2cb94a 100644 --- a/spec/features/merge_requests/user_sorts_merge_requests_spec.rb +++ b/spec/features/merge_requests/user_sorts_merge_requests_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'User sorts merge requests', :js, feature_category: :code_review do +RSpec.describe 'User sorts merge requests', :js, feature_category: :code_review_workflow do include CookieHelper include Spec::Support::Helpers::Features::SortingHelpers diff --git a/spec/features/merge_requests/user_views_all_merge_requests_spec.rb b/spec/features/merge_requests/user_views_all_merge_requests_spec.rb index b55e4bd153f..c2eb43d7476 100644 --- a/spec/features/merge_requests/user_views_all_merge_requests_spec.rb +++ b/spec/features/merge_requests/user_views_all_merge_requests_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'User views all merge requests', feature_category: :code_review do +RSpec.describe 'User views all merge requests', feature_category: :code_review_workflow do let!(:closed_merge_request) { create(:closed_merge_request, source_project: project, target_project: project) } let!(:merge_request) { create(:merge_request, source_project: project, target_project: project) } let(:project) { create(:project, :public) } diff --git a/spec/features/merge_requests/user_views_closed_merge_requests_spec.rb b/spec/features/merge_requests/user_views_closed_merge_requests_spec.rb index 4c2598dcc9c..175e6bacba5 100644 --- a/spec/features/merge_requests/user_views_closed_merge_requests_spec.rb +++ b/spec/features/merge_requests/user_views_closed_merge_requests_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'User views closed merge requests', feature_category: :code_review do +RSpec.describe 'User views closed merge requests', feature_category: :code_review_workflow do let!(:closed_merge_request) { create(:closed_merge_request, source_project: project, target_project: project) } let!(:merge_request) { create(:merge_request, source_project: project, target_project: project) } let(:project) { create(:project, :public) } diff --git a/spec/features/merge_requests/user_views_merged_merge_requests_spec.rb b/spec/features/merge_requests/user_views_merged_merge_requests_spec.rb index 2526f1a855b..54b11c1ee1e 100644 --- a/spec/features/merge_requests/user_views_merged_merge_requests_spec.rb +++ b/spec/features/merge_requests/user_views_merged_merge_requests_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'User views merged merge requests', feature_category: :code_review do +RSpec.describe 'User views merged merge requests', feature_category: :code_review_workflow do let!(:merge_request) { create(:merge_request, source_project: project, target_project: project) } let!(:merged_merge_request) { create(:merged_merge_request, source_project: project, target_project: project) } let(:project) { create(:project, :public) } diff --git a/spec/features/merge_requests/user_views_open_merge_requests_spec.rb b/spec/features/merge_requests/user_views_open_merge_requests_spec.rb index 3c53bc5e283..1a2024a5511 100644 --- a/spec/features/merge_requests/user_views_open_merge_requests_spec.rb +++ b/spec/features/merge_requests/user_views_open_merge_requests_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'User views open merge requests', feature_category: :code_review do +RSpec.describe 'User views open merge requests', feature_category: :code_review_workflow do let_it_be(:user) { create(:user) } shared_examples_for 'shows merge requests' do diff --git a/spec/features/oauth_registration_spec.rb b/spec/features/oauth_registration_spec.rb index 48996164bd3..6e1445a9ed6 100644 --- a/spec/features/oauth_registration_spec.rb +++ b/spec/features/oauth_registration_spec.rb @@ -32,7 +32,6 @@ RSpec.describe 'OAuth Registration', :js, :allow_forgery_protection, feature_cat with_them do before do stub_omniauth_provider(provider) - stub_feature_flags(update_oauth_registration_flow: true) end context 'when block_auto_created_users is true' do @@ -120,22 +119,6 @@ RSpec.describe 'OAuth Registration', :js, :allow_forgery_protection, feature_cat end end - context 'when update_oauth_registration_flow is disabled' do - before do - stub_omniauth_provider(:github) - stub_omniauth_setting(block_auto_created_users: false) - stub_feature_flags(update_oauth_registration_flow: false) - - enforce_terms - end - - it 'presents the terms page' do - register_via(:github, uid, email) - - expect(page).to have_content('These are the terms') - end - end - def fill_in_welcome_form select 'Software Developer', from: 'user_role' click_button 'Get started!' diff --git a/spec/features/projects/diffs/diff_show_spec.rb b/spec/features/projects/diffs/diff_show_spec.rb index 973c61de31d..eb700e10141 100644 --- a/spec/features/projects/diffs/diff_show_spec.rb +++ b/spec/features/projects/diffs/diff_show_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'Diff file viewer', :js, :with_clean_rails_cache, feature_category: :code_review do +RSpec.describe 'Diff file viewer', :js, :with_clean_rails_cache, feature_category: :code_review_workflow do let(:project) { create(:project, :public, :repository) } def visit_commit(sha, anchor: nil) diff --git a/spec/features/projects/import_export/export_file_spec.rb b/spec/features/projects/import_export/export_file_spec.rb index 8986ce91ae3..0230c9e835b 100644 --- a/spec/features/projects/import_export/export_file_spec.rb +++ b/spec/features/projects/import_export/export_file_spec.rb @@ -20,7 +20,9 @@ RSpec.describe 'Import/Export - project export integration test', :js, feature_c } end - let(:safe_hashes) { { yaml_variables: %w[key value public] } } + let(:safe_hashes) do + { yaml_variables: %w[key value public] } + end let(:project) { setup_project } diff --git a/spec/features/user_sees_revert_modal_spec.rb b/spec/features/user_sees_revert_modal_spec.rb index ea5fd537c5b..ae3158e4270 100644 --- a/spec/features/user_sees_revert_modal_spec.rb +++ b/spec/features/user_sees_revert_modal_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' RSpec.describe 'Merge request > User sees revert modal', :js, :sidekiq_might_not_need_inline, -feature_category: :code_review do +feature_category: :code_review_workflow do let(:project) { create(:project, :public, :repository) } let(:user) { project.creator } let(:merge_request) { create(:merge_request, source_project: project) } diff --git a/spec/features/user_sorts_things_spec.rb b/spec/features/user_sorts_things_spec.rb index 708caf79090..b45de88832c 100644 --- a/spec/features/user_sorts_things_spec.rb +++ b/spec/features/user_sorts_things_spec.rb @@ -34,7 +34,7 @@ RSpec.describe "User sorts things", :js do expect(page).to have_button(sort_option) end - it "merge requests -> dashboard merge requests", feature_category: :code_review do + it "merge requests -> dashboard merge requests", feature_category: :code_review_workflow do sort_option = s_('SortOptions|Updated date') visit(project_merge_requests_path(project)) diff --git a/spec/fixtures/lib/gitlab/import_export/complex/project.json b/spec/fixtures/lib/gitlab/import_export/complex/project.json index 8e7cb487444..88439965cf3 100644 --- a/spec/fixtures/lib/gitlab/import_export/complex/project.json +++ b/spec/fixtures/lib/gitlab/import_export/complex/project.json @@ -5,6 +5,8 @@ "visibility_level": 10, "archived": false, "ci_config_path": "config/path", + "allow_merge_on_skipped_pipeline": true, + "squash_option": 3, "labels": [ { "id": 2, @@ -370,13 +372,13 @@ ], "resource_label_events": [ { - "id":244, - "action":"remove", - "issue_id":40, - "merge_request_id":null, - "label_id":2, - "user_id":1, - "created_at":"2018-08-28T08:24:00.494Z", + "id": 244, + "action": "remove", + "issue_id": 40, + "merge_request_id": null, + "label_id": 2, + "user_id": 1, + "created_at": "2018-08-28T08:24:00.494Z", "label": { "id": 2, "title": "test2", @@ -2350,7 +2352,7 @@ "name": "thumbsup", "user_id": 1, "awardable_type": "Snippet", - "awardable_id": 1, + "awardable_id": 1, "created_at": "2019-11-05T15:37:21.287Z", "updated_at": "2019-11-05T15:37:21.287Z" }, @@ -2359,7 +2361,7 @@ "name": "coffee", "user_id": 1, "awardable_type": "Snippet", - "awardable_id": 1, + "awardable_id": 1, "created_at": "2019-11-05T15:37:24.645Z", "updated_at": "2019-11-05T15:37:24.645Z" } @@ -2446,7 +2448,7 @@ "links": [ { "id": 1, - "release_id" : 1, + "release_id": 1, "url": "http://localhost/namespace6/project6/-/jobs/140463678/artifacts/download", "name": "release-1.1.dmg", "created_at": "2019-12-26T10:17:14.621Z", @@ -2906,13 +2908,13 @@ ], "resource_label_events": [ { - "id":243, - "action":"add", - "issue_id":null, - "merge_request_id":27, - "label_id":null, - "user_id":1, - "created_at":"2018-08-28T08:24:00.494Z" + "id": 243, + "action": "add", + "issue_id": null, + "merge_request_id": 27, + "label_id": null, + "user_id": 1, + "created_at": "2018-08-28T08:24:00.494Z" } ], "merge_request_diff": { @@ -7472,8 +7474,7 @@ "started_at": null, "finished_at": null, "duration": null, - "stages": [ - ] + "stages": [] }, { "id": 20, @@ -7491,11 +7492,9 @@ "started_at": null, "finished_at": null, "duration": null, - "stages": [ - ], + "stages": [], "source": "external_pull_request_event", - "external_pull_request": - { + "external_pull_request": { "id": 3, "pull_request_iid": 4, "source_branch": "feature", @@ -7505,8 +7504,8 @@ "source_sha": "ce84140e8b878ce6e7c4d298c7202ff38170e3ac", "target_sha": "a09386439ca39abe575675ffd4b89ae824fec22f", "status": "open", - "created_at": "2016-03-22T15:20:35.763Z", - "updated_at": "2016-03-22T15:20:35.763Z" + "created_at": "2016-03-22T15:20:35.763Z", + "updated_at": "2016-03-22T15:20:35.763Z" } } ], @@ -7563,7 +7562,7 @@ "updated_at": "2016-08-30T07:32:52.490Z" } ], - "allow_force_push":false + "allow_force_push": false } ], "protected_environments": [ @@ -7670,17 +7669,17 @@ }, "external_pull_requests": [ { - "id": 3, - "pull_request_iid": 4, - "source_branch": "feature", - "target_branch": "master", - "source_repository": "the-repository", - "target_repository": "the-repository", - "source_sha": "ce84140e8b878ce6e7c4d298c7202ff38170e3ac", - "target_sha": "a09386439ca39abe575675ffd4b89ae824fec22f", - "status": "open", - "created_at": "2019-12-24T14:04:50.053Z", - "updated_at": "2019-12-24T14:05:18.138Z" + "id": 3, + "pull_request_iid": 4, + "source_branch": "feature", + "target_branch": "master", + "source_repository": "the-repository", + "target_repository": "the-repository", + "source_sha": "ce84140e8b878ce6e7c4d298c7202ff38170e3ac", + "target_sha": "a09386439ca39abe575675ffd4b89ae824fec22f", + "status": "open", + "created_at": "2019-12-24T14:04:50.053Z", + "updated_at": "2019-12-24T14:05:18.138Z" } ], "boards": [ @@ -7848,5 +7847,4 @@ "commit_committer_check": true, "regexp_uses_re2": true } - -} +}
\ No newline at end of file diff --git a/spec/frontend/ci/pipeline_schedules/components/pipeline_schedules_spec.js b/spec/frontend/ci/pipeline_schedules/components/pipeline_schedules_spec.js index 4aa4cdf89a1..1aa08eb78cf 100644 --- a/spec/frontend/ci/pipeline_schedules/components/pipeline_schedules_spec.js +++ b/spec/frontend/ci/pipeline_schedules/components/pipeline_schedules_spec.js @@ -10,12 +10,14 @@ import DeletePipelineScheduleModal from '~/ci/pipeline_schedules/components/dele import TakeOwnershipModal from '~/ci/pipeline_schedules/components/take_ownership_modal.vue'; import PipelineSchedulesTable from '~/ci/pipeline_schedules/components/table/pipeline_schedules_table.vue'; import deletePipelineScheduleMutation from '~/ci/pipeline_schedules/graphql/mutations/delete_pipeline_schedule.mutation.graphql'; +import playPipelineScheduleMutation from '~/ci/pipeline_schedules/graphql/mutations/play_pipeline_schedule.mutation.graphql'; import takeOwnershipMutation from '~/ci/pipeline_schedules/graphql/mutations/take_ownership.mutation.graphql'; import getPipelineSchedulesQuery from '~/ci/pipeline_schedules/graphql/queries/get_pipeline_schedules.query.graphql'; import { mockGetPipelineSchedulesGraphQLResponse, mockPipelineScheduleNodes, deleteMutationResponse, + playMutationResponse, takeOwnershipMutationResponse, } from '../mock_data'; @@ -33,6 +35,8 @@ describe('Pipeline schedules app', () => { const deleteMutationHandlerSuccess = jest.fn().mockResolvedValue(deleteMutationResponse); const deleteMutationHandlerFailed = jest.fn().mockRejectedValue(new Error('GraphQL error')); + const playMutationHandlerSuccess = jest.fn().mockResolvedValue(playMutationResponse); + const playMutationHandlerFailed = jest.fn().mockRejectedValue(new Error('GraphQL error')); const takeOwnershipMutationHandlerSuccess = jest .fn() .mockResolvedValue(takeOwnershipMutationResponse); @@ -181,6 +185,45 @@ describe('Pipeline schedules app', () => { }); }); + describe('playing a pipeline schedule', () => { + it('shows play mutation error alert', async () => { + createComponent([ + [getPipelineSchedulesQuery, successHandler], + [playPipelineScheduleMutation, playMutationHandlerFailed], + ]); + + await waitForPromises(); + + findTable().vm.$emit('playPipelineSchedule'); + + await waitForPromises(); + + expect(findAlert().text()).toBe('There was a problem playing the pipeline schedule.'); + }); + + it('plays pipeline schedule', async () => { + createComponent([ + [getPipelineSchedulesQuery, successHandler], + [playPipelineScheduleMutation, playMutationHandlerSuccess], + ]); + + await waitForPromises(); + + const scheduleId = mockPipelineScheduleNodes[0].id; + + findTable().vm.$emit('playPipelineSchedule', scheduleId); + + await waitForPromises(); + + expect(playMutationHandlerSuccess).toHaveBeenCalledWith({ + id: scheduleId, + }); + expect(findAlert().text()).toBe( + 'Successfully scheduled a pipeline to run. Go to the Pipelines page for details.', + ); + }); + }); + describe('taking ownership of a pipeline schedule', () => { it('shows take ownership mutation error alert', async () => { createComponent([ diff --git a/spec/frontend/ci/pipeline_schedules/components/table/cells/pipeline_schedule_actions_spec.js b/spec/frontend/ci/pipeline_schedules/components/table/cells/pipeline_schedule_actions_spec.js index 3364c61d155..6fb6a8bc33b 100644 --- a/spec/frontend/ci/pipeline_schedules/components/table/cells/pipeline_schedule_actions_spec.js +++ b/spec/frontend/ci/pipeline_schedules/components/table/cells/pipeline_schedule_actions_spec.js @@ -25,6 +25,7 @@ describe('Pipeline schedule actions', () => { const findAllButtons = () => wrapper.findAllComponents(GlButton); const findDeleteBtn = () => wrapper.findByTestId('delete-pipeline-schedule-btn'); const findTakeOwnershipBtn = () => wrapper.findByTestId('take-ownership-pipeline-schedule-btn'); + const findPlayScheduleBtn = () => wrapper.findByTestId('play-pipeline-schedule-btn'); afterEach(() => { wrapper.destroy(); @@ -61,4 +62,14 @@ describe('Pipeline schedule actions', () => { showTakeOwnershipModal: [[mockTakeOwnershipNodes[0].id]], }); }); + + it('play button emits playPipelineSchedule event and schedule id', () => { + createComponent(); + + findPlayScheduleBtn().vm.$emit('click'); + + expect(wrapper.emitted()).toEqual({ + playPipelineSchedule: [[mockPipelineScheduleNodes[0].id]], + }); + }); }); diff --git a/spec/frontend/ci/pipeline_schedules/mock_data.js b/spec/frontend/ci/pipeline_schedules/mock_data.js index 3010f1d06c3..8767ae5bdcc 100644 --- a/spec/frontend/ci/pipeline_schedules/mock_data.js +++ b/spec/frontend/ci/pipeline_schedules/mock_data.js @@ -43,6 +43,16 @@ export const deleteMutationResponse = { }, }; +export const playMutationResponse = { + data: { + pipelineSchedulePlay: { + clientMutationId: null, + errors: [], + __typename: 'PipelineSchedulePlayPayload', + }, + }, +}; + export const takeOwnershipMutationResponse = { data: { pipelineScheduleTakeOwnership: { diff --git a/spec/helpers/emails_helper_spec.rb b/spec/helpers/emails_helper_spec.rb index 04653d9ff03..1f7400983da 100644 --- a/spec/helpers/emails_helper_spec.rb +++ b/spec/helpers/emails_helper_spec.rb @@ -385,7 +385,7 @@ RSpec.describe EmailsHelper do context 'with no html tag' do let(:expected_output) do - 'Reviewer changed to John' + 'John was added as a reviewer.<br>' end it 'returns the expected output' do @@ -395,7 +395,7 @@ RSpec.describe EmailsHelper do context 'with <strong> tag' do let(:expected_output) do - 'Reviewer changed to <strong>John</strong>' + '<strong>John</strong> was added as a reviewer.<br>' end it 'returns the expected output' do @@ -410,7 +410,7 @@ RSpec.describe EmailsHelper do context 'with no html tag' do let(:expected_output) do - 'Reviewer changed from John and Mary to Ted' + 'Ted was added as a reviewer.<br>John and Mary were removed from reviewers.' end it 'returns the expected output' do @@ -420,7 +420,7 @@ RSpec.describe EmailsHelper do context 'with <strong> tag' do let(:expected_output) do - 'Reviewer changed from <strong>John and Mary</strong> to <strong>Ted</strong>' + '<strong>Ted</strong> was added as a reviewer.<br><strong>John and Mary</strong> were removed from reviewers.' end it 'returns the expected output' do @@ -435,7 +435,7 @@ RSpec.describe EmailsHelper do context 'with no html tag' do let(:expected_output) do - 'Reviewer changed from John and Mary to Unassigned' + 'All reviewers were removed.' end it 'returns the expected output' do @@ -445,7 +445,7 @@ RSpec.describe EmailsHelper do context 'with <strong> tag' do let(:expected_output) do - 'Reviewer changed from <strong>John and Mary</strong> to <strong>Unassigned</strong>' + 'All reviewers were removed.' end it 'returns the expected output' do @@ -460,7 +460,7 @@ RSpec.describe EmailsHelper do let(:fishy_user) { build(:user, name: "<script>alert('hi')</script>") } let(:expected_output) do - 'Reviewer changed to <strong><script>alert('hi')</script></strong>' + '<strong><script>alert('hi')</script></strong> was added as a reviewer.<br>' end it 'escapes the html tag' do @@ -476,7 +476,7 @@ RSpec.describe EmailsHelper do let(:fishy_user) { build(:user, name: "example.com") } let(:expected_output) do - 'Reviewer changed to example_com' + 'example_com was added as a reviewer.<br>' end it "sanitizes user's name" do diff --git a/spec/lib/gitlab/diff/file_collection/merge_request_diff_batch_spec.rb b/spec/lib/gitlab/diff/file_collection/merge_request_diff_batch_spec.rb index 9ac242459bf..8e14f48ae29 100644 --- a/spec/lib/gitlab/diff/file_collection/merge_request_diff_batch_spec.rb +++ b/spec/lib/gitlab/diff/file_collection/merge_request_diff_batch_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe Gitlab::Diff::FileCollection::MergeRequestDiffBatch, feature_category: :code_review do +RSpec.describe Gitlab::Diff::FileCollection::MergeRequestDiffBatch, feature_category: :code_review_workflow do let(:merge_request) { create(:merge_request) } let(:batch_page) { 0 } let(:batch_size) { 10 } diff --git a/spec/lib/gitlab/diff/file_collection/paginated_merge_request_diff_spec.rb b/spec/lib/gitlab/diff/file_collection/paginated_merge_request_diff_spec.rb index 74e5e667702..ee956d04325 100644 --- a/spec/lib/gitlab/diff/file_collection/paginated_merge_request_diff_spec.rb +++ b/spec/lib/gitlab/diff/file_collection/paginated_merge_request_diff_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe Gitlab::Diff::FileCollection::PaginatedMergeRequestDiff, feature_category: :code_review do +RSpec.describe Gitlab::Diff::FileCollection::PaginatedMergeRequestDiff, feature_category: :code_review_workflow do let(:merge_request) { create(:merge_request) } let(:page) { 1 } let(:per_page) { 10 } diff --git a/spec/lib/gitlab/import_export/safe_model_attributes.yml b/spec/lib/gitlab/import_export/safe_model_attributes.yml index 75d980cd5f4..e14e929faf3 100644 --- a/spec/lib/gitlab/import_export/safe_model_attributes.yml +++ b/spec/lib/gitlab/import_export/safe_model_attributes.yml @@ -702,7 +702,9 @@ Badge: ProjectCiCdSetting: - group_runners_enabled - runner_token_expiration_interval +- default_git_depth ProjectSetting: +- squash_option - allow_merge_on_skipped_pipeline - only_allow_merge_if_all_status_checks_passed - has_confluence @@ -916,6 +918,7 @@ PushRule: - reject_unsigned_commits - commit_committer_check - regexp_uses_re2 + - reject_non_dco_commits MergeRequest::CleanupSchedule: - id - scheduled_at diff --git a/spec/lib/gitlab/merge_requests/message_generator_spec.rb b/spec/lib/gitlab/merge_requests/message_generator_spec.rb index 59aaffc4377..ac9a9aa2897 100644 --- a/spec/lib/gitlab/merge_requests/message_generator_spec.rb +++ b/spec/lib/gitlab/merge_requests/message_generator_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe Gitlab::MergeRequests::MessageGenerator, feature_category: :code_review do +RSpec.describe Gitlab::MergeRequests::MessageGenerator, feature_category: :code_review_workflow do let(:merge_commit_template) { nil } let(:squash_commit_template) { nil } let(:project) do diff --git a/spec/migrations/20210514063252_schedule_cleanup_orphaned_lfs_objects_projects_spec.rb b/spec/migrations/20210514063252_schedule_cleanup_orphaned_lfs_objects_projects_spec.rb index 8a76f0847e9..1992f9db7fb 100644 --- a/spec/migrations/20210514063252_schedule_cleanup_orphaned_lfs_objects_projects_spec.rb +++ b/spec/migrations/20210514063252_schedule_cleanup_orphaned_lfs_objects_projects_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' require_migration! -RSpec.describe ScheduleCleanupOrphanedLfsObjectsProjects, schema: 20210511165250, feature_category: :git_lfs do +RSpec.describe ScheduleCleanupOrphanedLfsObjectsProjects, schema: 20210511165250, feature_category: :source_code_management do let(:lfs_objects_projects) { table(:lfs_objects_projects) } let(:projects) { table(:projects) } let(:namespaces) { table(:namespaces) } diff --git a/spec/migrations/20210708130419_reschedule_merge_request_diff_users_background_migration_spec.rb b/spec/migrations/20210708130419_reschedule_merge_request_diff_users_background_migration_spec.rb index 604504d2206..0f202129e82 100644 --- a/spec/migrations/20210708130419_reschedule_merge_request_diff_users_background_migration_spec.rb +++ b/spec/migrations/20210708130419_reschedule_merge_request_diff_users_background_migration_spec.rb @@ -3,7 +3,8 @@ require 'spec_helper' require_migration! -RSpec.describe RescheduleMergeRequestDiffUsersBackgroundMigration, :migration, feature_category: :code_review do +RSpec.describe RescheduleMergeRequestDiffUsersBackgroundMigration, + :migration, feature_category: :code_review_workflow do let(:migration) { described_class.new } describe '#up' do diff --git a/spec/migrations/20211012134316_clean_up_migrate_merge_request_diff_commit_users_spec.rb b/spec/migrations/20211012134316_clean_up_migrate_merge_request_diff_commit_users_spec.rb index f627ea825b3..a61e450d9ab 100644 --- a/spec/migrations/20211012134316_clean_up_migrate_merge_request_diff_commit_users_spec.rb +++ b/spec/migrations/20211012134316_clean_up_migrate_merge_request_diff_commit_users_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' require_migration! 'clean_up_migrate_merge_request_diff_commit_users' -RSpec.describe CleanUpMigrateMergeRequestDiffCommitUsers, :migration, feature_category: :code_review do +RSpec.describe CleanUpMigrateMergeRequestDiffCommitUsers, :migration, feature_category: :code_review_workflow do describe '#up' do context 'when there are pending jobs' do it 'processes the jobs immediately' do diff --git a/spec/migrations/20211028155449_schedule_fix_merge_request_diff_commit_users_migration_spec.rb b/spec/migrations/20211028155449_schedule_fix_merge_request_diff_commit_users_migration_spec.rb index c7a0b938ca1..968d9cf176c 100644 --- a/spec/migrations/20211028155449_schedule_fix_merge_request_diff_commit_users_migration_spec.rb +++ b/spec/migrations/20211028155449_schedule_fix_merge_request_diff_commit_users_migration_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' require_migration! 'schedule_fix_merge_request_diff_commit_users_migration' -RSpec.describe ScheduleFixMergeRequestDiffCommitUsersMigration, :migration, feature_category: :code_review do +RSpec.describe ScheduleFixMergeRequestDiffCommitUsersMigration, :migration, feature_category: :code_review_workflow do let(:migration) { described_class.new } let(:namespaces) { table(:namespaces) } let(:projects) { table(:projects) } diff --git a/spec/migrations/20220315171129_cleanup_draft_data_from_faulty_regex_spec.rb b/spec/migrations/20220315171129_cleanup_draft_data_from_faulty_regex_spec.rb index 1760535e66f..85fe3d712a2 100644 --- a/spec/migrations/20220315171129_cleanup_draft_data_from_faulty_regex_spec.rb +++ b/spec/migrations/20220315171129_cleanup_draft_data_from_faulty_regex_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' require_migration! -RSpec.describe CleanupDraftDataFromFaultyRegex, feature_category: :code_review do +RSpec.describe CleanupDraftDataFromFaultyRegex, feature_category: :code_review_workflow do let(:merge_requests) { table(:merge_requests) } let!(:namespace) { table(:namespaces).create!(name: 'namespace', path: 'namespace') } diff --git a/spec/migrations/20220502015011_clean_up_fix_merge_request_diff_commit_users_spec.rb b/spec/migrations/20220502015011_clean_up_fix_merge_request_diff_commit_users_spec.rb index e316ad25214..47d407618d2 100644 --- a/spec/migrations/20220502015011_clean_up_fix_merge_request_diff_commit_users_spec.rb +++ b/spec/migrations/20220502015011_clean_up_fix_merge_request_diff_commit_users_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' require_migration! 'clean_up_fix_merge_request_diff_commit_users' -RSpec.describe CleanUpFixMergeRequestDiffCommitUsers, :migration, feature_category: :code_review do +RSpec.describe CleanUpFixMergeRequestDiffCommitUsers, :migration, feature_category: :code_review_workflow do let(:namespaces) { table(:namespaces) } let(:projects) { table(:projects) } let(:project_namespace) { namespaces.create!(name: 'project2', path: 'project2', type: 'Project') } diff --git a/spec/migrations/cleanup_mr_attention_request_todos_spec.rb b/spec/migrations/cleanup_mr_attention_request_todos_spec.rb index 4fa2419aa7c..cea72003ccd 100644 --- a/spec/migrations/cleanup_mr_attention_request_todos_spec.rb +++ b/spec/migrations/cleanup_mr_attention_request_todos_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' require_migration! -RSpec.describe CleanupMrAttentionRequestTodos, :migration, feature_category: :code_review do +RSpec.describe CleanupMrAttentionRequestTodos, :migration, feature_category: :code_review_workflow do let(:projects) { table(:projects) } let(:namespaces) { table(:namespaces) } let(:users) { table(:users) } diff --git a/spec/migrations/schedule_backfill_draft_status_on_merge_requests_corrected_regex_spec.rb b/spec/migrations/schedule_backfill_draft_status_on_merge_requests_corrected_regex_spec.rb index 8a14bf58698..a3bec40c3f0 100644 --- a/spec/migrations/schedule_backfill_draft_status_on_merge_requests_corrected_regex_spec.rb +++ b/spec/migrations/schedule_backfill_draft_status_on_merge_requests_corrected_regex_spec.rb @@ -4,7 +4,8 @@ require 'spec_helper' require_migration! -RSpec.describe ScheduleBackfillDraftStatusOnMergeRequestsCorrectedRegex, :sidekiq, feature_category: :code_review do +RSpec.describe ScheduleBackfillDraftStatusOnMergeRequestsCorrectedRegex, + :sidekiq, feature_category: :code_review_workflow do let(:namespaces) { table(:namespaces) } let(:projects) { table(:projects) } let(:merge_requests) { table(:merge_requests) } diff --git a/spec/migrations/slice_merge_request_diff_commit_migrations_spec.rb b/spec/migrations/slice_merge_request_diff_commit_migrations_spec.rb index fdbd8093fa5..ffd25152a45 100644 --- a/spec/migrations/slice_merge_request_diff_commit_migrations_spec.rb +++ b/spec/migrations/slice_merge_request_diff_commit_migrations_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' require_migration! -RSpec.describe SliceMergeRequestDiffCommitMigrations, :migration, feature_category: :code_review do +RSpec.describe SliceMergeRequestDiffCommitMigrations, :migration, feature_category: :code_review_workflow do let(:migration) { described_class.new } describe '#up' do diff --git a/spec/models/projects/branch_rule_spec.rb b/spec/models/projects/branch_rule_spec.rb new file mode 100644 index 00000000000..6910fbbb6db --- /dev/null +++ b/spec/models/projects/branch_rule_spec.rb @@ -0,0 +1,32 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Projects::BranchRule, feature_category: :source_code_management do + let_it_be(:project) { create(:project, :repository) } + let_it_be(:protected_branch) { create(:protected_branch, project: project, name: 'feature*') } + + subject { described_class.new(protected_branch.project, protected_branch) } + + it 'delegates methods to protected branch' do + expect(subject).to delegate_method(:name).to(:protected_branch) + expect(subject).to delegate_method(:group).to(:protected_branch) + expect(subject).to delegate_method(:default_branch?).to(:protected_branch) + expect(subject).to delegate_method(:created_at).to(:protected_branch) + expect(subject).to delegate_method(:updated_at).to(:protected_branch) + end + + it 'is protected' do + expect(subject.protected?).to eq(true) + end + + it 'branch protection returns protected branch' do + expect(subject.branch_protection).to eq(protected_branch) + end + + describe '#matching_branches_count' do + it 'returns the number of branches that are matching the protected branch name' do + expect(subject.matching_branches_count).to eq(2) + end + end +end diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index 1c32c0f8f98..5f39fd3735a 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -182,7 +182,7 @@ RSpec.describe User do it { expect(user.hide_no_password).to be_falsey } it { expect(user.project_view).to eq('files') } it { expect(user.notified_of_own_activity).to be_falsey } - it { expect(user.preferred_language).to eq(I18n.default_locale.to_s) } + it { expect(user.preferred_language).to eq(Gitlab::CurrentSettings.default_preferred_language) } it { expect(user.theme_id).to eq(described_class.gitlab_config.default_theme) } end @@ -458,18 +458,25 @@ RSpec.describe User do end describe 'preferred_language' do - context 'when its value is nil in the database' do - let(:user) { build(:user, preferred_language: nil) } + subject(:preferred_language) { user.preferred_language } - it 'falls back to I18n.default_locale when empty in the database' do - expect(user.preferred_language).to eq I18n.default_locale.to_s - end + context 'when preferred_language is set' do + let(:user) { build(:user, preferred_language: 'de_DE') } + + it { is_expected.to eq 'de_DE' } + end + + context 'when preferred_language is nil' do + let(:user) { build(:user) } - it 'falls back to english when I18n.default_locale is not an available language' do - allow(I18n).to receive(:default_locale) { :kl } - default_preferred_language = user.send(:default_preferred_language) + it { is_expected.to eq 'en' } + + context 'when Gitlab::CurrentSettings.default_preferred_language is set' do + before do + allow(::Gitlab::CurrentSettings).to receive(:default_preferred_language).and_return('zh_CN') + end - expect(user.preferred_language).to eq default_preferred_language + it { is_expected.to eq 'zh_CN' } end end end diff --git a/spec/requests/api/graphql/group/merge_requests_spec.rb b/spec/requests/api/graphql/group/merge_requests_spec.rb index 6976685ecc0..adaee3031a9 100644 --- a/spec/requests/api/graphql/group/merge_requests_spec.rb +++ b/spec/requests/api/graphql/group/merge_requests_spec.rb @@ -4,7 +4,7 @@ require 'spec_helper' # Based on ee/spec/requests/api/epics_spec.rb # Should follow closely in order to ensure all situations are covered -RSpec.describe 'Query.group.mergeRequests', feature_category: :code_review do +RSpec.describe 'Query.group.mergeRequests', feature_category: :code_review_workflow do include GraphqlHelpers let_it_be(:group) { create(:group) } diff --git a/spec/requests/api/graphql/merge_request/merge_request_spec.rb b/spec/requests/api/graphql/merge_request/merge_request_spec.rb index 213697bacc1..02ea7bac920 100644 --- a/spec/requests/api/graphql/merge_request/merge_request_spec.rb +++ b/spec/requests/api/graphql/merge_request/merge_request_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'Query.merge_request(id)', feature_category: :code_review do +RSpec.describe 'Query.merge_request(id)', feature_category: :code_review_workflow do include GraphqlHelpers let_it_be(:project) { create(:project, :empty_repo) } diff --git a/spec/requests/api/graphql/mutations/merge_requests/create_spec.rb b/spec/requests/api/graphql/mutations/merge_requests/create_spec.rb index c954fd50cc4..59f41c5e878 100644 --- a/spec/requests/api/graphql/mutations/merge_requests/create_spec.rb +++ b/spec/requests/api/graphql/mutations/merge_requests/create_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'Creation of a new merge request', feature_category: :code_review do +RSpec.describe 'Creation of a new merge request', feature_category: :code_review_workflow do include GraphqlHelpers let_it_be(:current_user) { create(:user) } diff --git a/spec/requests/api/graphql/mutations/merge_requests/reviewer_rereview_spec.rb b/spec/requests/api/graphql/mutations/merge_requests/reviewer_rereview_spec.rb index c41161eff2b..7a1b3982111 100644 --- a/spec/requests/api/graphql/mutations/merge_requests/reviewer_rereview_spec.rb +++ b/spec/requests/api/graphql/mutations/merge_requests/reviewer_rereview_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'Setting assignees of a merge request', feature_category: :code_review do +RSpec.describe 'Setting assignees of a merge request', feature_category: :code_review_workflow do include GraphqlHelpers let(:current_user) { create(:user) } diff --git a/spec/requests/api/graphql/mutations/merge_requests/set_assignees_spec.rb b/spec/requests/api/graphql/mutations/merge_requests/set_assignees_spec.rb index 364d13291db..b5f2042c42a 100644 --- a/spec/requests/api/graphql/mutations/merge_requests/set_assignees_spec.rb +++ b/spec/requests/api/graphql/mutations/merge_requests/set_assignees_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'Setting assignees of a merge request', :assume_throttled, feature_category: :code_review do +RSpec.describe 'Setting assignees of a merge request', :assume_throttled, feature_category: :code_review_workflow do include GraphqlHelpers let_it_be(:project) { create(:project, :repository) } diff --git a/spec/requests/api/graphql/mutations/merge_requests/set_draft_spec.rb b/spec/requests/api/graphql/mutations/merge_requests/set_draft_spec.rb index b48a94fbeb9..0c2e2975350 100644 --- a/spec/requests/api/graphql/mutations/merge_requests/set_draft_spec.rb +++ b/spec/requests/api/graphql/mutations/merge_requests/set_draft_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'Setting Draft status of a merge request', feature_category: :code_review do +RSpec.describe 'Setting Draft status of a merge request', feature_category: :code_review_workflow do include GraphqlHelpers let(:current_user) { create(:user) } diff --git a/spec/requests/api/graphql/mutations/merge_requests/set_locked_spec.rb b/spec/requests/api/graphql/mutations/merge_requests/set_locked_spec.rb index d88982c508c..73a38adf723 100644 --- a/spec/requests/api/graphql/mutations/merge_requests/set_locked_spec.rb +++ b/spec/requests/api/graphql/mutations/merge_requests/set_locked_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'Setting locked status of a merge request', feature_category: :code_review do +RSpec.describe 'Setting locked status of a merge request', feature_category: :code_review_workflow do include GraphqlHelpers let(:current_user) { create(:user) } diff --git a/spec/requests/api/graphql/mutations/merge_requests/set_milestone_spec.rb b/spec/requests/api/graphql/mutations/merge_requests/set_milestone_spec.rb index a0f0e45d1fc..3907ebad9ce 100644 --- a/spec/requests/api/graphql/mutations/merge_requests/set_milestone_spec.rb +++ b/spec/requests/api/graphql/mutations/merge_requests/set_milestone_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'Setting milestone of a merge request', feature_category: :code_review do +RSpec.describe 'Setting milestone of a merge request', feature_category: :code_review_workflow do include GraphqlHelpers let(:current_user) { create(:user) } diff --git a/spec/requests/api/graphql/mutations/merge_requests/set_reviewers_spec.rb b/spec/requests/api/graphql/mutations/merge_requests/set_reviewers_spec.rb index a5be2a95c8b..fd87112be33 100644 --- a/spec/requests/api/graphql/mutations/merge_requests/set_reviewers_spec.rb +++ b/spec/requests/api/graphql/mutations/merge_requests/set_reviewers_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'Setting reviewers of a merge request', :assume_throttled, feature_category: :code_review do +RSpec.describe 'Setting reviewers of a merge request', :assume_throttled, feature_category: :code_review_workflow do include GraphqlHelpers let_it_be(:project) { create(:project, :repository) } diff --git a/spec/requests/api/graphql/mutations/merge_requests/set_subscription_spec.rb b/spec/requests/api/graphql/mutations/merge_requests/set_subscription_spec.rb index daf1f529847..0e77b048646 100644 --- a/spec/requests/api/graphql/mutations/merge_requests/set_subscription_spec.rb +++ b/spec/requests/api/graphql/mutations/merge_requests/set_subscription_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'Setting subscribed status of a merge request', feature_category: :code_review do +RSpec.describe 'Setting subscribed status of a merge request', feature_category: :code_review_workflow do include GraphqlHelpers it_behaves_like 'a subscribable resource api' do diff --git a/spec/requests/api/graphql/project/branch_rules_spec.rb b/spec/requests/api/graphql/project/branch_rules_spec.rb index 7f6a66e2377..2ca37a49149 100644 --- a/spec/requests/api/graphql/project/branch_rules_spec.rb +++ b/spec/requests/api/graphql/project/branch_rules_spec.rb @@ -69,12 +69,6 @@ RSpec.describe 'getting list of branch rules for a project', feature_category: : before do create(:protected_branch, project: project) - allow_next_instance_of(Resolvers::ProjectResolver) do |resolver| - allow(resolver).to receive(:resolve) - .with(full_path: project.full_path) - .and_return(project) - end - allow(project.repository).to receive(:branch_names).and_call_original end it 'avoids N+1 queries', :use_sql_query_cache, :aggregate_failures do @@ -93,7 +87,6 @@ RSpec.describe 'getting list of branch rules for a project', feature_category: : end.not_to exceed_all_query_limit(control) expect_n_matching_branches_count_fields(3) - expect(project.repository).to have_received(:branch_names).at_least(2).times end def expect_n_matching_branches_count_fields(count) @@ -110,16 +103,16 @@ RSpec.describe 'getting list of branch rules for a project', feature_category: : let_it_be(:branch_name_b) { 'diff-*' } let_it_be(:branch_rules) { [branch_rule_a, branch_rule_b] } let_it_be(:branch_rule_a) do - create(:protected_branch, project: project, name: branch_name_a, id: 9999) + create(:protected_branch, project: project, name: branch_name_a) end let_it_be(:branch_rule_b) do - create(:protected_branch, project: project, name: branch_name_b, id: 10000) + create(:protected_branch, project: project, name: branch_name_b) end - # branchRules are returned in reverse order, newest first, sorted by primary_key. - let(:branch_rule_b_data) { branch_rules_data.dig(0, 'node') } + # branchRules are returned in alphabetical order let(:branch_rule_a_data) { branch_rules_data.dig(1, 'node') } + let(:branch_rule_b_data) { branch_rules_data.dig(0, 'node') } before do post_graphql(query, current_user: current_user, variables: variables) @@ -128,22 +121,28 @@ RSpec.describe 'getting list of branch rules for a project', feature_category: : it_behaves_like 'a working graphql query' it 'includes all fields', :use_sql_query_cache, :aggregate_failures do - expect(branch_rule_a_data['name']).to eq(branch_name_a) - expect(branch_rule_a_data['isDefault']).to be(true).or be(false) - expect(branch_rule_a_data['branchProtection']).to be_present - expect(branch_rule_a_data['matchingBranchesCount']).to eq(1) - expect(branch_rule_a_data['createdAt']).to be_present - expect(branch_rule_a_data['updatedAt']).to be_present + expect(branch_rule_a_data).to include( + 'name' => branch_name_a, + 'isDefault' => be_boolean, + 'isProtected' => true, + 'matchingBranchesCount' => 1, + 'branchProtection' => be_kind_of(Hash), + 'createdAt' => be_kind_of(String), + 'updatedAt' => be_kind_of(String) + ) wildcard_count = TestEnv::BRANCH_SHA.keys.count do |branch_name| branch_name.starts_with?('diff-') end - expect(branch_rule_b_data['name']).to eq(branch_name_b) - expect(branch_rule_b_data['isDefault']).to be(true).or be(false) - expect(branch_rule_b_data['branchProtection']).to be_present - expect(branch_rule_b_data['matchingBranchesCount']).to eq(wildcard_count) - expect(branch_rule_b_data['createdAt']).to be_present - expect(branch_rule_b_data['updatedAt']).to be_present + expect(branch_rule_b_data).to include( + 'name' => branch_name_b, + 'isDefault' => be_boolean, + 'isProtected' => true, + 'matchingBranchesCount' => wildcard_count, + 'branchProtection' => be_kind_of(Hash), + 'createdAt' => be_kind_of(String), + 'updatedAt' => be_kind_of(String) + ) end context 'when limiting the number of results' do diff --git a/spec/requests/api/graphql/project/merge_request/diff_notes_spec.rb b/spec/requests/api/graphql/project/merge_request/diff_notes_spec.rb index 36e148468bc..4884e04ab23 100644 --- a/spec/requests/api/graphql/project/merge_request/diff_notes_spec.rb +++ b/spec/requests/api/graphql/project/merge_request/diff_notes_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'getting notes for a merge request', feature_category: :code_review do +RSpec.describe 'getting notes for a merge request', feature_category: :code_review_workflow do include GraphqlHelpers let_it_be(:noteable) { create(:merge_request) } diff --git a/spec/requests/api/graphql/project/merge_request_spec.rb b/spec/requests/api/graphql/project/merge_request_spec.rb index b7aafdf305a..6aa96cfc070 100644 --- a/spec/requests/api/graphql/project/merge_request_spec.rb +++ b/spec/requests/api/graphql/project/merge_request_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'getting merge request information nested in a project', feature_category: :code_review do +RSpec.describe 'getting merge request information nested in a project', feature_category: :code_review_workflow do include GraphqlHelpers let_it_be(:project) { create(:project, :repository, :public) } diff --git a/spec/requests/api/graphql/project/merge_requests_spec.rb b/spec/requests/api/graphql/project/merge_requests_spec.rb index b3b4c8fe0d5..8407faa967e 100644 --- a/spec/requests/api/graphql/project/merge_requests_spec.rb +++ b/spec/requests/api/graphql/project/merge_requests_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'getting merge request listings nested in a project', feature_category: :code_review do +RSpec.describe 'getting merge request listings nested in a project', feature_category: :code_review_workflow do include GraphqlHelpers let_it_be(:group) { create(:group) } diff --git a/spec/requests/api/suggestions_spec.rb b/spec/requests/api/suggestions_spec.rb index 93b2435c601..4a4692684e3 100644 --- a/spec/requests/api/suggestions_spec.rb +++ b/spec/requests/api/suggestions_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe API::Suggestions, feature_category: :code_review do +RSpec.describe API::Suggestions, feature_category: :code_review_workflow do let(:project) { create(:project, :repository) } let(:user) { create(:user) } diff --git a/spec/requests/projects/merge_requests/content_spec.rb b/spec/requests/projects/merge_requests/content_spec.rb index 6c58dcb5722..54066756f3e 100644 --- a/spec/requests/projects/merge_requests/content_spec.rb +++ b/spec/requests/projects/merge_requests/content_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'merge request content spec', feature_category: :code_review do +RSpec.describe 'merge request content spec', feature_category: :code_review_workflow do let_it_be(:project) { create(:project, :repository) } let_it_be(:user) { create(:user) } let_it_be(:merge_request) { create(:merge_request, :with_head_pipeline, target_project: project, source_project: project) } diff --git a/spec/requests/projects/merge_requests/context_commit_diffs_spec.rb b/spec/requests/projects/merge_requests/context_commit_diffs_spec.rb index 60223a30d28..24e4dea5cdc 100644 --- a/spec/requests/projects/merge_requests/context_commit_diffs_spec.rb +++ b/spec/requests/projects/merge_requests/context_commit_diffs_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'Merge Requests Context Commit Diffs', feature_category: :code_review do +RSpec.describe 'Merge Requests Context Commit Diffs', feature_category: :code_review_workflow do let_it_be(:sha1) { "33f3729a45c02fc67d00adb1b8bca394b0e761d9" } let_it_be(:project) { create(:project, :repository) } let_it_be(:user) { create(:user) } diff --git a/spec/requests/projects/merge_requests/creations_spec.rb b/spec/requests/projects/merge_requests/creations_spec.rb index e299d711cb1..ace6ef0f7b8 100644 --- a/spec/requests/projects/merge_requests/creations_spec.rb +++ b/spec/requests/projects/merge_requests/creations_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'merge requests creations', feature_category: :code_review do +RSpec.describe 'merge requests creations', feature_category: :code_review_workflow do describe 'GET /:namespace/:project/merge_requests/new' do include ProjectForksHelper diff --git a/spec/requests/projects/merge_requests/diffs_spec.rb b/spec/requests/projects/merge_requests/diffs_spec.rb index dfdd372f8ad..f98688bf767 100644 --- a/spec/requests/projects/merge_requests/diffs_spec.rb +++ b/spec/requests/projects/merge_requests/diffs_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'Merge Requests Diffs', feature_category: :code_review do +RSpec.describe 'Merge Requests Diffs', feature_category: :code_review_workflow do let_it_be(:project) { create(:project, :repository) } let_it_be(:user) { create(:user) } let_it_be(:merge_request) { create(:merge_request_with_diffs, target_project: project, source_project: project) } diff --git a/spec/services/discussions/resolve_service_spec.rb b/spec/services/discussions/resolve_service_spec.rb index 8e6364e85e4..a6e1bad30ce 100644 --- a/spec/services/discussions/resolve_service_spec.rb +++ b/spec/services/discussions/resolve_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe Discussions::ResolveService, feature_category: :code_review do +RSpec.describe Discussions::ResolveService, feature_category: :code_review_workflow do describe '#execute' do let_it_be(:project) { create(:project, :repository) } let_it_be(:user) { create(:user, developer_projects: [project]) } diff --git a/spec/services/discussions/unresolve_service_spec.rb b/spec/services/discussions/unresolve_service_spec.rb index 9f66079c1a9..e9f58e4e10e 100644 --- a/spec/services/discussions/unresolve_service_spec.rb +++ b/spec/services/discussions/unresolve_service_spec.rb @@ -2,7 +2,7 @@ require "spec_helper" -RSpec.describe Discussions::UnresolveService, feature_category: :code_review do +RSpec.describe Discussions::UnresolveService, feature_category: :code_review_workflow do describe "#execute" do let_it_be(:project) { create(:project, :repository) } let_it_be(:user) { create(:user, developer_projects: [project]) } diff --git a/spec/services/merge_requests/base_service_spec.rb b/spec/services/merge_requests/base_service_spec.rb index 79a447718c5..bd907ba6015 100644 --- a/spec/services/merge_requests/base_service_spec.rb +++ b/spec/services/merge_requests/base_service_spec.rb @@ -10,7 +10,7 @@ module MergeRequests end end -RSpec.describe MergeRequests::BaseService, feature_category: :code_review do +RSpec.describe MergeRequests::BaseService, feature_category: :code_review_workflow do include ProjectForksHelper let_it_be(:project) { create(:project, :repository) } diff --git a/spec/services/merge_requests/update_service_spec.rb b/spec/services/merge_requests/update_service_spec.rb index 64d723f8f6c..353af5a594a 100644 --- a/spec/services/merge_requests/update_service_spec.rb +++ b/spec/services/merge_requests/update_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe MergeRequests::UpdateService, :mailer, feature_category: :code_review do +RSpec.describe MergeRequests::UpdateService, :mailer, feature_category: :code_review_workflow do include ProjectForksHelper let(:group) { create(:group, :public) } diff --git a/spec/services/test_hooks/project_service_spec.rb b/spec/services/test_hooks/project_service_spec.rb index d97a6f15270..13f863dbbdb 100644 --- a/spec/services/test_hooks/project_service_spec.rb +++ b/spec/services/test_hooks/project_service_spec.rb @@ -26,7 +26,7 @@ RSpec.describe TestHooks::ProjectService do context 'hook with not implemented test' do it 'returns error message' do expect(hook).not_to receive(:execute) - expect(service.execute).to include({ status: :error, message: 'Testing not available for this hook' }) + expect(service.execute).to have_attributes(status: :error, message: 'Testing not available for this hook') end end @@ -60,7 +60,7 @@ RSpec.describe TestHooks::ProjectService do it 'returns error message if not enough data' do expect(hook).not_to receive(:execute) - expect(service.execute).to include({ status: :error, message: 'Ensure the project has notes.' }) + expect(service.execute).to have_attributes(status: :error, message: 'Ensure the project has notes.') end it 'executes hook' do @@ -79,7 +79,7 @@ RSpec.describe TestHooks::ProjectService do it 'returns error message if not enough data' do expect(hook).not_to receive(:execute) - expect(service.execute).to include({ status: :error, message: 'Ensure the project has issues.' }) + expect(service.execute).to have_attributes(status: :error, message: 'Ensure the project has issues.') end it 'executes hook' do @@ -112,7 +112,7 @@ RSpec.describe TestHooks::ProjectService do it 'returns error message if not enough data' do expect(hook).not_to receive(:execute) - expect(service.execute).to include({ status: :error, message: 'Ensure the project has merge requests.' }) + expect(service.execute).to have_attributes(status: :error, message: 'Ensure the project has merge requests.') end it 'executes hook' do @@ -131,7 +131,7 @@ RSpec.describe TestHooks::ProjectService do it 'returns error message if not enough data' do expect(hook).not_to receive(:execute) - expect(service.execute).to include({ status: :error, message: 'Ensure the project has CI jobs.' }) + expect(service.execute).to have_attributes(status: :error, message: 'Ensure the project has CI jobs.') end it 'executes hook' do @@ -150,7 +150,7 @@ RSpec.describe TestHooks::ProjectService do it 'returns error message if not enough data' do expect(hook).not_to receive(:execute) - expect(service.execute).to include({ status: :error, message: 'Ensure the project has CI pipelines.' }) + expect(service.execute).to have_attributes(status: :error, message: 'Ensure the project has CI pipelines.') end it 'executes hook' do @@ -172,12 +172,12 @@ RSpec.describe TestHooks::ProjectService do allow(project).to receive(:wiki_enabled?).and_return(false) expect(hook).not_to receive(:execute) - expect(service.execute).to include({ status: :error, message: 'Ensure the wiki is enabled and has pages.' }) + expect(service.execute).to have_attributes(status: :error, message: 'Ensure the wiki is enabled and has pages.') end it 'returns error message if not enough data' do expect(hook).not_to receive(:execute) - expect(service.execute).to include({ status: :error, message: 'Ensure the wiki is enabled and has pages.' }) + expect(service.execute).to have_attributes(status: :error, message: 'Ensure the wiki is enabled and has pages.') end it 'executes hook' do @@ -196,7 +196,7 @@ RSpec.describe TestHooks::ProjectService do it 'returns error message if not enough data' do expect(hook).not_to receive(:execute) - expect(service.execute).to include({ status: :error, message: 'Ensure the project has releases.' }) + expect(service.execute).to have_attributes(status: :error, message: 'Ensure the project has releases.') end it 'executes hook' do diff --git a/spec/services/test_hooks/system_service_spec.rb b/spec/services/test_hooks/system_service_spec.rb index 66a1218d123..e94ea4669c6 100644 --- a/spec/services/test_hooks/system_service_spec.rb +++ b/spec/services/test_hooks/system_service_spec.rb @@ -21,7 +21,7 @@ RSpec.describe TestHooks::SystemService do it 'returns error message' do expect(hook).not_to receive(:execute) - expect(service.execute).to include({ status: :error, message: 'Testing not available for this hook' }) + expect(service.execute).to have_attributes(status: :error, message: 'Testing not available for this hook') end end @@ -70,7 +70,7 @@ RSpec.describe TestHooks::SystemService do it 'returns error message if the user does not have any repository with a merge request' do expect(hook).not_to receive(:execute) - expect(service.execute).to include({ status: :error, message: 'Ensure one of your projects has merge requests.' }) + expect(service.execute).to have_attributes(status: :error, message: 'Ensure one of your projects has merge requests.') end it 'executes hook' do diff --git a/spec/support/matchers/be_boolean.rb b/spec/support/matchers/be_boolean.rb new file mode 100644 index 00000000000..b8c2c385504 --- /dev/null +++ b/spec/support/matchers/be_boolean.rb @@ -0,0 +1,10 @@ +# frozen_string_literal: true + +# Assert that this value is a boolean, i.e. true or false +# +# ``` +# expect(value).to be_boolean +# ``` +RSpec::Matchers.define :be_boolean do + match { |value| value.in? [true, false] } +end diff --git a/spec/support/shared_examples/workers/batched_background_migration_worker_shared_examples.rb b/spec/support/shared_examples/workers/batched_background_migration_worker_shared_examples.rb index 80a5c4ea9cc..8ec955940c0 100644 --- a/spec/support/shared_examples/workers/batched_background_migration_worker_shared_examples.rb +++ b/spec/support/shared_examples/workers/batched_background_migration_worker_shared_examples.rb @@ -256,7 +256,7 @@ RSpec.shared_examples 'it runs batched background migration jobs' do |tracking_d Class.new(Gitlab::BackgroundMigration::BatchedMigrationJob) do job_arguments :matching_status operation_name :update_all - feature_category :code_review + feature_category :code_review_workflow def perform each_sub_batch( |