Commit 3afb8d0b authored by Ezekiel Kigbo's avatar Ezekiel Kigbo

Hard codes mock data CE path navigation specs

Replaces the fixture generated mock data from
EE with hardcoded values, fixing the CE specs.

Fixes https://gitlab.com/gitlab-org/gitlab/-/merge_requests/62574
parent 937099d4
...@@ -16,16 +16,21 @@ import { ...@@ -16,16 +16,21 @@ import {
import { toYmd } from 'ee/analytics/shared/utils'; import { toYmd } from 'ee/analytics/shared/utils';
import { getJSONFixture } from 'helpers/fixtures'; import { getJSONFixture } from 'helpers/fixtures';
import { TEST_HOST } from 'helpers/test_constants'; import { TEST_HOST } from 'helpers/test_constants';
import { import { getStageByTitle, defaultStages, rawStageMedians } from 'jest/cycle_analytics/mock_data';
getStageByTitle,
defaultStages,
rawStageMedians,
fixtureEndpoints,
} from 'jest/cycle_analytics/mock_data';
import { transformStagesForPathNavigation } from '~/cycle_analytics/utils'; import { transformStagesForPathNavigation } from '~/cycle_analytics/utils';
import { convertObjectPropsToCamelCase } from '~/lib/utils/common_utils'; import { convertObjectPropsToCamelCase } from '~/lib/utils/common_utils';
import { getDateInPast, getDatesInRange } from '~/lib/utils/datetime_utility'; import { getDateInPast, getDatesInRange } from '~/lib/utils/datetime_utility';
const fixtureEndpoints = {
customizableCycleAnalyticsStagesAndEvents: 'analytics/value_stream_analytics/stages.json', // customizable stages and events endpoint
stageEvents: (stage) => `analytics/value_stream_analytics/stages/${stage}/records.json`,
stageMedian: (stage) => `analytics/value_stream_analytics/stages/${stage}/median.json`,
stageCount: (stage) => `analytics/value_stream_analytics/stages/${stage}/count.json`,
recentActivityData: 'analytics/metrics/value_stream_analytics/summary.json',
timeMetricsData: 'analytics/metrics/value_stream_analytics/time_summary.json',
groupLabels: 'api/group_labels.json',
};
export const endpoints = { export const endpoints = {
groupLabels: /groups\/[A-Z|a-z|\d|\-|_]+\/-\/labels.json/, groupLabels: /groups\/[A-Z|a-z|\d|\-|_]+\/-\/labels.json/,
recentActivityData: /analytics\/value_stream_analytics\/summary/, recentActivityData: /analytics\/value_stream_analytics\/summary/,
......
import { getJSONFixture } from 'helpers/fixtures';
import { transformStagesForPathNavigation } from '~/cycle_analytics/utils';
import { convertObjectPropsToCamelCase } from '~/lib/utils/common_utils'; import { convertObjectPropsToCamelCase } from '~/lib/utils/common_utils';
export const fixtureEndpoints = {
customizableCycleAnalyticsStagesAndEvents: 'analytics/value_stream_analytics/stages.json', // customizable stages and events endpoint
stageEvents: (stage) => `analytics/value_stream_analytics/stages/${stage}/records.json`,
stageMedian: (stage) => `analytics/value_stream_analytics/stages/${stage}/median.json`,
stageCount: (stage) => `analytics/value_stream_analytics/stages/${stage}/count.json`,
recentActivityData: 'analytics/metrics/value_stream_analytics/summary.json',
timeMetricsData: 'analytics/metrics/value_stream_analytics/time_summary.json',
groupLabels: 'api/group_labels.json',
};
export const getStageByTitle = (stages, title) => export const getStageByTitle = (stages, title) =>
stages.find((stage) => stage.title && stage.title.toLowerCase().trim() === title) || {}; stages.find((stage) => stage.title && stage.title.toLowerCase().trim() === title) || {};
export const defaultStages = ['issue', 'plan', 'review', 'code', 'test', 'staging']; export const defaultStages = ['issue', 'plan', 'review', 'code', 'test', 'staging'];
export const rawStageMedians = defaultStages.map((id) => ({
id,
...getJSONFixture(fixtureEndpoints.stageMedian(id)),
}));
export const summary = [ export const summary = [
{ value: '20', title: 'New Issues' }, { value: '20', title: 'New Issues' },
...@@ -214,26 +198,61 @@ export const convertedEvents = rawEvents.map((ev) => ...@@ -214,26 +198,61 @@ export const convertedEvents = rawEvents.map((ev) =>
export const pathNavIssueMetric = 172800; export const pathNavIssueMetric = 172800;
export const stageMediansWithNumericIds = rawStageMedians.reduce((acc, { id, value }) => { export const rawStageMedians = [
const { id: stageId } = getStageByTitle(convertedData.stages, id); { id: 'issue', value: 172800 },
return { { id: 'plan', value: 86400 },
...acc, { id: 'review', value: 1036800 },
[stageId]: value, { id: 'code', value: 129600 },
}; { id: 'test', value: 259200 },
}, {}); { id: 'staging', value: 388800 },
];
export const stageMedians = rawStageMedians.reduce(
(acc, { id, value }) => ({ export const stageMedians = {
...acc, issue: 172800,
[id]: value, plan: 86400,
}), review: 1036800,
{}, code: 129600,
); test: 259200,
staging: 388800,
};
export const allowedStages = [issueStage, planStage, codeStage]; export const allowedStages = [issueStage, planStage, codeStage];
export const transformedProjectStagePathData = transformStagesForPathNavigation({ export const transformedProjectStagePathData = [
stages: allowedStages, {
medians: stageMedians, metric: 172800,
selectedStage: issueStage, selected: true,
}); stageCount: undefined,
icon: null,
id: 'issue',
title: 'Issue',
name: 'issue',
legend: '',
description: 'Time before an issue gets scheduled',
value: null,
},
{
metric: 86400,
selected: false,
stageCount: undefined,
icon: null,
id: 'plan',
title: 'Plan',
name: 'plan',
legend: '',
description: 'Time before an issue starts implementation',
value: 75600,
},
{
metric: 129600,
selected: false,
stageCount: undefined,
icon: null,
id: 'code',
title: 'Code',
name: 'code',
legend: '',
description: 'Time until first merge request',
value: 172800,
},
];
...@@ -12,7 +12,7 @@ import { ...@@ -12,7 +12,7 @@ import {
convertedData, convertedData,
rawEvents, rawEvents,
allowedStages, allowedStages,
stageMediansWithNumericIds, stageMedians,
pathNavIssueMetric, pathNavIssueMetric,
rawStageMedians, rawStageMedians,
} from './mock_data'; } from './mock_data';
...@@ -95,7 +95,7 @@ describe('Value stream analytics utils', () => { ...@@ -95,7 +95,7 @@ describe('Value stream analytics utils', () => {
const stages = allowedStages; const stages = allowedStages;
const response = transformStagesForPathNavigation({ const response = transformStagesForPathNavigation({
stages, stages,
medians: stageMediansWithNumericIds, medians: stageMedians,
selectedStage, selectedStage,
}); });
......
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