From 2f345913eb7b71c8f3245a228d738f426cbcb3b0 Mon Sep 17 00:00:00 2001
From: Peter Leitzen <pleitzen@gitlab.com>
Date: Fri, 12 Apr 2024 15:37:13 +0200
Subject: [PATCH] Resolve RuboCop TODOs for FactoryBot/CreateList

---
 .rubocop_todo/factory_bot/create_list.yml     | 81 -------------------
 ee/spec/lib/ee/gitlab/usage_data_spec.rb      |  3 +-
 .../protected_environment_preloader_spec.rb   |  2 +-
 ee/spec/models/protected_environment_spec.rb  |  2 +-
 .../epics/epic_links/create_service_spec.rb   |  2 +-
 .../clusters/agent_tokens_finder_spec.rb      | 10 +--
 spec/mailers/repository_check_mailer_spec.rb  |  2 +-
 spec/models/concerns/issuable_spec.rb         |  2 +-
 8 files changed, 9 insertions(+), 95 deletions(-)
 delete mode 100644 .rubocop_todo/factory_bot/create_list.yml

diff --git a/.rubocop_todo/factory_bot/create_list.yml b/.rubocop_todo/factory_bot/create_list.yml
deleted file mode 100644
index 5d1f9e3e333cf..0000000000000
--- a/.rubocop_todo/factory_bot/create_list.yml
+++ /dev/null
@@ -1,81 +0,0 @@
----
-# Cop supports --autocorrect.
-FactoryBot/CreateList:
-  Exclude:
-    - 'ee/spec/controllers/ee/search_controller_spec.rb'
-    - 'ee/spec/controllers/projects/licenses_controller_spec.rb'
-    - 'ee/spec/factories/geo_nodes.rb'
-    - 'ee/spec/features/projects/environments/environments_spec.rb'
-    - 'ee/spec/features/projects/licenses/maintainer_views_policies_spec.rb'
-    - 'ee/spec/finders/security/findings_finder_spec.rb'
-    - 'ee/spec/finders/security/pipeline_vulnerabilities_finder_spec.rb'
-    - 'ee/spec/frontend/fixtures/dast_profiles.rb'
-    - 'ee/spec/frontend/fixtures/merge_requests.rb'
-    - 'ee/spec/graphql/types/pipeline_security_report_finding_type_spec.rb'
-    - 'ee/spec/helpers/ee/branches_helper_spec.rb'
-    - 'ee/spec/lib/ee/gitlab/background_migration/migrate_approver_to_approval_rules_spec.rb'
-    - 'ee/spec/lib/ee/gitlab/usage_data_spec.rb'
-    - 'ee/spec/lib/gitlab/ci/reports/security/vulnerability_reports_comparer_spec.rb'
-    - 'ee/spec/lib/gitlab/license_scanning/sbom_scanner_spec.rb'
-    - 'ee/spec/models/approval_project_rule_spec.rb'
-    - 'ee/spec/models/ci/build_spec.rb'
-    - 'ee/spec/models/ee/project_spec.rb'
-    - 'ee/spec/models/geo_node_spec.rb'
-    - 'ee/spec/models/label_note_spec.rb'
-    - 'ee/spec/models/merge_request_spec.rb'
-    - 'ee/spec/models/merge_requests/external_status_check_spec.rb'
-    - 'ee/spec/models/preloaders/environments/protected_environment_preloader_spec.rb'
-    - 'ee/spec/models/protected_environment_spec.rb'
-    - 'ee/spec/models/sca/license_compliance_spec.rb'
-    - 'ee/spec/models/visible_approvable_spec.rb'
-    - 'ee/spec/models/vulnerabilities/finding_spec.rb'
-    - 'ee/spec/presenters/merge_request_presenter_spec.rb'
-    - 'ee/spec/requests/api/search_spec.rb'
-    - 'ee/spec/requests/api/status_checks_spec.rb'
-    - 'ee/spec/requests/projects/pipelines_controller_spec.rb'
-    - 'ee/spec/serializers/license_compliance/collapsed_comparer_entity_spec.rb'
-    - 'ee/spec/serializers/license_compliance/comparer_entity_spec.rb'
-    - 'ee/spec/services/approval_rules/params_filtering_service_spec.rb'
-    - 'ee/spec/services/ci/compare_license_scanning_reports_service_spec.rb'
-    - 'ee/spec/services/ci/sync_reports_to_approval_rules_service_spec.rb'
-    - 'ee/spec/services/ee/issuable/bulk_update_service_spec.rb'
-    - 'ee/spec/services/epics/epic_links/create_service_spec.rb'
-    - 'ee/spec/services/geo/node_update_service_spec.rb'
-    - 'ee/spec/services/iterations/roll_over_issues_service_spec.rb'
-    - 'ee/spec/services/members/activate_service_spec.rb'
-    - 'ee/spec/services/sbom/ingestion/tasks/ingest_components_spec.rb'
-    - 'ee/spec/services/sbom/ingestion/tasks/ingest_sources_spec.rb'
-    - 'ee/spec/services/security/findings/dismiss_service_spec.rb'
-    - 'ee/spec/services/security/ingestion/ingest_report_slice_service_spec.rb'
-    - 'ee/spec/services/security/ingestion/mark_as_resolved_service_spec.rb'
-    - 'ee/spec/services/vulnerabilities/find_or_create_from_security_finding_service_spec.rb'
-    - 'ee/spec/support/shared_examples/requests/api/graphql/issue_list_shared_examples.rb'
-    - 'spec/controllers/groups/children_controller_spec.rb'
-    - 'spec/features/groups/milestone_spec.rb'
-    - 'spec/features/projects/environments/environments_spec.rb'
-    - 'spec/finders/clusters/agent_tokens_finder_spec.rb'
-    - 'spec/graphql/resolvers/design_management/design_resolver_spec.rb'
-    - 'spec/helpers/branches_helper_spec.rb'
-    - 'spec/helpers/groups/group_members_helper_spec.rb'
-    - 'spec/lib/atlassian/jira_connect/serializers/repository_entity_spec.rb'
-    - 'spec/lib/gitlab/ci/reports/security/report_spec.rb'
-    - 'spec/lib/gitlab/usage_data_spec.rb'
-    - 'spec/mailers/repository_check_mailer_spec.rb'
-    - 'spec/models/ci/group_spec.rb'
-    - 'spec/models/concerns/issuable_spec.rb'
-    - 'spec/models/deploy_key_spec.rb'
-    - 'spec/models/group_spec.rb'
-    - 'spec/models/label_note_spec.rb'
-    - 'spec/models/note_spec.rb'
-    - 'spec/models/work_items/widgets/assignees_spec.rb'
-    - 'spec/models/work_items/widgets/labels_spec.rb'
-    - 'spec/requests/api/graphql/project/pipeline_spec.rb'
-    - 'spec/requests/api/protected_branches_spec.rb'
-    - 'spec/requests/api/protected_tags_spec.rb'
-    - 'spec/services/clusters/management/validate_management_project_permissions_service_spec.rb'
-    - 'spec/services/issuable/bulk_update_service_spec.rb'
-    - 'spec/services/issues/resolve_discussions_spec.rb'
-    - 'spec/services/merge_requests/assign_issues_service_spec.rb'
-    - 'spec/services/projects/fork_service_spec.rb'
-    - 'spec/support/shared_examples/models/concerns/bulk_users_by_email_load_shared_examples.rb'
-    - 'spec/support/shared_examples/requests/api/graphql/issue_list_shared_examples.rb'
diff --git a/ee/spec/lib/ee/gitlab/usage_data_spec.rb b/ee/spec/lib/ee/gitlab/usage_data_spec.rb
index ebe9230c6fd09..dcafc15c92d9d 100644
--- a/ee/spec/lib/ee/gitlab/usage_data_spec.rb
+++ b/ee/spec/lib/ee/gitlab/usage_data_spec.rb
@@ -17,7 +17,8 @@
     # using Array.new to create a different creator User for each of the projects
     let_it_be(:projects) do
       Array.new(3) do
-        create(:project, :repository, group: group, creator: create(:user, group_view: :security_dashboard))
+        creator = create(:user, group_view: :security_dashboard)
+        create(:project, :repository, group: group, creator: creator)
       end
     end
 
diff --git a/ee/spec/models/preloaders/environments/protected_environment_preloader_spec.rb b/ee/spec/models/preloaders/environments/protected_environment_preloader_spec.rb
index c04e3aa469208..f0f3c683788a9 100644
--- a/ee/spec/models/preloaders/environments/protected_environment_preloader_spec.rb
+++ b/ee/spec/models/preloaders/environments/protected_environment_preloader_spec.rb
@@ -9,7 +9,7 @@
 
   describe '#initialize' do
     it 'raises an error if environments belong to more than one project' do
-      expect { described_class.new([create(:environment), create(:environment)]) }
+      expect { described_class.new(create_list(:environment, 2)) }
         .to raise_error('This preloader supports only environments in the same project')
     end
   end
diff --git a/ee/spec/models/protected_environment_spec.rb b/ee/spec/models/protected_environment_spec.rb
index 77965519b0f53..bbeeb82fe0e98 100644
--- a/ee/spec/models/protected_environment_spec.rb
+++ b/ee/spec/models/protected_environment_spec.rb
@@ -363,7 +363,7 @@
     it { is_expected.to match_array([protected_environment]) }
 
     it 'raises an error if environments belong to more than one project' do
