From aab72e93c6e560afa9ee47d959b50dc0046f9adf Mon Sep 17 00:00:00 2001
From: Alper Akgun <aakgun@gitlab.com>
Date: Wed, 5 Mar 2025 17:12:29 +0300
Subject: [PATCH] Improve create model version service spec coverage

---
 .../ml/create_model_version_service_spec.rb   | 26 +++++++++++++++++++
 1 file changed, 26 insertions(+)

diff --git a/spec/services/ml/create_model_version_service_spec.rb b/spec/services/ml/create_model_version_service_spec.rb
index 2ee9ec7ccd01..5d7bb67078fd 100644
--- a/spec/services/ml/create_model_version_service_spec.rb
+++ b/spec/services/ml/create_model_version_service_spec.rb
@@ -313,5 +313,31 @@
         expect(Gitlab::Audit::Auditor).not_to have_received(:audit)
       end
     end
+
+    context 'when a RecordInvalid error occurs' do
+      before do
+        allow_next_instance_of(::Ml::ModelVersion) do |model_version|
+          allow(model_version).to receive(:add_metadata).and_raise(ActiveRecord::RecordInvalid.new(model_version))
+        end
+      end
+
+      it 'returns an error response with the exception message' do
+        expect(service).to be_error
+        expect(service.message).to include('Validation failed: ')
+        expect(service.payload[:model_version]).to be_nil
+      end
+
+      it 'does not create model version or package' do
+        expect { service }.to not_change { Ml::ModelVersion.count }
+                                .and not_change { Packages::MlModel::Package.count }
+      end
+
+      it 'does not track events or audit' do
+        service
+
+        expect(Gitlab::InternalEvents).not_to have_received(:track_event)
+        expect(Gitlab::Audit::Auditor).not_to have_received(:audit)
+      end
+    end
   end
 end
-- 
GitLab