From 2a66e54d52c3137e7570d3780ea43f635ebf2b29 Mon Sep 17 00:00:00 2001
From: Subashis  Chakraborty <schakraborty@gitlab.com>
Date: Wed, 18 Dec 2024 12:24:14 +0000
Subject: [PATCH] Dry up specs for resolve vulnerability

---
 .../resolve_vulnerability/shared_examples.rb  | 59 +++++++------------
 1 file changed, 20 insertions(+), 39 deletions(-)

diff --git a/ee/spec/lib/gitlab/llm/completions/resolve_vulnerability/shared_examples.rb b/ee/spec/lib/gitlab/llm/completions/resolve_vulnerability/shared_examples.rb
index 550f909c1ffdf..9704e33a4d2c7 100644
--- a/ee/spec/lib/gitlab/llm/completions/resolve_vulnerability/shared_examples.rb
+++ b/ee/spec/lib/gitlab/llm/completions/resolve_vulnerability/shared_examples.rb
@@ -45,6 +45,23 @@ def expect_tracked_error(error)
   expect(Gitlab::ErrorTracking).to have_received(:track_exception).with(error)
 end
 
+def expect_tracked_internal_event(event_name, status)
+  internal_merge_request_id = status == "error" ? nil : merge_request.id
+  expect(Gitlab::InternalEvents).to receive(:track_event).with(event_name,
+    project: project,
+    user: user,
+    namespace: project.namespace,
+    category: described_class.to_s,
+    additional_properties: {
+      property: status,
+      label: "resolve_vulnerability",
+      vulnerability_id: vulnerability.id,
+      internal_merge_request_id: internal_merge_request_id,
+      language: "C"
+    }
+  )
+end
+
 RSpec.shared_examples "a resolve vulnerability completion" do
   before do
     stub_licensed_features(security_dashboard: true)
@@ -242,19 +259,7 @@ def expect_tracked_error(error)
     end
 
     it 'tracks internal event with success' do
-      expect(Gitlab::InternalEvents).to receive(:track_event).with('track_mr_creation_from_vr',
-        project: project,
-        user: user,
-        namespace: project.namespace,
-        category: described_class.to_s,
-        additional_properties: {
-          property: "success",
-          label: "resolve_vulnerability",
-          vulnerability_id: vulnerability.id,
-          internal_merge_request_id: merge_request.id,
-          language: "C"
-        }
-      )
+      expect_tracked_internal_event("track_mr_creation_from_vr", "success")
 
       resolve.execute
     end
@@ -289,19 +294,7 @@ def expect_tracked_error(error)
       end
 
       it 'tracks internal event with success' do
-        expect(Gitlab::InternalEvents).to receive(:track_event).with('track_mr_creation_from_vr_in_mr_request',
-          project: project,
-          user: user,
-          namespace: project.namespace,
-          category: described_class.to_s,
-          additional_properties: {
-            property: "success",
-            label: "resolve_vulnerability",
-            vulnerability_id: vulnerability.id,
-            internal_merge_request_id: merge_request.id,
-            language: "C"
-          }
-        )
+        expect_tracked_internal_event("track_mr_creation_from_vr_in_mr_request", "success")
 
         resolve.execute
       end
@@ -352,19 +345,7 @@ def expect_tracked_error(error)
       end
 
       it 'tracks internal event with error' do
-        expect(Gitlab::InternalEvents).to receive(:track_event).with('track_mr_creation_from_vr',
-          project: project,
-          user: user,
-          namespace: project.namespace,
-          category: described_class.to_s,
-          additional_properties: {
-            property: "error",
-            label: "resolve_vulnerability",
-            vulnerability_id: vulnerability.id,
-            internal_merge_request_id: nil,
-            language: "C"
-          }
-        )
+        expect_tracked_internal_event("track_mr_creation_from_vr", "error")
 
         resolve.execute
       end
-- 
GitLab