-      expect { described_class.for_environments([create(:environment), create(:environment)]) }
+      expect { described_class.for_environments(create_list(:environment, 2)) }
         .to raise_error(ArgumentError, 'Environments must be in the same project')
     end
 
diff --git a/ee/spec/services/epics/epic_links/create_service_spec.rb b/ee/spec/services/epics/epic_links/create_service_spec.rb
index 98d210538a7c9..bc818ae2dac16 100644
--- a/ee/spec/services/epics/epic_links/create_service_spec.rb
+++ b/ee/spec/services/epics/epic_links/create_service_spec.rb
@@ -430,7 +430,7 @@ def add_epic(references)
           it 'avoids un-necessary database queries' do
             control = ActiveRecord::QueryRecorder.new { add_epic([valid_reference]) }
 
-            new_epics = [create(:epic, group: group), create(:epic, group: group)]
+            new_epics = Array.new(2) { create(:epic, group: group) }
 
             # threshold is 8 because
             # 1. we need to check hierarchy for each child epic (3 queries)
diff --git a/spec/finders/clusters/agent_tokens_finder_spec.rb b/spec/finders/clusters/agent_tokens_finder_spec.rb
index 654abfd381503..fdee51e7aff1d 100644
--- a/spec/finders/clusters/agent_tokens_finder_spec.rb
+++ b/spec/finders/clusters/agent_tokens_finder_spec.rb
@@ -9,17 +9,11 @@
     let(:user) { create(:user, maintainer_of: project) }
 
     let_it_be(:active_agent_tokens) do
-      [
-        create(:cluster_agent_token, agent: agent),
-        create(:cluster_agent_token, agent: agent)
-      ]
+      Array.new(2) { create(:cluster_agent_token, agent: agent) }
     end
 
     let_it_be(:revoked_agent_tokens) do
-      [
-        create(:cluster_agent_token, :revoked, agent: agent),
-        create(:cluster_agent_token, :revoked, agent: agent)
-      ]
+      create_list(:cluster_agent_token, 2, :revoked, agent: agent)
     end
 
     before_all do
diff --git a/spec/mailers/repository_check_mailer_spec.rb b/spec/mailers/repository_check_mailer_spec.rb
index 5edd9c2d023ad..d6cd686ad4059 100644
--- a/spec/mailers/repository_check_mailer_spec.rb
+++ b/spec/mailers/repository_check_mailer_spec.rb
@@ -15,7 +15,7 @@
     end
 
     it 'email with I18n.default_locale' do
-      admins = [create(:admin, preferred_language: :zh_CN), create(:admin, preferred_language: :zh_CN)]
+      admins = create_list(:admin, 2, preferred_language: :zh_CN)
 
       mail = described_class.notify(3)
 
diff --git a/spec/models/concerns/issuable_spec.rb b/spec/models/concerns/issuable_spec.rb
index 4b4d91ad6f6bc..fb1f46a6c0e18 100644
--- a/spec/models/concerns/issuable_spec.rb
+++ b/spec/models/concerns/issuable_spec.rb
@@ -162,7 +162,7 @@
 
   describe '.any_label' do
     let_it_be(:issue_with_label) { create(:labeled_issue, labels: [create(:label)]) }
-    let_it_be(:issue_with_multiple_labels) { create(:labeled_issue, labels: [create(:label), create(:label)]) }
+    let_it_be(:issue_with_multiple_labels) { create(:labeled_issue, labels: create_list(:label, 2)) }
     let_it_be(:issue_without_label) { create(:issue) }
 
     it 'returns an issuable with at least one label' do
-- 
GitLab