From 6ad576e92d9ac76d0357d530011a90aee7a8410f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Axel=20Garc=C3=ADa?= <agarcia@gitlab.com>
Date: Thu, 5 Aug 2021 17:00:15 -0400
Subject: [PATCH] Refactor documentation links for devops_score

We're replacing the use of HAML's help_page_path
by JS helpPagePath.
---
 .../devops_report/components/devops_score.vue   |  7 +++----
 .../analytics/devops_report/devops_score.js     |  8 +-------
 .../admin/dev_ops_report/_report.html.haml      |  2 +-
 .../components/devops_score_spec.js             | 17 ++++++++---------
 4 files changed, 13 insertions(+), 21 deletions(-)

diff --git a/app/assets/javascripts/analytics/devops_report/components/devops_score.vue b/app/assets/javascripts/analytics/devops_report/components/devops_score.vue
index be38b32c11911..238081cc3c077 100644
--- a/app/assets/javascripts/analytics/devops_report/components/devops_score.vue
+++ b/app/assets/javascripts/analytics/devops_report/components/devops_score.vue
@@ -1,6 +1,7 @@
 <script>
 import { GlBadge, GlTable, GlLink, GlEmptyState } from '@gitlab/ui';
 import { GlSingleStat } from '@gitlab/ui/dist/charts';
+import { helpPagePath } from '~/helpers/help_page_helper';
 import { sprintf, s__ } from '~/locale';
 import DevopsScoreCallout from './devops_score_callout.vue';
 
@@ -22,9 +23,6 @@ export default {
     devopsScoreMetrics: {
       default: null,
     },
-    devopsReportDocsPath: {
-      default: '',
-    },
     noDataImagePath: {
       default: '',
     },
@@ -42,6 +40,7 @@ export default {
       return this.devopsScoreMetrics.averageScore === undefined;
     },
   },
+  devopsReportDocsPath: helpPagePath('user/admin_area/analytics/dev_ops_report'),
   tableHeaderFields: [
     {
       key: 'title',
@@ -76,7 +75,7 @@ export default {
     >
       <template #description>
         <p class="gl-mb-0">{{ __('It may be several days before you see feature usage data.') }}</p>
-        <gl-link :href="devopsReportDocsPath">{{
+        <gl-link :href="$options.devopsReportDocsPath">{{
           __('See example DevOps Score page in our documentation.')
         }}</gl-link>
       </template>
diff --git a/app/assets/javascripts/analytics/devops_report/devops_score.js b/app/assets/javascripts/analytics/devops_report/devops_score.js
index 20e9fc776bcf3..0bf98b65ed5c9 100644
--- a/app/assets/javascripts/analytics/devops_report/devops_score.js
+++ b/app/assets/javascripts/analytics/devops_report/devops_score.js
@@ -6,18 +6,12 @@ export default () => {
 
   if (!el) return false;
 
-  const {
-    devopsScoreMetrics,
-    devopsReportDocsPath,
-    noDataImagePath,
-    devopsScoreIntroImagePath,
-  } = el.dataset;
+  const { devopsScoreMetrics, noDataImagePath, devopsScoreIntroImagePath } = el.dataset;
 
   return new Vue({
     el,
     provide: {
       devopsScoreMetrics: JSON.parse(devopsScoreMetrics),
-      devopsReportDocsPath,
       noDataImagePath,
       devopsScoreIntroImagePath,
     },
diff --git a/app/views/admin/dev_ops_report/_report.html.haml b/app/views/admin/dev_ops_report/_report.html.haml
index 5ab68a463ba69..208afefc73b65 100644
--- a/app/views/admin/dev_ops_report/_report.html.haml
+++ b/app/views/admin/dev_ops_report/_report.html.haml
@@ -3,4 +3,4 @@
 - if !service_ping_enabled
   #js-devops-service-ping-disabled{ data: { is_admin: current_user&.admin.to_s, empty_state_svg_path: image_path('illustrations/convdev/convdev_no_index.svg'), enable_service_ping_path: metrics_and_profiling_admin_application_settings_path(anchor: 'js-usage-settings'), docs_link: help_page_path('development/service_ping/index.md') } }
 - else
-  #js-devops-score{ data: { devops_score_metrics: devops_score_metrics(@metric).to_json, devops_report_docs_path: help_page_path('user/admin_area/analytics/dev_ops_report'), no_data_image_path: image_path('dev_ops_report_no_data.svg'), devops_score_intro_image_path: image_path('dev_ops_report_overview.svg') } }
+  #js-devops-score{ data: { devops_score_metrics: devops_score_metrics(@metric).to_json, no_data_image_path: image_path('dev_ops_report_no_data.svg'), devops_score_intro_image_path: image_path('dev_ops_report_overview.svg') } }
diff --git a/spec/frontend/admin/analytics/devops_score/components/devops_score_spec.js b/spec/frontend/admin/analytics/devops_score/components/devops_score_spec.js
index cd8b70bccf0bc..8f8dac977dea7 100644
--- a/spec/frontend/admin/analytics/devops_score/components/devops_score_spec.js
+++ b/spec/frontend/admin/analytics/devops_score/components/devops_score_spec.js
@@ -1,15 +1,10 @@
-import { GlTable, GlBadge, GlEmptyState, GlLink } from '@gitlab/ui';
+import { GlTable, GlBadge, GlEmptyState } from '@gitlab/ui';
 import { GlSingleStat } from '@gitlab/ui/dist/charts';
 import { mount } from '@vue/test-utils';
 import { extendedWrapper } from 'helpers/vue_test_utils_helper';
 import DevopsScore from '~/analytics/devops_report/components/devops_score.vue';
 import DevopsScoreCallout from '~/analytics/devops_report/components/devops_score_callout.vue';
-import {
-  devopsScoreMetricsData,
-  devopsReportDocsPath,
-  noDataImagePath,
-  devopsScoreTableHeaders,
-} from '../mock_data';
+import { devopsScoreMetricsData, noDataImagePath, devopsScoreTableHeaders } from '../mock_data';
 
 describe('DevopsScore', () => {
   let wrapper;
@@ -19,7 +14,6 @@ describe('DevopsScore', () => {
       mount(DevopsScore, {
         provide: {
           devopsScoreMetrics,
-          devopsReportDocsPath,
           noDataImagePath,
         },
       }),
@@ -32,6 +26,8 @@ describe('DevopsScore', () => {
   const findUsageCol = () => findCol('usageCol');
   const findDevopsScoreApp = () => wrapper.findByTestId('devops-score-app');
   const bannerExists = () => wrapper.findComponent(DevopsScoreCallout).exists();
+  const findDocsLink = () =>
+    wrapper.findByRole('link', { name: 'See example DevOps Score page in our documentation.' });
 
   describe('with no data', () => {
     beforeEach(() => {
@@ -54,7 +50,10 @@ describe('DevopsScore', () => {
       });
 
       it('contains a link to the feature documentation', () => {
-        expect(wrapper.findComponent(GlLink).exists()).toBe(true);
+        expect(findDocsLink().exists()).toBe(true);
+        expect(findDocsLink().attributes('href')).toBe(
+          '/help/user/admin_area/analytics/dev_ops_report',
+        );
       });
     });
 
-- 
GitLab