Commit 2e1feef2 authored by Jose Ivan Vargas's avatar Jose Ivan Vargas

Merge branch '340593-add-group-usage-link' into 'master'

Add link to group pipeline usage quota

See merge request gitlab-org/gitlab!79969
parents 49d2edac c68833b0
<script> <script>
import { GlTabs, GlTab } from '@gitlab/ui'; import { GlTabs, GlTab, GlLink } from '@gitlab/ui';
import DeploymentFrequencyCharts from 'ee/dora/components/deployment_frequency_charts.vue'; import DeploymentFrequencyCharts from 'ee/dora/components/deployment_frequency_charts.vue';
import LeadTimeCharts from 'ee/dora/components/lead_time_charts.vue'; import LeadTimeCharts from 'ee/dora/components/lead_time_charts.vue';
import { mergeUrlParams, updateHistory, getParameterValues } from '~/lib/utils/url_utility'; import { mergeUrlParams, updateHistory, getParameterValues } from '~/lib/utils/url_utility';
...@@ -12,6 +12,7 @@ export default { ...@@ -12,6 +12,7 @@ export default {
ReleaseStatsCard, ReleaseStatsCard,
GlTabs, GlTabs,
GlTab, GlTab,
GlLink,
DeploymentFrequencyCharts, DeploymentFrequencyCharts,
LeadTimeCharts, LeadTimeCharts,
SharedRunnersUsage, SharedRunnersUsage,
...@@ -21,6 +22,10 @@ export default { ...@@ -21,6 +22,10 @@ export default {
type: Boolean, type: Boolean,
default: false, default: false,
}, },
pipelineGroupUsageQuotaPath: {
type: String,
default: '',
},
}, },
data() { data() {
return { return {
...@@ -80,6 +85,11 @@ export default { ...@@ -80,6 +85,11 @@ export default {
<gl-tab :title="s__('CICDAnalytics|Shared runner usage')"> <gl-tab :title="s__('CICDAnalytics|Shared runner usage')">
<shared-runners-usage /> <shared-runners-usage />
</gl-tab> </gl-tab>
<template #tabs-end>
<gl-link :href="pipelineGroupUsageQuotaPath" class="gl-align-self-center gl-ml-auto">{{
__('View group pipeline usage quota')
}}</gl-link>
</template>
</gl-tabs> </gl-tabs>
<release-stats-card v-else :class="releaseStatsCardClasses" /> <release-stats-card v-else :class="releaseStatsCardClasses" />
</div> </div>
......
...@@ -15,7 +15,7 @@ export default () => { ...@@ -15,7 +15,7 @@ export default () => {
if (!el) return false; if (!el) return false;
const { fullPath, groupId } = el.dataset; const { fullPath, groupId, pipelineGroupUsageQuotaPath } = el.dataset;
const shouldRenderDoraCharts = parseBoolean(el.dataset.shouldRenderDoraCharts); const shouldRenderDoraCharts = parseBoolean(el.dataset.shouldRenderDoraCharts);
...@@ -26,6 +26,7 @@ export default () => { ...@@ -26,6 +26,7 @@ export default () => {
groupPath: fullPath, groupPath: fullPath,
shouldRenderDoraCharts, shouldRenderDoraCharts,
groupId, groupId,
pipelineGroupUsageQuotaPath,
}, },
render: (createElement) => createElement(CiCdAnalyticsApp), render: (createElement) => createElement(CiCdAnalyticsApp),
}); });
......
- page_title _("CI/CD Analytics") - page_title _("CI/CD Analytics")
#js-group-ci-cd-analytics-app{ data: { full_path: @group.full_path, #js-group-ci-cd-analytics-app{ data: { full_path: @group.full_path,
should_render_dora_charts: should_render_dora_charts.to_s, group_id: @group.id } } should_render_dora_charts: should_render_dora_charts.to_s, group_id: @group.id,
pipeline_group_usage_quota_path: group_usage_quotas_path(@group, anchor: 'pipelines-quota-tab') } }
import { GlTabs, GlTab } from '@gitlab/ui'; import { GlTabs, GlTab, GlLink } from '@gitlab/ui';
import { shallowMount } from '@vue/test-utils'; import { shallowMount } from '@vue/test-utils';
import { merge } from 'lodash'; import { merge } from 'lodash';
import CiCdAnalyticsApp from 'ee/analytics/group_ci_cd_analytics/components/app.vue'; import CiCdAnalyticsApp from 'ee/analytics/group_ci_cd_analytics/components/app.vue';
...@@ -19,6 +19,8 @@ describe('ee/analytics/group_ci_cd_analytics/components/app.vue', () => { ...@@ -19,6 +19,8 @@ describe('ee/analytics/group_ci_cd_analytics/components/app.vue', () => {
getParameterValues.mockReturnValue([]); getParameterValues.mockReturnValue([]);
}); });
const quotaPath = '/groups/my-awesome-group/-/usage_quotas#pipelines-quota-tab';
const createComponent = (mountOptions = {}) => { const createComponent = (mountOptions = {}) => {
wrapper = shallowMount( wrapper = shallowMount(
CiCdAnalyticsApp, CiCdAnalyticsApp,
...@@ -26,6 +28,7 @@ describe('ee/analytics/group_ci_cd_analytics/components/app.vue', () => { ...@@ -26,6 +28,7 @@ describe('ee/analytics/group_ci_cd_analytics/components/app.vue', () => {
{ {
provide: { provide: {
shouldRenderDoraCharts: true, shouldRenderDoraCharts: true,
pipelineGroupUsageQuotaPath: quotaPath,
}, },
}, },
mountOptions, mountOptions,
...@@ -34,6 +37,7 @@ describe('ee/analytics/group_ci_cd_analytics/components/app.vue', () => { ...@@ -34,6 +37,7 @@ describe('ee/analytics/group_ci_cd_analytics/components/app.vue', () => {
}; };
const findGlTabs = () => wrapper.findComponent(GlTabs); const findGlTabs = () => wrapper.findComponent(GlTabs);
const findUsageQuotaLink = () => wrapper.findComponent(GlLink);
const findAllGlTabs = () => wrapper.findAllComponents(GlTab); const findAllGlTabs = () => wrapper.findAllComponents(GlTab);
const findGlTabAtIndex = (index) => findAllGlTabs().at(index); const findGlTabAtIndex = (index) => findAllGlTabs().at(index);
...@@ -116,4 +120,17 @@ describe('ee/analytics/group_ci_cd_analytics/components/app.vue', () => { ...@@ -116,4 +120,17 @@ describe('ee/analytics/group_ci_cd_analytics/components/app.vue', () => {
expect(findGlTabs().attributes('value')).toBe(index); expect(findGlTabs().attributes('value')).toBe(index);
}); });
}); });
it('displays link to group pipeline usage quota page', () => {
createComponent({
stubs: {
GlTabs: {
template: '<div><slot></slot><slot name="tabs-end"></slot></div>',
},
},
});
expect(findUsageQuotaLink().attributes('href')).toBe(quotaPath);
expect(findUsageQuotaLink().text()).toBe('View group pipeline usage quota');
});
}); });
...@@ -39910,6 +39910,9 @@ msgstr "" ...@@ -39910,6 +39910,9 @@ msgstr ""
msgid "View group labels" msgid "View group labels"
msgstr "" msgstr ""
msgid "View group pipeline usage quota"
msgstr ""
msgid "View incident details at" msgid "View incident details at"
msgstr "" msgstr ""
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment