diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2022-09-01 15:11:56 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2022-09-01 15:11:56 +0300 |
commit | a53033814ddff597cd05244f378915bacdcb5aea (patch) | |
tree | c72cddf8268e72cd46e3a1b0f04298aa6a04533b /spec | |
parent | f60abc43151ae4589e96824c3c8674e76cb0cb9c (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec')
36 files changed, 429 insertions, 131 deletions
diff --git a/spec/components/pajamas/badge_component_spec.rb b/spec/components/pajamas/badge_component_spec.rb new file mode 100644 index 00000000000..4c564121ba2 --- /dev/null +++ b/spec/components/pajamas/badge_component_spec.rb @@ -0,0 +1,148 @@ +# frozen_string_literal: true + +require "spec_helper" + +RSpec.describe Pajamas::BadgeComponent, type: :component do + let(:text) { "Hello" } + let(:options) { {} } + let(:html_options) { {} } + + before do + render_inline(described_class.new(text, **options, **html_options)) + end + + describe "text param" do + it "is shown inside the badge" do + expect(page).to have_css ".gl-badge", text: text + end + end + + describe "content slot" do + it "can be used instead of the text param" do + render_inline(described_class.new) do + "Slot content" + end + expect(page).to have_css ".gl-badge", text: "Slot content" + end + + it "takes presendence over the text param" do + render_inline(described_class.new(text)) do + "Slot wins." + end + expect(page).to have_css ".gl-badge", text: "Slot wins." + end + end + + describe "options" do + describe "icon" do + let(:options) { { icon: :tanuki } } + + it "adds the correct icon and margin" do + expect(page).to have_css ".gl-icon.gl-badge-icon.gl-mr-2[data-testid='tanuki-icon']" + end + end + + describe "icon_classes" do + let(:options) { { icon: :tanuki, icon_classes: icon_classes } } + + context "as string" do + let(:icon_classes) { "js-special-badge-icon js-extra-special" } + + it "combines custom classes and component classes" do + expect(page).to have_css \ + ".gl-icon.gl-badge-icon.gl-mr-2.js-special-badge-icon.js-extra-special[data-testid='tanuki-icon']" + end + end + + context "as array" do + let(:icon_classes) { %w[js-special-badge-icon js-extra-special] } + + it "combines custom classes and component classes" do + expect(page).to have_css \ + ".gl-icon.gl-badge-icon.gl-mr-2.js-special-badge-icon.js-extra-special[data-testid='tanuki-icon']" + end + end + end + + describe "icon_only" do + let(:options) { { icon: :tanuki, icon_only: true } } + + it "adds no extra margin to the icon" do + expect(page).not_to have_css ".gl-icon.gl-mr-2" + end + + it "adds the text as ARIA label" do + expect(page).to have_css ".gl-badge[aria-label='#{text}'][role='img']" + end + end + + describe "href" do + let(:options) { { href: "/foo" } } + + it "makes the a badge a link" do + expect(page).to have_link text, class: "gl-badge", href: "/foo" + end + end + + describe "size" do + where(:size) { [:sm, :md, :lg] } + + with_them do + let(:options) { { size: size } } + + it "adds size class" do + expect(page).to have_css ".gl-badge.#{size}" + end + end + + context "with unknown size" do + let(:options) { { size: :xxl } } + + it "adds the default size class" do + expect(page).to have_css ".gl-badge.md" + end + end + end + + describe "variant" do + where(:variant) { [:muted, :neutral, :info, :success, :warning, :danger] } + + with_them do + let(:options) { { variant: variant } } + + it "adds variant class" do + expect(page).to have_css ".gl-badge.badge-#{variant}" + end + end + + context "with unknown variant" do + let(:options) { { variant: :foo } } + + it "adds the default variant class" do + expect(page).to have_css ".gl-badge.badge-muted" + end + end + end + end + + describe "HTML options" do + let(:html_options) { { id: "badge-33", data: { foo: "bar" } } } + + it "get added as HTML attributes" do + expect(page).to have_css ".gl-badge#badge-33[data-foo='bar']" + end + + it "can be combined with component options in no particular order" do + render_inline(described_class.new(text, id: "badge-34", variant: :success, data: { foo: "baz" }, size: :sm)) + expect(page).to have_css ".gl-badge.badge-success.sm#badge-34[data-foo='baz']" + end + + context "with custom CSS classes" do + let(:html_options) { { id: "badge-35", class: "js-special-badge" } } + + it "combines custom classes and component classes" do + expect(page).to have_css ".gl-badge.js-special-badge#badge-35" + end + end + end +end diff --git a/spec/components/previews/pajamas/badge_component_preview.rb b/spec/components/previews/pajamas/badge_component_preview.rb new file mode 100644 index 00000000000..e740a4a38aa --- /dev/null +++ b/spec/components/previews/pajamas/badge_component_preview.rb @@ -0,0 +1,61 @@ +# frozen_string_literal: true + +module Pajamas + class BadgeComponentPreview < ViewComponent::Preview + # Badge + # --- + # + # See its design reference [here](https://design.gitlab.com/components/badge). + # + # @param icon select [~, star-o, issue-closed, tanuki] + # @param icon_only toggle + # @param href url + # @param size select [sm, md, lg] + # @param text text + # @param variant select [muted, neutral, info, success, warning, danger] + def default(icon: :tanuki, icon_only: false, href: nil, size: :md, text: "Tanuki", variant: :muted) + render Pajamas::BadgeComponent.new( + text, + icon: icon, + icon_only: icon_only, + href: href, + size: size, + variant: variant + ) + end + + # Using the content slot + # --- + # + # Use the content slot instead of the `text` param when things get more complicated than a plain string. + # All other options (`icon`, `size`, etc.) work as usual. + def slot + render Pajamas::BadgeComponent.new(size: :lg, variant: :info) do + "!ereht olleh".reverse.capitalize + end + end + + # Custom HTML attributes and icon classes + # --- + # + # Any extra options passed into the component are treated as HTML attributes. + # This makes adding data or an id easy. + # + # CSS classes provided with the `class:` option are combined with the component classes. + # + # It is also possible to set custom `icon_classes:`. + # + # The order in which you provide these keywords doesn't matter. + def custom + render Pajamas::BadgeComponent.new( + "I'm special.", + class: "js-special-badge", + data: { count: 1 }, + icon: :tanuki, + icon_classes: ["js-special-badge-icon"], + id: "special-badge-22", + variant: :success + ) + end + end +end diff --git a/spec/controllers/projects/pipeline_schedules_controller_spec.rb b/spec/controllers/projects/pipeline_schedules_controller_spec.rb index fa90a0d9abc..5bcfae4227c 100644 --- a/spec/controllers/projects/pipeline_schedules_controller_spec.rb +++ b/spec/controllers/projects/pipeline_schedules_controller_spec.rb @@ -354,13 +354,14 @@ RSpec.describe Projects::PipelineSchedulesController do end def go - put :update, params: { + put :update, + params: { namespace_id: project.namespace.to_param, project_id: project, id: pipeline_schedule, schedule: schedule }, - as: :html + as: :html end end diff --git a/spec/controllers/projects/service_desk_controller_spec.rb b/spec/controllers/projects/service_desk_controller_spec.rb index bc507a033dc..e078bf9461e 100644 --- a/spec/controllers/projects/service_desk_controller_spec.rb +++ b/spec/controllers/projects/service_desk_controller_spec.rb @@ -4,8 +4,9 @@ require 'spec_helper' RSpec.describe Projects::ServiceDeskController do let_it_be(:project) do - create(:project, :private, :custom_repo, service_desk_enabled: true, - files: { '.gitlab/issue_templates/service_desk.md' => 'template' }) + create(:project, :private, :custom_repo, + service_desk_enabled: true, + files: { '.gitlab/issue_templates/service_desk.md' => 'template' }) end let_it_be(:user) { create(:user) } diff --git a/spec/fixtures/api/schemas/external_validation.json b/spec/fixtures/api/schemas/external_validation.json index 4a2538a020e..411c2ed591b 100644 --- a/spec/fixtures/api/schemas/external_validation.json +++ b/spec/fixtures/api/schemas/external_validation.json @@ -3,6 +3,7 @@ "required" : [ "project", "user", + "credit_card", "pipeline", "builds", "total_builds_count" @@ -43,6 +44,17 @@ "sign_in_count": { "type": "integer" } } }, + "credit_card": { + "type": "object", + "required": [ + "similar_cards_count", + "similar_holder_names_count" + ], + "properties": { + "similar_cards_count": { "type": "integer" }, + "similar_holder_names_count": { "type": "integer" } + } + }, "pipeline": { "type": "object", "required": [ diff --git a/spec/helpers/tab_helper_spec.rb b/spec/helpers/tab_helper_spec.rb index dd5707e2aff..80a1224abbb 100644 --- a/spec/helpers/tab_helper_spec.rb +++ b/spec/helpers/tab_helper_spec.rb @@ -182,7 +182,7 @@ RSpec.describe TabHelper do context 'with data attributes' do it 'creates a tab counter badge with the data attributes' do expect(helper.gl_tab_counter_badge(1, { data: { some_attribute: 'foo' } })).to eq( - '<span data-some-attribute="foo" class="gl-badge badge badge-pill badge-muted sm gl-tab-counter-badge">1</span>' + '<span class="gl-badge badge badge-pill badge-muted sm gl-tab-counter-badge" data-some-attribute="foo">1</span>' ) end end diff --git a/spec/lib/banzai/filter/kroki_filter_spec.rb b/spec/lib/banzai/filter/kroki_filter_spec.rb index 1fb61ad1991..3f4f3aafdd6 100644 --- a/spec/lib/banzai/filter/kroki_filter_spec.rb +++ b/spec/lib/banzai/filter/kroki_filter_spec.rb @@ -46,4 +46,12 @@ RSpec.describe Banzai::Filter::KrokiFilter do expect(doc.to_s).to start_with '<img src="http://localhost:8000/nomnoml/svg/eNqLDsgsSixJrUmtTHXOL80rsVLwzCupKUrMTNHQtC7IzMlJTE_V0KyJyVNQiE5KTSxKidXVjS5ILCrKL4lFFrSyi07LL81RyM0vLckAysRGjxo8avCowaMGjxo8avCowaMGU8lgAE7mIdc=" hidden="" class="js-render-kroki" data-diagram="nomnoml" data-diagram-src="data:text/plain;base64,W1BpcmF0ZXxleWVDb3VudDog' end + + it 'allows the lang attribute on the code tag to support RST files processed by gitlab-markup gem' do + stub_application_setting(kroki_enabled: true, kroki_url: "http://localhost:8000") + text = '[Pirate|eyeCount: Int|raid();pillage()|\n [beard]--[parrot]\n [beard]-:>[foul mouth]\n]' * 25 + doc = filter("<pre><code lang='nomnoml'>#{text}</code></pre>") + + expect(doc.to_s).to start_with '<img src="http://localhost:8000/nomnoml/svg/eNqLDsgsSixJrUmtTHXOL80rsVLwzCupKUrMTNHQtC7IzMlJTE_V0KyJyVNQiE5KTSxKidXVjS5ILCrKL4lFFrSyi07LL81RyM0vLckAysRGjxo8avCowaMGjxo8avCowaMGU8lgAE7mIdc=" hidden="" class="js-render-kroki" data-diagram="nomnoml" data-diagram-src="data:text/plain;base64,W1BpcmF0ZXxleWVDb3VudDog' + end end diff --git a/spec/lib/gitlab/ci/pipeline/chain/validate/external_spec.rb b/spec/lib/gitlab/ci/pipeline/chain/validate/external_spec.rb index fb1a360a4b7..52a00e0d501 100644 --- a/spec/lib/gitlab/ci/pipeline/chain/validate/external_spec.rb +++ b/spec/lib/gitlab/ci/pipeline/chain/validate/external_spec.rb @@ -179,6 +179,70 @@ RSpec.describe Gitlab::Ci::Pipeline::Chain::Validate::External do perform! end end + + describe 'credit_card' do + context 'with no registered credit_card' do + it 'returns the expected credit card counts' do + expect(::Gitlab::HTTP).to receive(:post) do |_url, params| + payload = Gitlab::Json.parse(params[:body]) + + expect(payload['credit_card']['similar_cards_count']).to eq(0) + expect(payload['credit_card']['similar_holder_names_count']).to eq(0) + end + + perform! + end + end + + context 'with a registered credit card' do + let!(:credit_card) { create(:credit_card_validation, last_digits: 10, holder_name: 'Alice', user: user) } + + it 'returns the expected credit card counts' do + expect(::Gitlab::HTTP).to receive(:post) do |_url, params| + payload = Gitlab::Json.parse(params[:body]) + + expect(payload['credit_card']['similar_cards_count']).to eq(1) + expect(payload['credit_card']['similar_holder_names_count']).to eq(1) + end + + perform! + end + + context 'with similar credit cards registered by other users' do + before do + create(:credit_card_validation, last_digits: 10, holder_name: 'Bob') + end + + it 'returns the expected credit card counts' do + expect(::Gitlab::HTTP).to receive(:post) do |_url, params| + payload = Gitlab::Json.parse(params[:body]) + + expect(payload['credit_card']['similar_cards_count']).to eq(2) + expect(payload['credit_card']['similar_holder_names_count']).to eq(1) + end + + perform! + end + end + + context 'with similar holder names registered by other users' do + before do + create(:credit_card_validation, last_digits: 11, holder_name: 'Alice') + end + + it 'returns the expected credit card counts' do + expect(::Gitlab::HTTP).to receive(:post) do |_url, params| + payload = Gitlab::Json.parse(params[:body]) + + expect(payload['credit_card']['similar_cards_count']).to eq(1) + expect(payload['credit_card']['similar_holder_names_count']).to eq(2) + end + + perform! + end + end + end + end end context 'when EXTERNAL_VALIDATION_SERVICE_TOKEN is set' do diff --git a/spec/models/users/credit_card_validation_spec.rb b/spec/models/users/credit_card_validation_spec.rb index 34cfd500c26..c003e004d29 100644 --- a/spec/models/users/credit_card_validation_spec.rb +++ b/spec/models/users/credit_card_validation_spec.rb @@ -28,4 +28,15 @@ RSpec.describe Users::CreditCardValidation do expect(subject.similar_records).to eq([match2, match1, subject]) end end + + describe '.similar_holder_names_count' do + subject!(:credit_card_validation) { create(:credit_card_validation, holder_name: 'ALICE M SMITH') } + + let!(:match) { create(:credit_card_validation, holder_name: 'Alice M Smith') } + let!(:non_match) { create(:credit_card_validation, holder_name: 'Bob B Brown') } + + it 'returns the count of cards with similar case insensitive holder names' do + expect(subject.similar_holder_names_count).to eq(2) + end + end end diff --git a/spec/services/ci/create_downstream_pipeline_service_spec.rb b/spec/services/ci/create_downstream_pipeline_service_spec.rb index 11fb564b843..c990d195e51 100644 --- a/spec/services/ci/create_downstream_pipeline_service_spec.rb +++ b/spec/services/ci/create_downstream_pipeline_service_spec.rb @@ -440,10 +440,7 @@ RSpec.describe Ci::CreateDownstreamPipelineService, '#execute' do let!(:trigger_project_bridge) do create( - :ci_bridge, status: :pending, - user: user, - options: trigger_downstream_project, - pipeline: child_pipeline + :ci_bridge, status: :pending, user: user, options: trigger_downstream_project, pipeline: child_pipeline ) end diff --git a/spec/services/ci/create_pipeline_service/logger_spec.rb b/spec/services/ci/create_pipeline_service/logger_spec.rb index c4063751fa8..2be23802757 100644 --- a/spec/services/ci/create_pipeline_service/logger_spec.rb +++ b/spec/services/ci/create_pipeline_service/logger_spec.rb @@ -19,9 +19,9 @@ RSpec.describe Ci::CreatePipelineService, :yaml_processor_feature_flag_corectnes let(:counters) do { 'count' => a_kind_of(Numeric), - 'avg' => a_kind_of(Numeric), - 'max' => a_kind_of(Numeric), - 'min' => a_kind_of(Numeric) + 'avg' => a_kind_of(Numeric), + 'max' => a_kind_of(Numeric), + 'min' => a_kind_of(Numeric) } end diff --git a/spec/services/ci/create_pipeline_service/tags_spec.rb b/spec/services/ci/create_pipeline_service/tags_spec.rb index 7eb9acfb422..7450df11eac 100644 --- a/spec/services/ci/create_pipeline_service/tags_spec.rb +++ b/spec/services/ci/create_pipeline_service/tags_spec.rb @@ -37,7 +37,7 @@ RSpec.describe Ci::CreatePipelineService, :yaml_processor_feature_flag_corectnes context 'tags persistence' do let(:config) do { - build: { + build: { script: 'ls', stage: 'build', tags: build_tag_list(label: 'build') diff --git a/spec/services/ci/job_artifacts/create_service_spec.rb b/spec/services/ci/job_artifacts/create_service_spec.rb index 7b3f67b192f..6809b694b22 100644 --- a/spec/services/ci/job_artifacts/create_service_spec.rb +++ b/spec/services/ci/job_artifacts/create_service_spec.rb @@ -151,9 +151,8 @@ RSpec.describe Ci::JobArtifacts::CreateService do expect { subject }.not_to change { Ci::JobArtifact.count } expect(subject).to match( - a_hash_including(http_status: :bad_request, - message: 'another artifact of the same type already exists', - status: :error)) + a_hash_including( + http_status: :bad_request, message: 'another artifact of the same type already exists', status: :error)) end end end diff --git a/spec/services/ci/retry_job_service_spec.rb b/spec/services/ci/retry_job_service_spec.rb index b14e4187c7a..5914e0fc4c1 100644 --- a/spec/services/ci/retry_job_service_spec.rb +++ b/spec/services/ci/retry_job_service_spec.rb @@ -7,14 +7,13 @@ RSpec.describe Ci::RetryJobService do let_it_be(:developer) { create(:user) } let_it_be(:project) { create(:project, :repository) } let_it_be(:pipeline) do - create(:ci_pipeline, project: project, - sha: 'b83d6e391c22777fca1ed3012fce84f633d7fed0') + create(:ci_pipeline, project: project, sha: 'b83d6e391c22777fca1ed3012fce84f633d7fed0') end let_it_be(:stage) do create(:ci_stage, project: project, - pipeline: pipeline, - name: 'test') + pipeline: pipeline, + name: 'test') end let(:job_variables_attributes) { [{ key: 'MANUAL_VAR', value: 'manual test var' }] } @@ -31,9 +30,8 @@ RSpec.describe Ci::RetryJobService do let_it_be(:downstream_project) { create(:project, :repository) } let_it_be_with_refind(:job) do - create( - :ci_bridge, :success, pipeline: pipeline, downstream: downstream_project, - description: 'a trigger job', stage_id: stage.id + create(:ci_bridge, :success, + pipeline: pipeline, downstream: downstream_project, description: 'a trigger job', stage_id: stage.id ) end @@ -133,9 +131,7 @@ RSpec.describe Ci::RetryJobService do end let!(:subsequent_bridge) do - create(:ci_bridge, :skipped, stage_idx: 2, - pipeline: pipeline, - stage: 'deploy') + create(:ci_bridge, :skipped, stage_idx: 2, pipeline: pipeline, stage: 'deploy') end it 'resumes pipeline processing in the subsequent stage' do @@ -245,10 +241,13 @@ RSpec.describe Ci::RetryJobService do let(:environment_name) { 'review/$CI_COMMIT_REF_SLUG-$GITLAB_USER_ID' } let!(:job) do - create(:ci_build, :with_deployment, environment: environment_name, - options: { environment: { name: environment_name } }, - pipeline: pipeline, stage_id: stage.id, project: project, - user: other_developer) + create(:ci_build, :with_deployment, + environment: environment_name, + options: { environment: { name: environment_name } }, + pipeline: pipeline, + stage_id: stage.id, + project: project, + user: other_developer) end it 'creates a new deployment' do diff --git a/spec/services/deployments/link_merge_requests_service_spec.rb b/spec/services/deployments/link_merge_requests_service_spec.rb index 62adc834733..a653cd2b48b 100644 --- a/spec/services/deployments/link_merge_requests_service_spec.rb +++ b/spec/services/deployments/link_merge_requests_service_spec.rb @@ -159,10 +159,10 @@ RSpec.describe Deployments::LinkMergeRequestsService do it "doesn't link the same merge_request twice" do create(:merge_request, :merged, merge_commit_sha: mr1_merge_commit_sha, - source_project: project) + source_project: project) picked_mr = create(:merge_request, :merged, merge_commit_sha: '123abc', - source_project: project) + source_project: project) # the first MR includes c1c67abba which is a cherry-pick of the fake picked_mr merge request create(:track_mr_picking_note, noteable: picked_mr, project: project, commit_id: 'c1c67abbaf91f624347bb3ae96eabe3a1b742478') diff --git a/spec/services/discussions/capture_diff_note_positions_service_spec.rb b/spec/services/discussions/capture_diff_note_positions_service_spec.rb index 25e5f549bee..8ba54495d4c 100644 --- a/spec/services/discussions/capture_diff_note_positions_service_spec.rb +++ b/spec/services/discussions/capture_diff_note_positions_service_spec.rb @@ -18,8 +18,8 @@ RSpec.describe Discussions::CaptureDiffNotePositionsService do def build_position(diff_refs, new_line: nil, old_line: nil) path = 'files/markdown/ruby-style-guide.md' - Gitlab::Diff::Position.new(old_path: path, new_path: path, - new_line: new_line, old_line: old_line, diff_refs: diff_refs) + Gitlab::Diff::Position.new( + old_path: path, new_path: path, new_line: new_line, old_line: old_line, diff_refs: diff_refs) end def note_for(new_line: nil, old_line: nil) diff --git a/spec/services/environments/stop_service_spec.rb b/spec/services/environments/stop_service_spec.rb index 3ed8a0b1da0..b0c9826b137 100644 --- a/spec/services/environments/stop_service_spec.rb +++ b/spec/services/environments/stop_service_spec.rb @@ -208,8 +208,11 @@ RSpec.describe Environments::StopService do context 'when pipeline is a branch pipeline for merge request' do let(:pipeline) do - create(:ci_pipeline, source: :push, project: project, sha: merge_request.diff_head_sha, - merge_requests_as_head_pipeline: [merge_request]) + create(:ci_pipeline, + source: :push, + project: project, + sha: merge_request.diff_head_sha, + merge_requests_as_head_pipeline: [merge_request]) end it 'does not stop the active environment' do diff --git a/spec/services/event_create_service_spec.rb b/spec/services/event_create_service_spec.rb index e66b413a5c9..06f0eb1efbc 100644 --- a/spec/services/event_create_service_spec.rb +++ b/spec/services/event_create_service_spec.rb @@ -420,9 +420,9 @@ RSpec.describe EventCreateService, :clean_gitlab_redis_cache, :clean_gitlab_redi service.save_designs(author, create: [design]) expect_snowplow_event( - category: Gitlab::UsageDataCounters::TrackUniqueEvents::DESIGN_ACTION.to_s, + category: Gitlab::UsageDataCounters::TrackUniqueEvents::DESIGN_ACTION.to_s, action: 'create', - namespace: design.project.namespace, + namespace: design.project.namespace, user: author, project: design.project, label: 'design_users' @@ -433,9 +433,9 @@ RSpec.describe EventCreateService, :clean_gitlab_redis_cache, :clean_gitlab_redi service.save_designs(author, update: [design]) expect_snowplow_event( - category: Gitlab::UsageDataCounters::TrackUniqueEvents::DESIGN_ACTION.to_s, + category: Gitlab::UsageDataCounters::TrackUniqueEvents::DESIGN_ACTION.to_s, action: 'update', - namespace: design.project.namespace, + namespace: design.project.namespace, user: author, project: design.project, label: 'design_users' @@ -481,9 +481,9 @@ RSpec.describe EventCreateService, :clean_gitlab_redis_cache, :clean_gitlab_redi service.destroy_designs([design], author) expect_snowplow_event( - category: Gitlab::UsageDataCounters::TrackUniqueEvents::DESIGN_ACTION.to_s, + category: Gitlab::UsageDataCounters::TrackUniqueEvents::DESIGN_ACTION.to_s, action: 'destroy', - namespace: design.project.namespace, + namespace: design.project.namespace, user: author, project: design.project, label: 'design_users' diff --git a/spec/services/groups/import_export/import_service_spec.rb b/spec/services/groups/import_export/import_service_spec.rb index 292f2e2b86b..a4dfec4723a 100644 --- a/spec/services/groups/import_export/import_service_spec.rb +++ b/spec/services/groups/import_export/import_service_spec.rb @@ -149,9 +149,9 @@ RSpec.describe Groups::ImportExport::ImportService do it 'logs the import success' do expect(import_logger).to receive(:info).with( - group_id: group.id, + group_id: group.id, group_name: group.name, - message: 'Group Import/Export: Import succeeded' + message: 'Group Import/Export: Import succeeded' ).once subject @@ -161,9 +161,9 @@ RSpec.describe Groups::ImportExport::ImportService do context 'when user does not have correct permissions' do it 'logs the error and raises an exception' do expect(import_logger).to receive(:error).with( - group_id: group.id, + group_id: group.id, group_name: group.name, - message: a_string_including('Errors occurred') + message: a_string_including('Errors occurred') ) expect { subject }.to raise_error(Gitlab::ImportExport::Error) @@ -186,9 +186,9 @@ RSpec.describe Groups::ImportExport::ImportService do it 'logs the error and raises an exception' do expect(import_logger).to receive(:error).with( - group_id: group.id, + group_id: group.id, group_name: group.name, - message: a_string_including('Errors occurred') + message: a_string_including('Errors occurred') ).once expect { subject }.to raise_error(Gitlab::ImportExport::Error) @@ -267,9 +267,9 @@ RSpec.describe Groups::ImportExport::ImportService do it 'logs the import success' do expect(import_logger).to receive(:info).with( - group_id: group.id, + group_id: group.id, group_name: group.name, - message: 'Group Import/Export: Import succeeded' + message: 'Group Import/Export: Import succeeded' ).once subject @@ -279,9 +279,9 @@ RSpec.describe Groups::ImportExport::ImportService do context 'when user does not have correct permissions' do it 'logs the error and raises an exception' do expect(import_logger).to receive(:error).with( - group_id: group.id, + group_id: group.id, group_name: group.name, - message: a_string_including('Errors occurred') + message: a_string_including('Errors occurred') ) expect { subject }.to raise_error(Gitlab::ImportExport::Error) @@ -304,9 +304,9 @@ RSpec.describe Groups::ImportExport::ImportService do it 'logs the error and raises an exception' do expect(import_logger).to receive(:error).with( - group_id: group.id, + group_id: group.id, group_name: group.name, - message: a_string_including('Errors occurred') + message: a_string_including('Errors occurred') ).once expect { subject }.to raise_error(Gitlab::ImportExport::Error) @@ -328,9 +328,9 @@ RSpec.describe Groups::ImportExport::ImportService do allow(Gitlab::Import::Logger).to receive(:build).and_return(import_logger) expect(import_logger).to receive(:info).with( - group_id: group.id, + group_id: group.id, group_name: group.name, - message: 'Group Import/Export: Import succeeded' + message: 'Group Import/Export: Import succeeded' ) subject diff --git a/spec/services/issuable/bulk_update_service_spec.rb b/spec/services/issuable/bulk_update_service_spec.rb index 55e0e799c19..dc72cf04776 100644 --- a/spec/services/issuable/bulk_update_service_spec.rb +++ b/spec/services/issuable/bulk_update_service_spec.rb @@ -47,7 +47,7 @@ RSpec.describe Issuable::BulkUpdateService do let(:bulk_update_params) do { - add_label_ids: add_labels.map(&:id), + add_label_ids: add_labels.map(&:id), remove_label_ids: remove_labels.map(&:id) } end diff --git a/spec/services/issues/create_service_spec.rb b/spec/services/issues/create_service_spec.rb index efff967614d..4a84862b9d5 100644 --- a/spec/services/issues/create_service_spec.rb +++ b/spec/services/issues/create_service_spec.rb @@ -416,7 +416,7 @@ RSpec.describe Issues::CreateService do context "when issuable feature is private" do before do project.project_feature.update!(issues_access_level: ProjectFeature::PRIVATE, - merge_requests_access_level: ProjectFeature::PRIVATE) + merge_requests_access_level: ProjectFeature::PRIVATE) end levels = [Gitlab::VisibilityLevel::INTERNAL, Gitlab::VisibilityLevel::PUBLIC] diff --git a/spec/services/merge_requests/build_service_spec.rb b/spec/services/merge_requests/build_service_spec.rb index 3c9d2271ddc..6a6f01e6a95 100644 --- a/spec/services/merge_requests/build_service_spec.rb +++ b/spec/services/merge_requests/build_service_spec.rb @@ -20,18 +20,30 @@ RSpec.describe MergeRequests::BuildService do let(:merge_request) { service.execute } let(:compare) { double(:compare, commits: commits) } let(:commit_1) do - double(:commit_1, sha: 'f00ba6', safe_message: 'Initial commit', - gitaly_commit?: false, id: 'f00ba6', parent_ids: ['f00ba5']) + double(:commit_1, + sha: 'f00ba6', + safe_message: 'Initial commit', + gitaly_commit?: false, + id: 'f00ba6', + parent_ids: ['f00ba5']) end let(:commit_2) do - double(:commit_2, sha: 'f00ba7', safe_message: "Closes #1234 Second commit\n\nCreate the app", - gitaly_commit?: false, id: 'f00ba7', parent_ids: ['f00ba6']) + double(:commit_2, + sha: 'f00ba7', + safe_message: "Closes #1234 Second commit\n\nCreate the app", + gitaly_commit?: false, + id: 'f00ba7', + parent_ids: ['f00ba6']) end let(:commit_3) do - double(:commit_3, sha: 'f00ba8', safe_message: 'This is a bad commit message!', - gitaly_commit?: false, id: 'f00ba8', parent_ids: ['f00ba7']) + double(:commit_3, + sha: 'f00ba8', + safe_message: 'This is a bad commit message!', + gitaly_commit?: false, + id: 'f00ba8', + parent_ids: ['f00ba7']) end let(:commits) { nil } diff --git a/spec/services/merge_requests/create_service_spec.rb b/spec/services/merge_requests/create_service_spec.rb index 9c9bcb79990..4102cdc101e 100644 --- a/spec/services/merge_requests/create_service_spec.rb +++ b/spec/services/merge_requests/create_service_spec.rb @@ -434,7 +434,7 @@ RSpec.describe MergeRequests::CreateService, :clean_gitlab_redis_shared_state do context "when issuable feature is private" do before do project.project_feature.update!(issues_access_level: ProjectFeature::PRIVATE, - merge_requests_access_level: ProjectFeature::PRIVATE) + merge_requests_access_level: ProjectFeature::PRIVATE) end levels = [Gitlab::VisibilityLevel::INTERNAL, Gitlab::VisibilityLevel::PUBLIC] diff --git a/spec/services/merge_requests/update_service_spec.rb b/spec/services/merge_requests/update_service_spec.rb index 606fd066f1c..64145a85b62 100644 --- a/spec/services/merge_requests/update_service_spec.rb +++ b/spec/services/merge_requests/update_service_spec.rb @@ -510,9 +510,9 @@ RSpec.describe MergeRequests::UpdateService, :mailer do before do create(:ci_pipeline, project: project, - ref: merge_request.source_branch, - sha: merge_request.diff_head_sha, - status: :success) + ref: merge_request.source_branch, + sha: merge_request.diff_head_sha, + status: :success) perform_enqueued_jobs do @merge_request = service.execute(merge_request) diff --git a/spec/services/metrics/dashboard/clone_dashboard_service_spec.rb b/spec/services/metrics/dashboard/clone_dashboard_service_spec.rb index b326fc1726d..47e5557105b 100644 --- a/spec/services/metrics/dashboard/clone_dashboard_service_spec.rb +++ b/spec/services/metrics/dashboard/clone_dashboard_service_spec.rb @@ -62,7 +62,7 @@ RSpec.describe Metrics::Dashboard::CloneDashboardService, :use_clean_rails_memor start_branch: project.default_branch, encoding: 'text', file_path: ".gitlab/dashboards/custom_dashboard.yml", - file_content: file_content_hash.to_yaml + file_content: file_content_hash.to_yaml } end diff --git a/spec/services/notes/create_service_spec.rb b/spec/services/notes/create_service_spec.rb index 37318d76586..74684bc05ce 100644 --- a/spec/services/notes/create_service_spec.rb +++ b/spec/services/notes/create_service_spec.rb @@ -134,8 +134,7 @@ RSpec.describe Notes::CreateService do context 'in a merge request' do let_it_be(:project_with_repo) { create(:project, :repository) } let_it_be(:merge_request) do - create(:merge_request, source_project: project_with_repo, - target_project: project_with_repo) + create(:merge_request, source_project: project_with_repo, target_project: project_with_repo) end context 'noteable highlight cache clearing' do @@ -181,8 +180,7 @@ RSpec.describe Notes::CreateService do it 'does not clear cache when note is not the first of the discussion' do prev_note = - create(:diff_note_on_merge_request, noteable: merge_request, - project: project_with_repo) + create(:diff_note_on_merge_request, noteable: merge_request, project: project_with_repo) reply_opts = opts.merge(in_reply_to_discussion_id: prev_note.discussion_id, type: 'DiffNote', diff --git a/spec/services/notes/destroy_service_spec.rb b/spec/services/notes/destroy_service_spec.rb index be95a4bb181..82caec52aee 100644 --- a/spec/services/notes/destroy_service_spec.rb +++ b/spec/services/notes/destroy_service_spec.rb @@ -57,13 +57,11 @@ RSpec.describe Notes::DestroyService do context 'in a merge request' do let_it_be(:repo_project) { create(:project, :repository) } let_it_be(:merge_request) do - create(:merge_request, source_project: repo_project, - target_project: repo_project) + create(:merge_request, source_project: repo_project, target_project: repo_project) end let_it_be(:note) do - create(:diff_note_on_merge_request, project: repo_project, - noteable: merge_request) + create(:diff_note_on_merge_request, project: repo_project, noteable: merge_request) end it 'does not track issue comment removal usage data' do @@ -84,9 +82,8 @@ RSpec.describe Notes::DestroyService do end it 'does not clear cache when note is not the first of the discussion' do - reply_note = create(:diff_note_on_merge_request, in_reply_to: note, - project: repo_project, - noteable: merge_request) + reply_note = create(:diff_note_on_merge_request, + in_reply_to: note, project: repo_project, noteable: merge_request) expect(merge_request).not_to receive(:diffs) diff --git a/spec/services/packages/debian/parse_debian822_service_spec.rb b/spec/services/packages/debian/parse_debian822_service_spec.rb index ff146fda250..a2731816459 100644 --- a/spec/services/packages/debian/parse_debian822_service_spec.rb +++ b/spec/services/packages/debian/parse_debian822_service_spec.rb @@ -77,7 +77,7 @@ RSpec.describe Packages::Debian::ParseDebian822Service do 'Depends' => '${shlibs:Depends}, ${misc:Depends}', 'Description' => "Some mostly empty lib\nUsed in GitLab tests.\n\nTesting another paragraph." }, - 'Package: sample-udeb' => { + 'Package: sample-udeb' => { 'Package' => 'sample-udeb', 'Package-Type' => 'udeb', 'Architecture' => 'any', diff --git a/spec/services/projects/destroy_service_spec.rb b/spec/services/projects/destroy_service_spec.rb index e4ccd83e3ef..94320320407 100644 --- a/spec/services/projects/destroy_service_spec.rb +++ b/spec/services/projects/destroy_service_spec.rb @@ -312,7 +312,7 @@ RSpec.describe Projects::DestroyService, :aggregate_failures, :event_store_publi before do stub_container_registry_tags(repository: project.full_path + '/image', - tags: ['tag']) + tags: ['tag']) project.container_repositories << container_repository end @@ -350,7 +350,7 @@ RSpec.describe Projects::DestroyService, :aggregate_failures, :event_store_publi context 'when there are tags for legacy root repository' do before do stub_container_registry_tags(repository: project.full_path, - tags: ['tag']) + tags: ['tag']) end context 'when image repository tags deletion succeeds' do diff --git a/spec/services/service_ping/submit_service_ping_service_spec.rb b/spec/services/service_ping/submit_service_ping_service_spec.rb index b863b2a46b0..70de02723cd 100644 --- a/spec/services/service_ping/submit_service_ping_service_spec.rb +++ b/spec/services/service_ping/submit_service_ping_service_spec.rb @@ -386,12 +386,12 @@ RSpec.describe ServicePing::SubmitService do let(:payload) do { uuid: 'uuid', - metric_a: metric_double, - metric_group: { + metric_a: metric_double, + metric_group: { metric_b: metric_double }, - metric_without_timing: "value", - recorded_at: Time.current + metric_without_timing: "value", + recorded_at: Time.current } end @@ -399,10 +399,10 @@ RSpec.describe ServicePing::SubmitService do { metadata: { uuid: 'uuid', - metrics: [ - { name: 'metric_a', time_elapsed: 123 }, - { name: 'metric_group.metric_b', time_elapsed: 123 } - ] + metrics: [ + { name: 'metric_a', time_elapsed: 123 }, + { name: 'metric_group.metric_b', time_elapsed: 123 } + ] } } end diff --git a/spec/services/suggestions/apply_service_spec.rb b/spec/services/suggestions/apply_service_spec.rb index e34324d5fe2..41ccd8523fa 100644 --- a/spec/services/suggestions/apply_service_spec.rb +++ b/spec/services/suggestions/apply_service_spec.rb @@ -35,7 +35,7 @@ RSpec.describe Suggestions::ApplyService do def apply(suggestions, custom_message = nil) result = apply_service.new(user, *suggestions, message: custom_message).execute - suggestions.map { |suggestion| suggestion.reload } + suggestions.map(&:reload) expect(result[:status]).to eq(:success) end @@ -136,21 +136,20 @@ RSpec.describe Suggestions::ApplyService do end let(:merge_request) do - create(:merge_request, source_project: project, - target_project: project, - source_branch: 'master') + create(:merge_request, + source_project: project, target_project: project, source_branch: 'master') end let(:position) { build_position } let(:diff_note) do - create(:diff_note_on_merge_request, noteable: merge_request, - position: position, project: project) + create(:diff_note_on_merge_request, + noteable: merge_request, position: position, project: project) end let(:suggestion) do - create(:suggestion, :content_from_repo, note: diff_note, - to_content: " raise RuntimeError, 'Explosion'\n # explosion?\n") + create(:suggestion, :content_from_repo, + note: diff_note, to_content: " raise RuntimeError, 'Explosion'\n # explosion?\n") end let(:suggestion2) do @@ -311,9 +310,9 @@ RSpec.describe Suggestions::ApplyService do context 'when HEAD from position is different from source branch HEAD on repo' do it 'returns error message' do - allow(suggestion).to receive(:appliable?) { true } - allow(suggestion.position).to receive(:head_sha) { 'old-sha' } - allow(suggestion.noteable).to receive(:source_branch_sha) { 'new-sha' } + allow(suggestion).to receive(:appliable?).and_return(true) + allow(suggestion.position).to receive(:head_sha).and_return('old-sha') + allow(suggestion.noteable).to receive(:source_branch_sha).and_return('new-sha') result = apply_service.new(user, suggestion).execute @@ -430,7 +429,6 @@ RSpec.describe Suggestions::ApplyService do suggestion1_diff = fetch_raw_diff(suggestion1) suggestion2_diff = fetch_raw_diff(suggestion2) - # rubocop: disable Layout/TrailingWhitespace expected_suggestion1_diff = <<-CONTENT.strip_heredoc @@ -10,7 +10,7 @@ module Popen end @@ -442,9 +440,6 @@ RSpec.describe Suggestions::ApplyService do "PWD" => path } CONTENT - # rubocop: enable Layout/TrailingWhitespace - - # rubocop: disable Layout/TrailingWhitespace expected_suggestion2_diff = <<-CONTENT.strip_heredoc @@ -28,7 +28,7 @@ module Popen @@ -455,8 +450,6 @@ RSpec.describe Suggestions::ApplyService do @cmd_status = wait_thr.value.exitstatus end CONTENT - # rubocop: enable Layout/TrailingWhitespace - expect(suggestion1_diff.strip).to eq(expected_suggestion1_diff.strip) expect(suggestion2_diff.strip).to eq(expected_suggestion2_diff.strip) end @@ -508,10 +501,8 @@ RSpec.describe Suggestions::ApplyService do end let(:suggestion) do - create(:suggestion, :content_from_repo, note: diff_note, - lines_above: 2, - lines_below: 3, - to_content: "# multi\n# line\n") + create(:suggestion, :content_from_repo, + note: diff_note, lines_above: 2, lines_below: 3, to_content: "# multi\n# line\n") end let(:suggestions) { [suggestion] } @@ -568,7 +559,7 @@ RSpec.describe Suggestions::ApplyService do end let(:suggestion) do - create_suggestion( to_content: "", new_line: 13) + create_suggestion(to_content: "", new_line: 13) end let(:suggestions) { [suggestion] } @@ -616,14 +607,12 @@ RSpec.describe Suggestions::ApplyService do context 'no permission' do let(:merge_request) do - create(:merge_request, source_project: project, - target_project: project) + create(:merge_request, source_project: project, target_project: project) end let(:diff_note) do - create(:diff_note_on_merge_request, noteable: merge_request, - position: position, - project: project) + create(:diff_note_on_merge_request, + noteable: merge_request, position: position, project: project) end context 'user cannot write in project repo' do @@ -642,14 +631,12 @@ RSpec.describe Suggestions::ApplyService do context 'patch is not appliable' do let(:merge_request) do - create(:merge_request, source_project: project, - target_project: project) + create(:merge_request, source_project: project, target_project: project) end let(:diff_note) do - create(:diff_note_on_merge_request, noteable: merge_request, - position: position, - project: project) + create(:diff_note_on_merge_request, + noteable: merge_request, position: position, project: project) end before do @@ -669,7 +656,7 @@ RSpec.describe Suggestions::ApplyService do let(:result) { apply_service.new(user, suggestion).execute } before do - expect(suggestion.note).to receive(:latest_diff_file) { nil } + expect(suggestion.note).to receive(:latest_diff_file).and_return(nil) end it 'returns error message' do diff --git a/spec/services/work_items/widgets/description_service/update_service_spec.rb b/spec/services/work_items/widgets/description_service/update_service_spec.rb index 582d9dc85f7..4275950e720 100644 --- a/spec/services/work_items/widgets/description_service/update_service_spec.rb +++ b/spec/services/work_items/widgets/description_service/update_service_spec.rb @@ -13,7 +13,7 @@ RSpec.describe WorkItems::Widgets::DescriptionService::UpdateService do let(:current_user) { author } let(:work_item) do create(:work_item, author: author, project: project, description: 'old description', - last_edited_at: Date.yesterday, last_edited_by: random_user + last_edited_at: Date.yesterday, last_edited_by: random_user ) end diff --git a/spec/tooling/danger/datateam_spec.rb b/spec/tooling/danger/datateam_spec.rb index e4ab3a6f4b1..de8a93baa27 100644 --- a/spec/tooling/danger/datateam_spec.rb +++ b/spec/tooling/danger/datateam_spec.rb @@ -24,7 +24,7 @@ RSpec.describe Tooling::Danger::Datateam do impacted: true, impacted_files: %w(db/structure.sql) }, - 'with structure.sql changes and Data Warehouse::Impact Check label' => { + 'with structure.sql changes and Data Warehouse::Impact Check label' => { modified_files: %w(db/structure.sql), changed_lines: ['+group_id bigint NOT NULL)'], mr_labels: ['Data Warehouse::Impact Check'], diff --git a/spec/views/projects/tags/index.html.haml_spec.rb b/spec/views/projects/tags/index.html.haml_spec.rb index aff233b697f..99db5d9e2a8 100644 --- a/spec/views/projects/tags/index.html.haml_spec.rb +++ b/spec/views/projects/tags/index.html.haml_spec.rb @@ -7,8 +7,8 @@ RSpec.describe 'projects/tags/index.html.haml' do let_it_be(:git_tag) { project.repository.tags.last } let_it_be(:release) do create(:release, project: project, - sha: git_tag.target_commit.sha, - tag: 'v1.1.0') + sha: git_tag.target_commit.sha, + tag: 'v1.1.0') end let(:pipeline) { create(:ci_pipeline, :success, project: project, ref: git_tag.name, sha: release.sha) } diff --git a/spec/workers/emails_on_push_worker_spec.rb b/spec/workers/emails_on_push_worker_spec.rb index 3e313610054..7d11957e2df 100644 --- a/spec/workers/emails_on_push_worker_spec.rb +++ b/spec/workers/emails_on_push_worker_spec.rb @@ -51,7 +51,7 @@ RSpec.describe EmailsOnPushWorker, :mailer do context "when push is a force push to delete commits" do before do data_force_push = data.stringify_keys.merge( - "after" => data[:before], + "after" => data[:before], "before" => data[:after] ) diff --git a/spec/workers/pages_domain_ssl_renewal_cron_worker_spec.rb b/spec/workers/pages_domain_ssl_renewal_cron_worker_spec.rb index 563bbdef1be..70ffef5342e 100644 --- a/spec/workers/pages_domain_ssl_renewal_cron_worker_spec.rb +++ b/spec/workers/pages_domain_ssl_renewal_cron_worker_spec.rb @@ -25,8 +25,8 @@ RSpec.describe PagesDomainSslRenewalCronWorker do end let!(:domain_with_failed_auto_ssl) do - create(:pages_domain, :without_certificate, :without_key, project: project, - auto_ssl_enabled: true, auto_ssl_failed: true) + create(:pages_domain, :without_certificate, :without_key, + project: project, auto_ssl_enabled: true, auto_ssl_failed: true) end let!(:domain_with_expired_auto_ssl) do |