From 0a0f5c024429d6f41d93dfaa86acf085a771bfe2 Mon Sep 17 00:00:00 2001
From: Terri Chu <tchu@gitlab.com>
Date: Thu, 24 Oct 2024 21:35:29 -0400
Subject: [PATCH] Fix rubocop offenses for ElasticReindexingSubtask model

---
 .rubocop_todo/gitlab/bounded_contexts.yml      |  1 -
 .rubocop_todo/rails/inverse_of.yml             |  1 -
 .rubocop_todo/rspec/feature_category.yml       |  1 -
 .rubocop_todo/search/namespaced_class.yml      |  1 -
 .../style/class_and_module_children.yml        |  1 -
 db/docs/elastic_reindexing_subtasks.yml        |  2 +-
 ee/app/models/elastic/reindexing_slice.rb      |  2 +-
 ee/app/models/elastic/reindexing_subtask.rb    | 13 -------------
 ee/app/models/elastic/reindexing_task.rb       |  2 +-
 .../search/elastic/reindexing_subtask.rb       | 18 ++++++++++++++++++
 .../factories/elastic/reindexing_subtasks.rb   |  2 +-
 .../elastic/reindexing_subtask_spec.rb         |  3 ++-
 12 files changed, 24 insertions(+), 23 deletions(-)
 delete mode 100644 ee/app/models/elastic/reindexing_subtask.rb
 create mode 100644 ee/app/models/search/elastic/reindexing_subtask.rb
 rename ee/spec/models/{ => search}/elastic/reindexing_subtask_spec.rb (68%)

diff --git a/.rubocop_todo/gitlab/bounded_contexts.yml b/.rubocop_todo/gitlab/bounded_contexts.yml
index 01ae4b178bc48..529152c7bace6 100644
--- a/.rubocop_todo/gitlab/bounded_contexts.yml
+++ b/.rubocop_todo/gitlab/bounded_contexts.yml
@@ -2907,7 +2907,6 @@ Gitlab/BoundedContexts:
     - 'ee/app/models/elastic/index_setting.rb'
     - 'ee/app/models/elastic/migration_record.rb'
     - 'ee/app/models/elastic/reindexing_slice.rb'
-    - 'ee/app/models/elastic/reindexing_subtask.rb'
     - 'ee/app/models/elastic/reindexing_task.rb'
     - 'ee/app/models/elasticsearch_indexed_namespace.rb'
     - 'ee/app/models/elasticsearch_indexed_project.rb'
diff --git a/.rubocop_todo/rails/inverse_of.yml b/.rubocop_todo/rails/inverse_of.yml
index c8dbb9b7a0e1c..2ed8bc1ae8c69 100644
--- a/.rubocop_todo/rails/inverse_of.yml
+++ b/.rubocop_todo/rails/inverse_of.yml
@@ -60,7 +60,6 @@ Rails/InverseOf:
     - 'ee/app/models/ee/project.rb'
     - 'ee/app/models/ee/service_desk_setting.rb'
     - 'ee/app/models/ee/user.rb'
-    - 'ee/app/models/elastic/reindexing_subtask.rb'
     - 'ee/app/models/geo/event.rb'
     - 'ee/app/models/geo/event_log.rb'
     - 'ee/app/models/geo/job_artifact_registry.rb'
diff --git a/.rubocop_todo/rspec/feature_category.yml b/.rubocop_todo/rspec/feature_category.yml
index 7721a1987bec2..3967d117d3b76 100644
--- a/.rubocop_todo/rspec/feature_category.yml
+++ b/.rubocop_todo/rspec/feature_category.yml
@@ -816,7 +816,6 @@ RSpec/FeatureCategory:
     - 'ee/spec/models/ee/users_statistics_spec.rb'
     - 'ee/spec/models/elastic/index_setting_spec.rb'
     - 'ee/spec/models/elastic/reindexing_slice_spec.rb'
