From 123d60836dd352abc1e03e28420eaacbe830ef8f Mon Sep 17 00:00:00 2001
From: Fernando Cardenas <fcardenas@gitlab.com>
Date: Wed, 7 Feb 2024 10:55:21 -0600
Subject: [PATCH] Add tooltip with help docs to license scanning widget

* Added tooltip to be consistent with other widgets

Changelog: changed
---
 .../extensions/license_compliance/index.vue   | 12 ++++++++++++
 .../license_compliance/index_spec.js          | 19 +++++++++++++++++++
 locale/gitlab.pot                             |  6 ++++++
 3 files changed, 37 insertions(+)

diff --git a/ee/app/assets/javascripts/vue_merge_request_widget/extensions/license_compliance/index.vue b/ee/app/assets/javascripts/vue_merge_request_widget/extensions/license_compliance/index.vue
index 56c6b7ec79395..70c574ec96555 100644
--- a/ee/app/assets/javascripts/vue_merge_request_widget/extensions/license_compliance/index.vue
+++ b/ee/app/assets/javascripts/vue_merge_request_widget/extensions/license_compliance/index.vue
@@ -5,6 +5,7 @@ import axios from '~/lib/utils/axios_utils';
 import { EXTENSION_ICONS } from '~/vue_merge_request_widget/constants';
 import { LICENSE_APPROVAL_STATUS } from 'ee/vue_shared/license_compliance/constants';
 import MrWidget from '~/vue_merge_request_widget/components/widget/widget.vue';
+import { helpPagePath } from '~/helpers/help_page_helper';
 import { parseDependencies } from './utils';
 
 const APPROVAL_STATUS_TO_ICON = {
@@ -249,6 +250,16 @@ export default {
       });
     },
   },
+  widgetHelpPopover: {
+    options: { title: s__('ciReport|License scan results') },
+    content: {
+      text: s__('ciReport|Detects known vulnerabilities in your software dependencies.'),
+      learnMorePath: helpPagePath('user/compliance/license_approval_policies', {
+        anchor:
+          'criteria-comparing-licenses-detected-in-the-merge-request-branch-to-licenses-detected-in-the-default-branch',
+      }),
+    },
+  },
 };
 </script>
 
@@ -264,5 +275,6 @@ export default {
     :summary="summary"
     :is-collapsible="shouldCollapse"
     :content="licenseComplianceData.expanded"
+    :help-popover="$options.widgetHelpPopover"
   />
 </template>
diff --git a/ee/spec/frontend/vue_merge_request_widget/extensions/license_compliance/index_spec.js b/ee/spec/frontend/vue_merge_request_widget/extensions/license_compliance/index_spec.js
index f9202a152f242..c899b1dee1e66 100644
--- a/ee/spec/frontend/vue_merge_request_widget/extensions/license_compliance/index_spec.js
+++ b/ee/spec/frontend/vue_merge_request_widget/extensions/license_compliance/index_spec.js
@@ -3,6 +3,7 @@ import { mountExtended } from 'helpers/vue_test_utils_helper';
 import waitForPromises from 'helpers/wait_for_promises';
 import axios from '~/lib/utils/axios_utils';
 import ActionButtons from '~/vue_merge_request_widget/components/widget/action_buttons.vue';
+import Widget from '~/vue_merge_request_widget/components/widget/widget.vue';
 
 import licenseComplianceExtension from 'ee/vue_merge_request_widget/extensions/license_compliance/index.vue';
 import { HTTP_STATUS_INTERNAL_SERVER_ERROR, HTTP_STATUS_OK } from '~/lib/utils/http_status';
@@ -36,6 +37,7 @@ describe('License Compliance extension', () => {
     mock.onGet(endpoint).reply(statusCode, data, {});
   };
 
+  const findWidget = () => wrapper.findComponent(Widget);
   const findToggleCollapsedButton = () => wrapper.findByTestId('toggle-button');
   const findAllExtensionListItems = () => wrapper.findAllByTestId('extension-list-item');
   const findActionButtons = () => wrapper.findComponent(ActionButtons);
@@ -112,6 +114,23 @@ describe('License Compliance extension', () => {
         expect(findToggleCollapsedButton().exists()).toBe(isExpandable);
       },
     );
+
+    it('displays the help popover', () => {
+      mockApi(licenseComparisonPathCollapsed, HTTP_STATUS_OK, licenseComplianceNewLicenses);
+
+      createComponent();
+
+      expect(findWidget().props('helpPopover')).toEqual({
+        content: {
+          learnMorePath:
+            '/help/user/compliance/license_approval_policies#criteria-comparing-licenses-detected-in-the-merge-request-branch-to-licenses-detected-in-the-default-branch',
+          text: 'Detects known vulnerabilities in your software dependencies.',
+        },
+        options: {
+          title: 'License scan results',
+        },
+      });
+    });
   });
 
   describe('actions buttons', () => {
diff --git a/locale/gitlab.pot b/locale/gitlab.pot
index 1edc14fffe337..156b941f8d3f8 100644
--- a/locale/gitlab.pot
+++ b/locale/gitlab.pot
@@ -58166,6 +58166,9 @@ msgstr ""
 msgid "ciReport|Dependency scanning"
 msgstr ""
 
+msgid "ciReport|Detects known vulnerabilities in your software dependencies."
+msgstr ""
+
 msgid "ciReport|Detects known vulnerabilities in your source code's dependencies."
 msgstr ""
 
@@ -58220,6 +58223,9 @@ msgstr ""
 msgid "ciReport|License Compliance test metrics results are being parsed"
 msgstr ""
 
+msgid "ciReport|License scan results"
+msgstr ""
+
 msgid "ciReport|Load Performance"
 msgstr ""
 
-- 
GitLab