From a2ae4214114d78c193e94e3dc45b457bf9147357 Mon Sep 17 00:00:00 2001
From: Igor Drozdov <idrozdov@gitlab.com>
Date: Thu, 9 Mar 2023 21:17:54 +0000
Subject: [PATCH] Fix specs using anonymous ActiveRecord models

These were raising an exception because they don't have a table name
specified
---
 .../projects/vulnerability_feedback_controller_spec.rb |  2 +-
 .../models/concerns/filterable_by_test_reports_spec.rb |  2 ++
 .../gitlab/analytics/cycle_analytics/average_spec.rb   |  4 ++--
 spec/models/members/project_member_spec.rb             |  2 +-
 spec/serializers/entity_date_helper_spec.rb            | 10 ++++++----
 spec/support/helpers/stub_configuration.rb             |  2 +-
 spec/support/helpers/stub_object_storage.rb            |  4 ++--
 7 files changed, 15 insertions(+), 11 deletions(-)

diff --git a/ee/spec/controllers/projects/vulnerability_feedback_controller_spec.rb b/ee/spec/controllers/projects/vulnerability_feedback_controller_spec.rb
index e932c786e5aab..8b9c1acdfde27 100644
--- a/ee/spec/controllers/projects/vulnerability_feedback_controller_spec.rb
+++ b/ee/spec/controllers/projects/vulnerability_feedback_controller_spec.rb
@@ -488,7 +488,7 @@ def create_feedback(user:, project:, params:)
       context 'when deprecate_vulnerabilities_feedback FF is enabled' do
         let_it_be(:vulnerability) { create(:vulnerability) }
         let_it_be(:finding) { create(:vulnerabilities_finding, vulnerability: vulnerability) }
-        let_it_be(:feedback) { create(:vulnerability_feedback, :dismissal, finding_uuid: finding.uuid) }
+        let_it_be(:feedback) { create(:vulnerability_feedback, :dismissal, project: project, finding_uuid: finding.uuid) }
 
         before do
           allow_next_instance_of(VulnerabilityFeedbackModule::UpdateService) do |instance|
diff --git a/ee/spec/models/concerns/filterable_by_test_reports_spec.rb b/ee/spec/models/concerns/filterable_by_test_reports_spec.rb
index 84016298d1fa9..5fdedba559e57 100644
--- a/ee/spec/models/concerns/filterable_by_test_reports_spec.rb
+++ b/ee/spec/models/concerns/filterable_by_test_reports_spec.rb
@@ -5,6 +5,8 @@
 RSpec.describe FilterableByTestReports do
   let(:test_class) do
     Class.new(ApplicationRecord) do
+      self.table_name = 'issues'
+
       include FilterableByTestReports
     end
   end
diff --git a/spec/lib/gitlab/analytics/cycle_analytics/average_spec.rb b/spec/lib/gitlab/analytics/cycle_analytics/average_spec.rb
index de325454b3428..122a94a39c21f 100644
--- a/spec/lib/gitlab/analytics/cycle_analytics/average_spec.rb
+++ b/spec/lib/gitlab/analytics/cycle_analytics/average_spec.rb
@@ -40,7 +40,7 @@
     subject(:average_duration_in_seconds) { average.seconds }
 
     context 'when no results' do
-      let(:query) { Issue.none }
+      let(:query) { Issue.joins(:metrics).none }
 
       it { is_expected.to eq(nil) }
     end
@@ -54,7 +54,7 @@
     subject(:average_duration_in_days) { average.days }
 
     context 'when no results' do
-      let(:query) { Issue.none }
+      let(:query) { Issue.joins(:metrics).none }
 
       it { is_expected.to eq(nil) }
     end
diff --git a/spec/models/members/project_member_spec.rb b/spec/models/members/project_member_spec.rb
index f0069b894949e..f2bc9b42b774e 100644
--- a/spec/models/members/project_member_spec.rb
+++ b/spec/models/members/project_member_spec.rb
@@ -9,7 +9,7 @@
 
   describe 'validations' do
     it { is_expected.to allow_value('Project').for(:source_type) }
-    it { is_expected.not_to allow_value('project').for(:source_type) }
+    it { is_expected.not_to allow_value('Group').for(:source_type) }
     it { is_expected.to validate_inclusion_of(:access_level).in_array(Gitlab::Access.values) }
   end
 
diff --git a/spec/serializers/entity_date_helper_spec.rb b/spec/serializers/entity_date_helper_spec.rb
index 5a4571339b348..70094991c09d6 100644
--- a/spec/serializers/entity_date_helper_spec.rb
+++ b/spec/serializers/entity_date_helper_spec.rb
@@ -47,8 +47,10 @@
   end
 
   describe '#remaining_days_in_words' do
+    let(:current_time) { Time.utc(2017, 3, 17) }
+
     around do |example|
-      travel_to(Time.utc(2017, 3, 17)) { example.run }
+      travel_to(current_time) { example.run }
     end
 
     context 'when less than 31 days remaining' do
@@ -74,10 +76,10 @@
         expect(milestone_remaining).to eq("<strong>1</strong> day remaining")
       end
 
-      it 'returns 1 day remaining when queried mid-day' do
-        travel_back
+      context 'when queried mid-day' do
+        let(:current_time) { Time.utc(2017, 3, 17, 13, 10) }
 
-        travel_to(Time.utc(2017, 3, 17, 13, 10)) do
+        it 'returns 1 day remaining' do
           expect(milestone_remaining).to eq("<strong>1</strong> day remaining")
         end
       end
diff --git a/spec/support/helpers/stub_configuration.rb b/spec/support/helpers/stub_configuration.rb
index 4ca8f26be9ebd..2a7b36a4c00a0 100644
--- a/spec/support/helpers/stub_configuration.rb
+++ b/spec/support/helpers/stub_configuration.rb
@@ -179,7 +179,7 @@ def add_predicates(messages)
   def to_settings(hash)
     hash.transform_values do |value|
       if value.is_a? Hash
-        Settingslogic.new(value.deep_stringify_keys)
+        Settingslogic.new(value.to_h.deep_stringify_keys)
       else
         value
       end
diff --git a/spec/support/helpers/stub_object_storage.rb b/spec/support/helpers/stub_object_storage.rb
index 6b63385622838..d120e1805e35f 100644
--- a/spec/support/helpers/stub_object_storage.rb
+++ b/spec/support/helpers/stub_object_storage.rb
@@ -15,7 +15,7 @@ def stub_object_storage_uploader(
         direct_upload: false,
         cdn: {}
   )
-    old_config = Settingslogic.new(config.deep_stringify_keys)
+    old_config = Settingslogic.new(config.to_h.deep_stringify_keys)
     new_config = config.to_h.deep_symbolize_keys.merge({
       enabled: enabled,
       proxy_download: proxy_download,
@@ -30,7 +30,7 @@ def stub_object_storage_uploader(
     allow(config).to receive(:proxy_download) { proxy_download }
     allow(config).to receive(:direct_upload) { direct_upload }
 
-    uploader_config = Settingslogic.new(new_config.deep_stringify_keys)
+    uploader_config = Settingslogic.new(new_config.to_h.deep_stringify_keys)
     allow(uploader).to receive(:object_store_options).and_return(uploader_config)
     allow(uploader.options).to receive(:object_store).and_return(uploader_config)
 
-- 
GitLab