-    - 'ee/spec/models/elastic/reindexing_subtask_spec.rb'
     - 'ee/spec/models/elastic/reindexing_task_spec.rb'
     - 'ee/spec/models/epic_user_mention_spec.rb'
     - 'ee/spec/models/gitlab/seat_link_data_spec.rb'
diff --git a/.rubocop_todo/search/namespaced_class.yml b/.rubocop_todo/search/namespaced_class.yml
index 28479ab5826cc..118f78429906a 100644
--- a/.rubocop_todo/search/namespaced_class.yml
+++ b/.rubocop_todo/search/namespaced_class.yml
@@ -31,7 +31,6 @@ Search/NamespacedClass:
     - 'ee/app/models/elastic/index_setting.rb'
     - 'ee/app/models/elastic/migration_record.rb'
     - 'ee/app/models/elastic/reindexing_slice.rb'
-    - 'ee/app/models/elastic/reindexing_subtask.rb'
     - 'ee/app/models/elastic/reindexing_task.rb'
     - 'ee/app/models/elasticsearch_indexed_namespace.rb'
     - 'ee/app/models/elasticsearch_indexed_project.rb'
diff --git a/.rubocop_todo/style/class_and_module_children.yml b/.rubocop_todo/style/class_and_module_children.yml
index 6867e5d4eda5e..542cbbc3bb229 100644
--- a/.rubocop_todo/style/class_and_module_children.yml
+++ b/.rubocop_todo/style/class_and_module_children.yml
@@ -421,7 +421,6 @@ Style/ClassAndModuleChildren:
     - 'ee/app/models/dast/profile_schedule.rb'
     - 'ee/app/models/ee/ci/job_artifact.rb'
     - 'ee/app/models/elastic/reindexing_slice.rb'
-    - 'ee/app/models/elastic/reindexing_subtask.rb'
     - 'ee/app/models/elastic/reindexing_task.rb'
     - 'ee/app/models/epic/metrics.rb'
     - 'ee/app/models/epic/related_epic_link.rb'
diff --git a/db/docs/elastic_reindexing_subtasks.yml b/db/docs/elastic_reindexing_subtasks.yml
index 5f05170cf166f..ae61b89eef1bb 100644
--- a/db/docs/elastic_reindexing_subtasks.yml
+++ b/db/docs/elastic_reindexing_subtasks.yml
@@ -1,7 +1,7 @@
 ---
 table_name: elastic_reindexing_subtasks
 classes:
-- Elastic::ReindexingSubtask
+- Search::Elastic::ReindexingSubtask
 feature_categories:
 - global_search
 description: TODO
diff --git a/ee/app/models/elastic/reindexing_slice.rb b/ee/app/models/elastic/reindexing_slice.rb
index 83a28ca7213ef..377924a94ef90 100644
--- a/ee/app/models/elastic/reindexing_slice.rb
+++ b/ee/app/models/elastic/reindexing_slice.rb
@@ -3,7 +3,7 @@
 class Elastic::ReindexingSlice < ApplicationRecord
   self.table_name = 'elastic_reindexing_slices'
 
-  belongs_to :elastic_reindexing_subtask, class_name: 'Elastic::ReindexingSubtask'
+  belongs_to :elastic_reindexing_subtask, class_name: 'Search::Elastic::ReindexingSubtask'
 
   validates :elastic_slice, :elastic_max_slice, :retry_attempt, presence: true, numericality: { greater_than_or_equal_to: 0 }
 
