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