From d4b2ad25a56a9baf41a27a2190458330645b3102 Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Mon, 9 Jan 2023 21:08:39 +0000 Subject: Add latest changes from gitlab-org/gitlab@master --- .../components/pipeline_schedules.vue | 142 ++++++++++++++------- .../table/cells/pipeline_schedule_actions.vue | 9 +- .../components/table/pipeline_schedules_table.vue | 1 + .../play_pipeline_schedule.mutation.graphql | 6 + .../mount_pipeline_schedules_app.js | 3 +- app/assets/stylesheets/framework/selects.scss | 11 ++ app/controllers/autocomplete_controller.rb | 2 +- app/controllers/dashboard_controller.rb | 2 +- .../groups/autocomplete_sources_controller.rb | 2 +- app/controllers/groups_controller.rb | 2 +- app/controllers/omniauth_callbacks_controller.rb | 1 - .../projects/autocomplete_sources_controller.rb | 2 +- .../merge_requests/application_controller.rb | 2 +- .../projects/merge_requests_controller.rb | 2 +- .../projects/settings/ci_cd_controller.rb | 1 + .../projects/settings/merge_requests_controller.rb | 2 +- app/controllers/projects_controller.rb | 2 +- .../resolvers/projects/branch_rules_resolver.rb | 10 +- app/graphql/types/projects/branch_rule_type.rb | 16 +-- app/helpers/emails_helper.rb | 35 +++-- app/models/projects/branch_rule.rb | 32 +++++ app/models/protected_branch.rb | 8 +- app/models/user.rb | 11 +- app/policies/projects/branch_rule_policy.rb | 8 ++ app/services/boards/base_items_list_service.rb | 6 - .../concerns/integrations/project_test_data.rb | 24 ++-- app/services/integrations/test/base_service.rb | 4 +- app/services/test_hooks/base_service.rb | 7 + .../shared/_signup_omniauth_provider_list.haml | 2 +- .../projects/pipeline_schedules/index.html.haml | 2 +- app/workers/all_queues.yml | 38 +++--- app/workers/create_note_diff_file_worker.rb | 2 +- app/workers/delete_diff_files_worker.rb | 2 +- app/workers/merge_request_cleanup_refs_worker.rb | 2 +- .../merge_request_mergeability_check_worker.rb | 2 +- app/workers/merge_requests/close_issue_worker.rb | 2 +- .../merge_requests/create_approval_event_worker.rb | 2 +- .../merge_requests/create_approval_note_worker.rb | 2 +- .../execute_approval_hooks_worker.rb | 2 +- .../handle_assignees_change_worker.rb | 2 +- .../resolve_todos_after_approval_worker.rb | 2 +- app/workers/merge_requests/resolve_todos_worker.rb | 2 +- .../merge_requests/update_head_pipeline_worker.rb | 2 +- app/workers/migrate_external_diffs_worker.rb | 2 +- app/workers/new_merge_request_worker.rb | 2 +- .../remove_unreferenced_lfs_objects_worker.rb | 2 +- .../schedule_merge_request_cleanup_refs_worker.rb | 2 +- .../schedule_migrate_external_diffs_worker.rb | 2 +- app/workers/stuck_merge_jobs_worker.rb | 2 +- app/workers/update_merge_requests_worker.rb | 2 +- config/feature_categories.yml | 9 +- .../development/update_oauth_registration_flow.yml | 8 -- ...oval_merge_request_rules_approved_approvers.yml | 2 +- db/docs/approver_groups.yml | 2 +- db/docs/approvers.yml | 2 +- db/docs/draft_notes.yml | 2 +- db/docs/lfs_file_locks.yml | 2 +- db/docs/lfs_object_states.yml | 2 +- db/docs/lfs_objects.yml | 2 +- db/docs/lfs_objects_projects.yml | 1 - db/docs/merge_request_assignees.yml | 2 +- db/docs/merge_request_cleanup_schedules.yml | 2 +- .../merge_request_context_commit_diff_files.yml | 2 +- db/docs/merge_request_context_commits.yml | 2 +- db/docs/merge_request_diff_commit_users.yml | 2 +- db/docs/merge_request_diff_commits.yml | 2 +- db/docs/merge_request_diff_files.yml | 2 +- db/docs/merge_request_diffs.yml | 2 +- db/docs/merge_request_metrics.yml | 2 +- db/docs/merge_request_reviewers.yml | 2 +- db/docs/merge_requests.yml | 2 +- db/docs/merge_requests_closing_issues.yml | 2 +- db/docs/note_diff_files.yml | 2 +- db/docs/notes.yml | 2 +- db/docs/reviews.yml | 2 +- db/docs/suggestions.yml | 2 +- db/docs/uploads.yml | 2 +- doc/api/graphql/reference/index.md | 3 +- doc/development/application_slis/index.md | 2 +- doc/development/feature_categorization/index.md | 2 +- .../application_security/vulnerabilities/index.md | 2 + .../img/web_editor_new_directory_dialog_v14_1.png | Bin 13757 -> 0 bytes .../web_editor_new_directory_dropdown_v14_1.png | Bin 11169 -> 0 bytes .../repository/img/web_editor_new_tag_dropdown.png | Bin 9706 -> 0 bytes .../repository/img/web_editor_new_tag_page.png | Bin 21835 -> 0 bytes .../img/web_editor_upload_file_dialog_v14_1.png | Bin 17522 -> 0 bytes .../img/web_editor_upload_file_dropdown_v14_1.png | Bin 11572 -> 0 bytes doc/user/project/repository/web_editor.md | 63 +++------ lib/api/helpers/award_emoji.rb | 2 +- lib/api/helpers/discussions_helpers.rb | 4 +- lib/api/helpers/notes_helpers.rb | 2 +- lib/api/helpers/resource_events_helpers.rb | 2 +- lib/api/merge_request_diffs.rb | 2 +- lib/api/merge_requests.rb | 42 +++--- lib/api/resource_milestone_events.rb | 2 +- lib/api/subscriptions.rb | 2 +- lib/api/suggestions.rb | 2 +- lib/gitlab/import_export/project/import_export.yml | 9 +- lib/gitlab/metrics/requests_rack_middleware.rb | 2 +- locale/gitlab.pot | 13 +- .../inject_enterprise_edition_module_spec.rb | 2 +- .../merge_requests/creations_controller_spec.rb | 2 +- .../projects/merge_requests_controller_spec.rb | 2 +- spec/features/dashboard/merge_requests_spec.rb | 2 +- spec/features/groups/merge_requests_spec.rb | 2 +- spec/features/merge_request/batch_comments_spec.rb | 2 +- .../close_reopen_report_toggle_spec.rb | 2 +- .../merge_request/maintainer_edits_fork_spec.rb | 2 +- .../merge_request_discussion_lock_spec.rb | 2 +- .../user_accepts_merge_request_spec.rb | 2 +- ...ows_commits_from_memebers_who_can_merge_spec.rb | 2 +- spec/features/merge_request/user_approves_spec.rb | 2 +- .../user_assigns_themselves_reviewer_spec.rb | 2 +- .../merge_request/user_assigns_themselves_spec.rb | 2 +- .../merge_request/user_awards_emoji_spec.rb | 2 +- .../user_clicks_merge_request_tabs_spec.rb | 2 +- ...user_closes_reopens_merge_request_state_spec.rb | 2 +- .../merge_request/user_comments_on_commit_spec.rb | 2 +- .../merge_request/user_comments_on_diff_spec.rb | 2 +- .../user_comments_on_merge_request_spec.rb | 2 +- .../user_creates_image_diff_notes_spec.rb | 2 +- .../user_creates_merge_request_spec.rb | 2 +- .../features/merge_request/user_creates_mr_spec.rb | 2 +- .../user_customizes_merge_commit_message_spec.rb | 2 +- .../user_edits_assignees_sidebar_spec.rb | 2 +- .../merge_request/user_edits_merge_request_spec.rb | 2 +- spec/features/merge_request/user_edits_mr_spec.rb | 2 +- .../user_edits_reviewers_sidebar_spec.rb | 2 +- .../merge_request/user_expands_diff_spec.rb | 2 +- .../user_interacts_with_batched_mr_diffs_spec.rb | 2 +- .../merge_request/user_locks_discussion_spec.rb | 2 +- .../user_manages_subscription_spec.rb | 2 +- .../user_marks_merge_request_as_draft_spec.rb | 2 +- .../merge_request/user_merges_immediately_spec.rb | 2 +- .../user_merges_merge_request_spec.rb | 2 +- .../user_merges_only_if_pipeline_succeeds_spec.rb | 2 +- .../user_merges_when_pipeline_succeeds_spec.rb | 2 +- .../user_opens_checkout_branch_modal_spec.rb | 2 +- .../user_opens_context_commits_modal_spec.rb | 2 +- .../merge_request/user_posts_diff_notes_spec.rb | 2 +- .../merge_request/user_posts_notes_spec.rb | 2 +- .../user_rebases_merge_request_spec.rb | 2 +- .../merge_request/user_resolves_conflicts_spec.rb | 2 +- ...lves_diff_notes_and_discussions_resolve_spec.rb | 2 +- ...user_resolves_outdated_diff_discussions_spec.rb | 3 +- .../merge_request/user_resolves_wip_mr_spec.rb | 2 +- .../user_reverts_merge_request_spec.rb | 2 +- .../merge_request/user_reviews_image_spec.rb | 2 +- .../user_scrolls_to_note_on_load_spec.rb | 2 +- .../user_sees_avatar_on_diff_notes_spec.rb | 2 +- .../user_sees_breadcrumb_links_spec.rb | 2 +- .../user_sees_check_out_branch_modal_spec.rb | 2 +- .../user_sees_cherry_pick_modal_spec.rb | 2 +- .../user_sees_closing_issues_message_spec.rb | 2 +- .../user_sees_deleted_target_branch_spec.rb | 2 +- spec/features/merge_request/user_sees_diff_spec.rb | 2 +- .../user_sees_discussions_navigation_spec.rb | 2 +- .../merge_request/user_sees_discussions_spec.rb | 2 +- ...ton_depending_on_unresolved_discussions_spec.rb | 2 +- .../user_sees_merge_request_pipelines_spec.rb | 2 +- .../merge_request/user_sees_merge_widget_spec.rb | 2 +- ...ser_sees_mr_from_deleted_forked_project_spec.rb | 3 +- ...user_sees_mr_with_deleted_source_branch_spec.rb | 3 +- .../user_sees_notes_from_forked_project_spec.rb | 2 +- .../merge_request/user_sees_page_metadata_spec.rb | 2 +- .../merge_request/user_sees_pipelines_spec.rb | 2 +- .../merge_request/user_sees_system_notes_spec.rb | 2 +- .../merge_request/user_sees_versions_spec.rb | 2 +- .../user_sees_wip_help_message_spec.rb | 2 +- .../user_selects_branches_for_new_mr_spec.rb | 2 +- .../user_squashes_merge_request_spec.rb | 2 +- .../user_suggests_changes_on_diff_spec.rb | 2 +- .../user_toggles_whitespace_changes_spec.rb | 2 +- ...ess_private_project_info_through_new_mr_spec.rb | 2 +- .../merge_request/user_uses_quick_actions_spec.rb | 2 +- .../user_views_auto_expanding_diff_spec.rb | 2 +- .../merge_request/user_views_diffs_commit_spec.rb | 2 +- .../user_views_diffs_file_by_file_spec.rb | 2 +- .../merge_request/user_views_diffs_spec.rb | 2 +- ...r_views_merge_request_from_deleted_fork_spec.rb | 2 +- .../user_views_open_merge_request_spec.rb | 2 +- .../filters_generic_behavior_spec.rb | 2 +- spec/features/merge_requests/rss_spec.rb | 2 +- .../merge_requests/user_exports_as_csv_spec.rb | 2 +- .../user_filters_by_approvals_spec.rb | 2 +- .../user_filters_by_assignees_spec.rb | 2 +- .../user_filters_by_deployments_spec.rb | 2 +- .../merge_requests/user_filters_by_draft_spec.rb | 2 +- .../merge_requests/user_filters_by_labels_spec.rb | 2 +- .../user_filters_by_milestones_spec.rb | 2 +- .../user_filters_by_multiple_criteria_spec.rb | 2 +- .../user_filters_by_target_branch_spec.rb | 2 +- .../user_lists_merge_requests_spec.rb | 2 +- .../merge_requests/user_mass_updates_spec.rb | 2 +- .../merge_requests/user_sees_empty_state_spec.rb | 2 +- .../user_sorts_merge_requests_spec.rb | 2 +- .../user_views_all_merge_requests_spec.rb | 2 +- .../user_views_closed_merge_requests_spec.rb | 2 +- .../user_views_merged_merge_requests_spec.rb | 2 +- .../user_views_open_merge_requests_spec.rb | 2 +- spec/features/oauth_registration_spec.rb | 17 --- spec/features/projects/diffs/diff_show_spec.rb | 2 +- .../projects/import_export/export_file_spec.rb | 4 +- spec/features/user_sees_revert_modal_spec.rb | 2 +- spec/features/user_sorts_things_spec.rb | 2 +- .../lib/gitlab/import_export/complex/project.json | 76 ++++++----- .../components/pipeline_schedules_spec.js | 43 +++++++ .../table/cells/pipeline_schedule_actions_spec.js | 11 ++ spec/frontend/ci/pipeline_schedules/mock_data.js | 10 ++ spec/helpers/emails_helper_spec.rb | 16 +-- .../merge_request_diff_batch_spec.rb | 2 +- .../paginated_merge_request_diff_spec.rb | 2 +- .../gitlab/import_export/safe_model_attributes.yml | 3 + .../merge_requests/message_generator_spec.rb | 2 +- ...e_cleanup_orphaned_lfs_objects_projects_spec.rb | 2 +- ...request_diff_users_background_migration_spec.rb | 3 +- ...migrate_merge_request_diff_commit_users_spec.rb | 2 +- ...rge_request_diff_commit_users_migration_spec.rb | 2 +- ...29_cleanup_draft_data_from_faulty_regex_spec.rb | 2 +- ..._up_fix_merge_request_diff_commit_users_spec.rb | 2 +- .../cleanup_mr_attention_request_todos_spec.rb | 2 +- ...tatus_on_merge_requests_corrected_regex_spec.rb | 3 +- ...ce_merge_request_diff_commit_migrations_spec.rb | 2 +- spec/models/projects/branch_rule_spec.rb | 32 +++++ spec/models/user_spec.rb | 27 ++-- .../api/graphql/group/merge_requests_spec.rb | 2 +- .../graphql/merge_request/merge_request_spec.rb | 2 +- .../mutations/merge_requests/create_spec.rb | 2 +- .../merge_requests/reviewer_rereview_spec.rb | 2 +- .../mutations/merge_requests/set_assignees_spec.rb | 2 +- .../mutations/merge_requests/set_draft_spec.rb | 2 +- .../mutations/merge_requests/set_locked_spec.rb | 2 +- .../mutations/merge_requests/set_milestone_spec.rb | 2 +- .../mutations/merge_requests/set_reviewers_spec.rb | 2 +- .../merge_requests/set_subscription_spec.rb | 2 +- .../api/graphql/project/branch_rules_spec.rb | 45 ++++--- .../project/merge_request/diff_notes_spec.rb | 2 +- .../api/graphql/project/merge_request_spec.rb | 2 +- .../api/graphql/project/merge_requests_spec.rb | 2 +- spec/requests/api/suggestions_spec.rb | 2 +- .../projects/merge_requests/content_spec.rb | 2 +- .../merge_requests/context_commit_diffs_spec.rb | 2 +- .../projects/merge_requests/creations_spec.rb | 2 +- .../requests/projects/merge_requests/diffs_spec.rb | 2 +- spec/services/discussions/resolve_service_spec.rb | 2 +- .../services/discussions/unresolve_service_spec.rb | 2 +- spec/services/merge_requests/base_service_spec.rb | 2 +- .../services/merge_requests/update_service_spec.rb | 2 +- spec/services/test_hooks/project_service_spec.rb | 18 +-- spec/services/test_hooks/system_service_spec.rb | 4 +- spec/support/matchers/be_boolean.rb | 10 ++ ..._background_migration_worker_shared_examples.rb | 2 +- 252 files changed, 733 insertions(+), 519 deletions(-) create mode 100644 app/assets/javascripts/ci/pipeline_schedules/graphql/mutations/play_pipeline_schedule.mutation.graphql create mode 100644 app/models/projects/branch_rule.rb create mode 100644 app/policies/projects/branch_rule_policy.rb delete mode 100644 config/feature_flags/development/update_oauth_registration_flow.yml delete mode 100644 doc/user/project/repository/img/web_editor_new_directory_dialog_v14_1.png delete mode 100644 doc/user/project/repository/img/web_editor_new_directory_dropdown_v14_1.png delete mode 100644 doc/user/project/repository/img/web_editor_new_tag_dropdown.png delete mode 100644 doc/user/project/repository/img/web_editor_new_tag_page.png delete mode 100644 doc/user/project/repository/img/web_editor_upload_file_dialog_v14_1.png delete mode 100644 doc/user/project/repository/img/web_editor_upload_file_dropdown_v14_1.png create mode 100644 spec/models/projects/branch_rule_spec.rb create mode 100644 spec/support/matchers/be_boolean.rb 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 @@ ") } let(:expected_output) do - 'Reviewer changed to <script>alert('hi')</script>' + '<script>alert('hi')</script> was added as a reviewer.
' 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.
' 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( -- cgit v1.2.1