diff --git a/ee/app/models/elastic/reindexing_subtask.rb b/ee/app/models/elastic/reindexing_subtask.rb
deleted file mode 100644
index 9793e1f8b0d50..0000000000000
--- a/ee/app/models/elastic/reindexing_subtask.rb
+++ /dev/null
@@ -1,13 +0,0 @@
-# frozen_string_literal: true
-
-class Elastic::ReindexingSubtask < ApplicationRecord
-  self.table_name = 'elastic_reindexing_subtasks'
-
-  belongs_to :elastic_reindexing_task, class_name: 'Elastic::ReindexingTask'
-
-  has_many :slices, class_name: 'Elastic::ReindexingSlice', foreign_key: :elastic_reindexing_subtask_id
-
-  validates :index_name_from, :index_name_to, presence: true
-
-  scope :order_by_alias_name_asc, -> { order(alias_name: :asc) }
-end
diff --git a/ee/app/models/elastic/reindexing_task.rb b/ee/app/models/elastic/reindexing_task.rb
index f1dbc09c63305..7acb414e39ad1 100644
--- a/ee/app/models/elastic/reindexing_task.rb
+++ b/ee/app/models/elastic/reindexing_task.rb
@@ -11,7 +11,7 @@ class Elastic::ReindexingTask < ApplicationRecord
 
   attribute :options, :ind_jsonb # for indifferent access
 
-  has_many :subtasks, class_name: 'Elastic::ReindexingSubtask',
+  has_many :subtasks, class_name: 'Search::Elastic::ReindexingSubtask',
     foreign_key: :elastic_reindexing_task_id, inverse_of: :elastic_reindexing_task
 
   enum state: {
diff --git a/ee/app/models/search/elastic/reindexing_subtask.rb b/ee/app/models/search/elastic/reindexing_subtask.rb
new file mode 100644
index 0000000000000..80f6b9fe32455
--- /dev/null
+++ b/ee/app/models/search/elastic/reindexing_subtask.rb
@@ -0,0 +1,18 @@
+# frozen_string_literal: true
+
+module Search
+  module Elastic
+    class ReindexingSubtask < ApplicationRecord
+      self.table_name = 'elastic_reindexing_subtasks'
+
+      belongs_to :elastic_reindexing_task, class_name: 'Elastic::ReindexingTask'
+
+      has_many :slices, class_name: 'Elastic::ReindexingSlice',
+        foreign_key: :elastic_reindexing_subtask_id, inverse_of: :elastic_reindexing_subtask
+
+      validates :index_name_from, :index_name_to, presence: true
+
+      scope :order_by_alias_name_asc, -> { order(alias_name: :asc) }
+    end
+  end
+end
diff --git a/ee/spec/factories/elastic/reindexing_subtasks.rb b/ee/spec/factories/elastic/reindexing_subtasks.rb
index e77c03aaeae9a..dc7607109d756 100644
--- a/ee/spec/factories/elastic/reindexing_subtasks.rb
+++ b/ee/spec/factories/elastic/reindexing_subtasks.rb
@@ -1,7 +1,7 @@
 # frozen_string_literal: true
 
 FactoryBot.define do
-  factory :elastic_reindexing_subtask, class: 'Elastic::ReindexingSubtask' do
+  factory :elastic_reindexing_subtask, class: 'Search::Elastic::ReindexingSubtask' do
     association :elastic_reindexing_task, in_progress: false, state: :success
     sequence(:index_name_from) { |n| "old_index_name_#{n}" }
     sequence(:index_name_to) { |n| "new_index_name_#{n}" }
diff --git a/ee/spec/models/elastic/reindexing_subtask_spec.rb b/ee/spec/models/search/elastic/reindexing_subtask_spec.rb
similarity index 68%
rename from ee/spec/models/elastic/reindexing_subtask_spec.rb
rename to ee/spec/models/search/elastic/reindexing_subtask_spec.rb
index 460716fa71037..87435d2f2608d 100644
--- a/ee/spec/models/elastic/reindexing_subtask_spec.rb
+++ b/ee/spec/models/search/elastic/reindexing_subtask_spec.rb
@@ -2,9 +2,10 @@
 
 require 'spec_helper'
 
-RSpec.describe Elastic::ReindexingSubtask, type: :model do
+RSpec.describe Search::Elastic::ReindexingSubtask, type: :model, feature_category: :global_search do
   describe 'relations' do
     it { is_expected.to belong_to(:elastic_reindexing_task) }
+    it { is_expected.to have_many(:slices) }
   end
 
   describe 'validations' do
-- 
GitLab