Commit 55481425 authored by Brandon Labuschagne's avatar Brandon Labuschagne Committed by Pavel Shutsin

FE changes migrating segments to namespace

This commit applies the FE changes required to
allow the Devops Adoption feature to work with
the new namespace terminology

A follow up issue is open to remove the remaining
references to segments on the FE
parent 60e3a879
......@@ -17,8 +17,8 @@ import {
TRACK_ADOPTION_TAB_CLICK_EVENT,
TRACK_DEVOPS_SCORE_TAB_CLICK_EVENT,
} from '../constants';
import bulkFindOrCreateDevopsAdoptionSegmentsMutation from '../graphql/mutations/bulk_find_or_create_devops_adoption_segments.mutation.graphql';
import devopsAdoptionSegmentsQuery from '../graphql/queries/devops_adoption_segments.query.graphql';
import bulkEnableDevopsAdoptionNamespacesMutation from '../graphql/mutations/bulk_enable_devops_adoption_namespaces.mutation.graphql';
import devopsAdoptionEnabledNamespacesQuery from '../graphql/queries/devops_adoption_enabled_namespaces.query.graphql';
import getGroupsQuery from '../graphql/queries/get_groups.query.graphql';
import { addSegmentsToCache, deleteSegmentsFromCache } from '../utils/cache_updates';
import { shouldPollTableData } from '../utils/helpers';
......@@ -85,14 +85,14 @@ export default {
};
},
apollo: {
devopsAdoptionSegments: {
query: devopsAdoptionSegmentsQuery,
devopsAdoptionEnabledNamespaces: {
query: devopsAdoptionEnabledNamespacesQuery,
variables() {
return this.segmentsQueryVariables;
},
result({ data }) {
if (this.isGroup) {
const groupEnabled = data.devopsAdoptionSegments.nodes.some(
const groupEnabled = data.devopsAdoptionEnabledNamespaces.nodes.some(
({ namespace: { id } }) => id === this.groupGid,
);
......@@ -114,14 +114,14 @@ export default {
return Boolean(this.groups?.nodes?.length);
},
hasSegmentsData() {
return Boolean(this.devopsAdoptionSegments?.nodes?.length);
return Boolean(this.devopsAdoptionEnabledNamespaces?.nodes?.length);
},
hasLoadingError() {
return Object.values(this.errors).some((error) => error === true);
},
timestamp() {
return dateformat(
this.devopsAdoptionSegments?.nodes[0]?.latestSnapshot?.recordedAt,
this.devopsAdoptionEnabledNamespaces?.nodes[0]?.latestSnapshot?.recordedAt,
DATE_TIME_FORMAT,
);
},
......@@ -129,11 +129,11 @@ export default {
return (
this.isLoadingGroups ||
this.isLoadingEnableGroup ||
this.$apollo.queries.devopsAdoptionSegments.loading
this.$apollo.queries.devopsAdoptionEnabledNamespaces.loading
);
},
segmentLimitReached() {
return this.devopsAdoptionSegments?.nodes?.length > this.$options.maxSegments;
return this.devopsAdoptionEnabledNamespaces?.nodes?.length > this.$options.maxSegments;
},
editGroupsButtonLabel() {
return this.isGroup
......@@ -165,19 +165,19 @@ export default {
this.$apollo
.mutate({
mutation: bulkFindOrCreateDevopsAdoptionSegmentsMutation,
mutation: bulkEnableDevopsAdoptionNamespacesMutation,
variables: {
namespaceIds: [this.groupGid],
},
update: (store, { data }) => {
const {
bulkFindOrCreateDevopsAdoptionSegments: { segments, errors },
bulkEnableDevopsAdoptionNamespaces: { enabledNamespaces, errors },
} = data;
if (errors.length) {
this.handleError(DEVOPS_ADOPTION_ERROR_KEYS.addSegment, errors);
} else {
this.addSegmentsToCache(segments);
this.addSegmentsToCache(enabledNamespaces);
}
},
})
......@@ -190,13 +190,13 @@ export default {
},
pollTableData() {
const shouldPoll = shouldPollTableData({
segments: this.devopsAdoptionSegments.nodes,
timestamp: this.devopsAdoptionSegments?.nodes[0]?.latestSnapshot?.recordedAt,
segments: this.devopsAdoptionEnabledNamespaces.nodes,
timestamp: this.devopsAdoptionEnabledNamespaces?.nodes[0]?.latestSnapshot?.recordedAt,
openModal: this.openModal,
});
if (shouldPoll) {
this.$apollo.queries.devopsAdoptionSegments.refetch();
this.$apollo.queries.devopsAdoptionEnabledNamespaces.refetch();
}
},
trackModalOpenState(state) {
......@@ -311,7 +311,7 @@ export default {
:segment-limit-reached="segmentLimitReached"
:edit-groups-button-label="editGroupsButtonLabel"
:cols="tab.cols"
:segments="devopsAdoptionSegments"
:segments="devopsAdoptionEnabledNamespaces"
@segmentsRemoved="deleteSegmentsFromCache"
@openAddRemoveModal="openAddRemoveModal"
/>
......@@ -327,7 +327,7 @@ export default {
v-if="canRenderModal"
ref="addRemoveModal"
:groups="groups.nodes"
:enabled-groups="devopsAdoptionSegments.nodes"
:enabled-groups="devopsAdoptionEnabledNamespaces.nodes"
@segmentsAdded="addSegmentsToCache"
@segmentsRemoved="deleteSegmentsFromCache"
@trackModalOpenState="trackModalOpenState"
......
......@@ -2,7 +2,7 @@
import { GlModal, GlSprintf, GlAlert } from '@gitlab/ui';
import * as Sentry from '@sentry/browser';
import { DEVOPS_ADOPTION_STRINGS, DEVOPS_ADOPTION_SEGMENT_DELETE_MODAL_ID } from '../constants';
import deleteDevopsAdoptionSegmentMutation from '../graphql/mutations/delete_devops_adoption_segment.mutation.graphql';
import disableDevopsAdoptionNamespaceMutation from '../graphql/mutations/disable_devops_adoption_namespace.mutation.graphql';
export default {
name: 'DevopsAdoptionDeleteModal',
......@@ -57,10 +57,10 @@ export default {
const {
data: {
deleteDevopsAdoptionSegment: { errors },
disableDevopsAdoptionNamespace: { errors },
},
} = await this.$apollo.mutate({
mutation: deleteDevopsAdoptionSegmentMutation,
mutation: disableDevopsAdoptionNamespaceMutation,
variables: {
id: [id],
},
......
......@@ -8,8 +8,8 @@ import {
DEVOPS_ADOPTION_SEGMENT_MODAL_ID,
DEVOPS_ADOPTION_GROUP_LEVEL_LABEL,
} from '../constants';
import bulkFindOrCreateDevopsAdoptionSegmentsMutation from '../graphql/mutations/bulk_find_or_create_devops_adoption_segments.mutation.graphql';
import deleteDevopsAdoptionSegmentMutation from '../graphql/mutations/delete_devops_adoption_segment.mutation.graphql';
import bulkEnableDevopsAdoptionNamespacesMutation from '../graphql/mutations/bulk_enable_devops_adoption_namespaces.mutation.graphql';
import disableDevopsAdoptionNamespaceMutation from '../graphql/mutations/disable_devops_adoption_namespace.mutation.graphql';
export default {
name: 'DevopsAdoptionSegmentModal',
......@@ -139,20 +139,20 @@ export default {
this.loadingAdd = true;
const {
data: {
bulkFindOrCreateDevopsAdoptionSegments: { errors },
bulkEnableDevopsAdoptionNamespaces: { errors },
},
} = await this.$apollo.mutate({
mutation: bulkFindOrCreateDevopsAdoptionSegmentsMutation,
mutation: bulkEnableDevopsAdoptionNamespacesMutation,
variables: {
namespaceIds,
displayNamespaceId: this.groupGid,
},
update: (store, { data }) => {
const {
bulkFindOrCreateDevopsAdoptionSegments: { segments, errors: requestErrors },
bulkEnableDevopsAdoptionNamespaces: { enabledNamespaces, errors: requestErrors },
} = data;
if (!requestErrors.length) this.$emit('segmentsAdded', segments);
if (!requestErrors.length) this.$emit('segmentsAdded', enabledNamespaces);
},
});
......@@ -182,16 +182,16 @@ export default {
const {
data: {
deleteDevopsAdoptionSegment: { errors },
disableDevopsAdoptionNamespace: { errors },
},
} = await this.$apollo.mutate({
mutation: deleteDevopsAdoptionSegmentMutation,
mutation: disableDevopsAdoptionNamespaceMutation,
variables: {
id: removedGroupGids,
},
update: (store, { data }) => {
const {
deleteDevopsAdoptionSegment: { errors: requestErrors },
disableDevopsAdoptionNamespace: { errors: requestErrors },
} = data;
if (!requestErrors.length) this.$emit('segmentsRemoved', removedGroupGids);
......
mutation($namespaceIds: [NamespaceID!]!, $displayNamespaceId: NamespaceID) {
bulkFindOrCreateDevopsAdoptionSegments(
bulkEnableDevopsAdoptionNamespaces(
input: { namespaceIds: $namespaceIds, displayNamespaceId: $displayNamespaceId }
) {
segments {
enabledNamespaces {
id
latestSnapshot {
issueOpened
......
mutation($id: [AnalyticsDevopsAdoptionSegmentID!]!) {
deleteDevopsAdoptionSegment(input: { id: $id }) {
errors
}
}
mutation($id: [AnalyticsDevopsAdoptionEnabledNamespaceID!]!) {
disableDevopsAdoptionNamespace(input: { id: $id }) {
errors
}
}
query devopsAdoptionSegments($displayNamespaceId: NamespaceID) {
devopsAdoptionSegments(displayNamespaceId: $displayNamespaceId) {
query devopsAdoptionEnabledNamespaces($displayNamespaceId: NamespaceID) {
devopsAdoptionEnabledNamespaces(displayNamespaceId: $displayNamespaceId) {
nodes {
id
latestSnapshot {
......
import produce from 'immer';
import devopsAdoptionSegmentsQuery from '../graphql/queries/devops_adoption_segments.query.graphql';
import devopsAdoptionEnabledNamespacesQuery from '../graphql/queries/devops_adoption_enabled_namespaces.query.graphql';
export const addSegmentsToCache = (store, segments, variables) => {
const sourceData = store.readQuery({
query: devopsAdoptionSegmentsQuery,
query: devopsAdoptionEnabledNamespacesQuery,
variables,
});
const data = produce(sourceData, (draftData) => {
draftData.devopsAdoptionSegments.nodes = [
...draftData.devopsAdoptionSegments.nodes,
draftData.devopsAdoptionEnabledNamespaces.nodes = [
...draftData.devopsAdoptionEnabledNamespaces.nodes,
...segments,
];
});
store.writeQuery({
query: devopsAdoptionSegmentsQuery,
query: devopsAdoptionEnabledNamespacesQuery,
variables,
data,
});
......@@ -23,18 +23,18 @@ export const addSegmentsToCache = (store, segments, variables) => {
export const deleteSegmentsFromCache = (store, segmentIds, variables) => {
const sourceData = store.readQuery({
query: devopsAdoptionSegmentsQuery,
query: devopsAdoptionEnabledNamespacesQuery,
variables,
});
const updatedData = produce(sourceData, (draftData) => {
draftData.devopsAdoptionSegments.nodes = draftData.devopsAdoptionSegments.nodes.filter(
draftData.devopsAdoptionEnabledNamespaces.nodes = draftData.devopsAdoptionEnabledNamespaces.nodes.filter(
({ id }) => !segmentIds.includes(id),
);
});
store.writeQuery({
query: devopsAdoptionSegmentsQuery,
query: devopsAdoptionEnabledNamespacesQuery,
variables,
data: updatedData,
});
......
......@@ -11,8 +11,8 @@ import {
DEFAULT_POLLING_INTERVAL,
DEVOPS_ADOPTION_TABLE_CONFIGURATION,
} from 'ee/analytics/devops_report/devops_adoption/constants';
import bulkFindOrCreateDevopsAdoptionSegmentsMutation from 'ee/analytics/devops_report/devops_adoption/graphql/mutations/bulk_find_or_create_devops_adoption_segments.mutation.graphql';
import devopsAdoptionSegments from 'ee/analytics/devops_report/devops_adoption/graphql/queries/devops_adoption_segments.query.graphql';
import bulkEnableDevopsAdoptionNamespacesMutation from 'ee/analytics/devops_report/devops_adoption/graphql/mutations/bulk_enable_devops_adoption_namespaces.mutation.graphql';
import devopsAdoptionEnabledNamespaces from 'ee/analytics/devops_report/devops_adoption/graphql/queries/devops_adoption_enabled_namespaces.query.graphql';
import getGroupsQuery from 'ee/analytics/devops_report/devops_adoption/graphql/queries/get_groups.query.graphql';
import { addSegmentsToCache } from 'ee/analytics/devops_report/devops_adoption/utils/cache_updates';
import createMockApollo from 'helpers/mock_apollo_helper';
......@@ -24,8 +24,8 @@ import {
groupNodes,
nextGroupNode,
groupPageInfo,
devopsAdoptionSegmentsData,
devopsAdoptionSegmentsDataEmpty,
devopsAdoptionNamespaceData,
devopsAdoptionNamespaceDataEmpty,
} from '../mock_data';
jest.mock('ee/analytics/devops_report/devops_adoption/utils/cache_updates', () => ({
......@@ -45,13 +45,13 @@ describe('DevopsAdoptionApp', () => {
let wrapper;
const groupsEmpty = jest.fn().mockResolvedValue({ __typename: 'Groups', nodes: [] });
const segmentsEmpty = jest
.fn()
.mockResolvedValue({ data: { devopsAdoptionSegments: devopsAdoptionSegmentsDataEmpty } });
const segmentsEmpty = jest.fn().mockResolvedValue({
data: { devopsAdoptionEnabledNamespaces: devopsAdoptionNamespaceDataEmpty },
});
const addSegmentMutationSpy = jest.fn().mockResolvedValue({
data: {
bulkFindOrCreateDevopsAdoptionSegments: {
segments: [devopsAdoptionSegmentsData.nodes[0]],
bulkEnableDevopsAdoptionNamespaces: {
enabledNamespaces: [devopsAdoptionNamespaceData.nodes[0]],
errors: [],
},
},
......@@ -66,8 +66,8 @@ describe('DevopsAdoptionApp', () => {
const mockApollo = createMockApollo(
[
[bulkFindOrCreateDevopsAdoptionSegmentsMutation, addSegmentsSpy],
[devopsAdoptionSegments, segmentsSpy],
[bulkEnableDevopsAdoptionNamespacesMutation, addSegmentsSpy],
[devopsAdoptionEnabledNamespaces, segmentsSpy],
],
{
Query: {
......@@ -291,12 +291,12 @@ describe('DevopsAdoptionApp', () => {
});
describe('when there is an active group', () => {
const groupGid = devopsAdoptionSegmentsData.nodes[0].namespace.id;
const groupGid = devopsAdoptionNamespaceData.nodes[0].namespace.id;
describe('which is enabled', () => {
beforeEach(async () => {
const segmentsWithData = jest.fn().mockResolvedValue({
data: { devopsAdoptionSegments: devopsAdoptionSegmentsData },
data: { devopsAdoptionEnabledNamespaces: devopsAdoptionNamespaceData },
});
const mockApollo = createMockApolloProvider({
segmentsSpy: segmentsWithData,
......@@ -341,7 +341,7 @@ describe('DevopsAdoptionApp', () => {
expect(addSegmentsToCache).toHaveBeenCalledTimes(1);
expect(addSegmentsToCache).toHaveBeenCalledWith(
expect.anything(),
[devopsAdoptionSegmentsData.nodes[0]],
[devopsAdoptionNamespaceData.nodes[0]],
{
displayNamespaceId: groupGid,
},
......@@ -523,7 +523,7 @@ describe('DevopsAdoptionApp', () => {
mockApollo,
provide: {
isGroup: true,
groupGid: devopsAdoptionSegmentsData.nodes[0].namespace.id,
groupGid: devopsAdoptionNamespaceData.nodes[0].namespace.id,
},
});
});
......
......@@ -5,13 +5,13 @@ import Vue from 'vue';
import VueApollo from 'vue-apollo';
import DevopsAdoptionDeleteModal from 'ee/analytics/devops_report/devops_adoption/components/devops_adoption_delete_modal.vue';
import { DEVOPS_ADOPTION_SEGMENT_DELETE_MODAL_ID } from 'ee/analytics/devops_report/devops_adoption/constants';
import deleteDevopsAdoptionSegmentMutation from 'ee/analytics/devops_report/devops_adoption/graphql/mutations/delete_devops_adoption_segment.mutation.graphql';
import disableDevopsAdoptionNamespaceMutation from 'ee/analytics/devops_report/devops_adoption/graphql/mutations/disable_devops_adoption_namespace.mutation.graphql';
import createMockApollo from 'helpers/mock_apollo_helper';
import waitForPromises from 'helpers/wait_for_promises';
import {
genericDeleteErrorMessage,
dataErrorMessage,
devopsAdoptionSegmentsData,
devopsAdoptionNamespaceData,
} from '../mock_data';
const localVue = createLocalVue();
......@@ -20,14 +20,14 @@ Vue.use(VueApollo);
const mockEvent = { preventDefault: jest.fn() };
const mutate = jest.fn().mockResolvedValue({
data: {
deleteDevopsAdoptionSegment: {
disableDevopsAdoptionNamespace: {
errors: [],
},
},
});
const mutateWithDataErrors = jest.fn().mockResolvedValue({
data: {
deleteDevopsAdoptionSegment: {
disableDevopsAdoptionNamespace: {
errors: [dataErrorMessage],
},
},
......@@ -39,13 +39,15 @@ describe('DevopsAdoptionDeleteModal', () => {
let wrapper;
const createComponent = ({ deleteSegmentsSpy = mutate, props = {} } = {}) => {
const mockApollo = createMockApollo([[deleteDevopsAdoptionSegmentMutation, deleteSegmentsSpy]]);
const mockApollo = createMockApollo([
[disableDevopsAdoptionNamespaceMutation, deleteSegmentsSpy],
]);
wrapper = shallowMount(DevopsAdoptionDeleteModal, {
localVue,
apolloProvider: mockApollo,
propsData: {
segment: devopsAdoptionSegmentsData.nodes[0],
segment: devopsAdoptionNamespaceData.nodes[0],
...props,
},
stubs: {
......@@ -75,7 +77,7 @@ describe('DevopsAdoptionDeleteModal', () => {
});
it('displays the confirmation message', () => {
const text = `Are you sure that you would like to remove ${devopsAdoptionSegmentsData.nodes[0].namespace.fullName} from the table?`;
const text = `Are you sure that you would like to remove ${devopsAdoptionNamespaceData.nodes[0].namespace.fullName} from the table?`;
expect(findModal().text()).toBe(text);
});
......@@ -136,14 +138,14 @@ describe('DevopsAdoptionDeleteModal', () => {
it('submits the correct request variables', () => {
expect(mutate).toHaveBeenCalledWith({
id: [devopsAdoptionSegmentsData.nodes[0].id],
id: [devopsAdoptionNamespaceData.nodes[0].id],
});
});
it('emits segmentsRemoved with the correct variables', () => {
const [params] = wrapper.emitted().segmentsRemoved[0];
expect(params).toStrictEqual([devopsAdoptionSegmentsData.nodes[0].id]);
expect(params).toStrictEqual([devopsAdoptionNamespaceData.nodes[0].id]);
});
it('closes the modal after a successful mutation', () => {
......
......@@ -7,7 +7,7 @@ import DevopsAdoptionTable from 'ee/analytics/devops_report/devops_adoption/comp
import { DEVOPS_ADOPTION_TABLE_CONFIGURATION } from 'ee/analytics/devops_report/devops_adoption/constants';
import { createMockDirective, getBinding } from 'helpers/vue_mock_directive';
import { extendedWrapper } from 'helpers/vue_test_utils_helper';
import { devopsAdoptionSegmentsData } from '../mock_data';
import { devopsAdoptionNamespaceData } from '../mock_data';
describe('DevopsAdoptionSection', () => {
let wrapper;
......@@ -23,7 +23,7 @@ describe('DevopsAdoptionSection', () => {
segmentLimitReached: false,
editGroupsButtonLabel: 'Add/Remove groups',
cols: DEVOPS_ADOPTION_TABLE_CONFIGURATION[0].cols,
segments: devopsAdoptionSegmentsData,
segments: devopsAdoptionNamespaceData,
addSegmentButtonTooltipText: 'Maximum 30 groups allowed',
...props,
},
......
......@@ -5,8 +5,8 @@ import Vue, { nextTick } from 'vue';
import VueApollo from 'vue-apollo';
import DevopsAdoptionSegmentModal from 'ee/analytics/devops_report/devops_adoption/components/devops_adoption_segment_modal.vue';
import { DEVOPS_ADOPTION_SEGMENT_MODAL_ID } from 'ee/analytics/devops_report/devops_adoption/constants';
import bulkFindOrCreateDevopsAdoptionSegmentsMutation from 'ee/analytics/devops_report/devops_adoption/graphql/mutations/bulk_find_or_create_devops_adoption_segments.mutation.graphql';
import deleteDevopsAdoptionSegmentMutation from 'ee/analytics/devops_report/devops_adoption/graphql/mutations/delete_devops_adoption_segment.mutation.graphql';
import bulkEnableDevopsAdoptionNamespacesMutation from 'ee/analytics/devops_report/devops_adoption/graphql/mutations/bulk_enable_devops_adoption_namespaces.mutation.graphql';
import disableDevopsAdoptionNamespaceMutation from 'ee/analytics/devops_report/devops_adoption/graphql/mutations/disable_devops_adoption_namespace.mutation.graphql';
import createMockApollo from 'helpers/mock_apollo_helper';
import waitForPromises from 'helpers/wait_for_promises';
import {
......@@ -16,7 +16,7 @@ import {
genericErrorMessage,
dataErrorMessage,
groupNodeLabelValues,
devopsAdoptionSegmentsData,
devopsAdoptionNamespaceData,
} from '../mock_data';
const localVue = createLocalVue();
......@@ -25,25 +25,25 @@ Vue.use(VueApollo);
const mockEvent = { preventDefault: jest.fn() };
const mutate = jest.fn().mockResolvedValue({
data: {
bulkFindOrCreateDevopsAdoptionSegments: {
segments: [devopsAdoptionSegmentsData.nodes[0]],
bulkEnableDevopsAdoptionNamespaces: {
enabledNamespaces: [devopsAdoptionNamespaceData.nodes[0]],
errors: [],
},
deleteDevopsAdoptionSegment: {
segments: [devopsAdoptionSegmentsData.nodes[0]],
disableDevopsAdoptionNamespace: {
enabledNamespaces: [devopsAdoptionNamespaceData.nodes[0]],
errors: [],
},
},
});
const mutateWithDataErrors = jest.fn().mockResolvedValue({
data: {
bulkFindOrCreateDevopsAdoptionSegments: {
bulkEnableDevopsAdoptionNamespaces: {
errors: [dataErrorMessage],
segments: [],
enabledNamespaces: [],
},
deleteDevopsAdoptionSegment: {
disableDevopsAdoptionNamespace: {
errors: [dataErrorMessage],
segments: [],
enabledNamespaces: [],
},
},
});
......@@ -60,8 +60,8 @@ describe('DevopsAdoptionSegmentModal', () => {
provide = {},
} = {}) => {
const mockApollo = createMockApollo([
[deleteDevopsAdoptionSegmentMutation, deleteSegmentsSpy],
[bulkFindOrCreateDevopsAdoptionSegmentsMutation, addSegmentsSpy],
[disableDevopsAdoptionNamespaceMutation, deleteSegmentsSpy],
[bulkEnableDevopsAdoptionNamespacesMutation, addSegmentsSpy],
]);
wrapper = shallowMount(DevopsAdoptionSegmentModal, {
......@@ -236,7 +236,7 @@ describe('DevopsAdoptionSegmentModal', () => {
const enableFirstGroup = { checkboxValues: [groupIds[0]] };
const enableSecondGroup = { checkboxValues: [groupIds[1]] };
const noEnabledGroups = { checkboxValues: [] };
const firstGroupEnabledData = [devopsAdoptionSegmentsData.nodes[0]];
const firstGroupEnabledData = [devopsAdoptionNamespaceData.nodes[0]];
const firstGroupId = [groupIds[0]];
const firstGroupGid = [groupGids[0]];
const secondGroupGid = [groupGids[1]];
......@@ -311,7 +311,7 @@ describe('DevopsAdoptionSegmentModal', () => {
it('emits segmentsAdded with the correct variables', () => {
const [params] = wrapper.emitted().segmentsAdded[0];
expect(params).toStrictEqual([devopsAdoptionSegmentsData.nodes[0]]);
expect(params).toStrictEqual([devopsAdoptionNamespaceData.nodes[0]]);
});
}
......
......@@ -10,7 +10,7 @@ import {
} from 'ee/analytics/devops_report/devops_adoption/constants';
import { createMockDirective, getBinding } from 'helpers/vue_mock_directive';
import LocalStorageSync from '~/vue_shared/components/local_storage_sync.vue';
import { devopsAdoptionSegmentsData, devopsAdoptionTableHeaders } from '../mock_data';
import { devopsAdoptionNamespaceData, devopsAdoptionTableHeaders } from '../mock_data';
describe('DevopsAdoptionTable', () => {
let wrapper;
......@@ -21,7 +21,7 @@ describe('DevopsAdoptionTable', () => {
wrapper = mount(DevopsAdoptionTable, {
propsData: {
cols: DEVOPS_ADOPTION_TABLE_CONFIGURATION[0].cols,
segments: devopsAdoptionSegmentsData.nodes,
segments: devopsAdoptionNamespaceData.nodes,
},
provide,
directives: {
......@@ -112,7 +112,7 @@ describe('DevopsAdoptionTable', () => {
});
describe('"This group" badge', () => {
const thisGroupGid = devopsAdoptionSegmentsData.nodes[0].namespace.id;
const thisGroupGid = devopsAdoptionNamespaceData.nodes[0].namespace.id;
it.each`
scenario | expected | provide
......@@ -165,9 +165,9 @@ describe('DevopsAdoptionTable', () => {
});
describe.each`
scenario | tooltipText | provide | disabled
${'not active group'} | ${'Remove Group from the table.'} | ${{}} | ${false}
${'active group'} | ${'You cannot remove the group you are currently in.'} | ${{ groupGid: devopsAdoptionSegmentsData.nodes[0].namespace.id }} | ${true}
scenario | tooltipText | provide | disabled
${'not active group'} | ${'Remove Group from the table.'} | ${{}} | ${false}
${'active group'} | ${'You cannot remove the group you are currently in.'} | ${{ groupGid: devopsAdoptionNamespaceData.nodes[0].namespace.id }} | ${true}
`('actions column when $scenario', ({ tooltipText, provide, disabled }) => {
beforeEach(() => {
createComponent({ provide });
......@@ -197,7 +197,9 @@ describe('DevopsAdoptionTable', () => {
beforeEach(() => {
createComponent();
wrapper.setData({ selectedSegment: devopsAdoptionSegmentsData.nodes[0] });
wrapper.setData({
selectedSegment: devopsAdoptionNamespaceData.nodes[0],
});
});
it('re emits trackModalOpenState with the given value', async () => {
......
......@@ -39,7 +39,7 @@ export const groupPageInfo = {
nextPage: 2,
};
export const devopsAdoptionSegmentsData = {
export const devopsAdoptionNamespaceData = {
nodes: [
{
id: 1,
......@@ -59,7 +59,7 @@ export const devopsAdoptionSegmentsData = {
recordedAt: '2020-10-31T23:59:59Z',
__typename: 'latestSnapshot',
},
__typename: 'devopsSegment',
__typename: 'devopsAdoptionEnabledNamespace',
},
{
id: 2,
......@@ -68,13 +68,13 @@ export const devopsAdoptionSegmentsData = {
id: 'gid://gitlab/Group/2',
},
latestSnapshot: null,
__typename: 'devopsSegment',
__typename: 'devopsAdoptionEnabledNamespace',
},
],
__typename: 'devopsAdoptionSegments',
__typename: 'devopsAdoptionEnabledNamespaces',
};
export const devopsAdoptionSegmentsDataEmpty = {
export const devopsAdoptionNamespaceDataEmpty = {
nodes: [],
__typename: 'devopsAdoptionSegments',
};
......
......@@ -2,22 +2,22 @@ import {
deleteSegmentsFromCache,
addSegmentsToCache,
} from 'ee/analytics/devops_report/devops_adoption/utils/cache_updates';
import { devopsAdoptionSegmentsData } from '../mock_data';
import { devopsAdoptionNamespaceData } from '../mock_data';
describe('addSegmentsToCache', () => {
const store = {
readQuery: jest.fn(() => ({ devopsAdoptionSegments: { nodes: [] } })),
readQuery: jest.fn(() => ({ devopsAdoptionEnabledNamespaces: { nodes: [] } })),
writeQuery: jest.fn(),
};
it('calls writeQuery with the correct response', () => {
addSegmentsToCache(store, devopsAdoptionSegmentsData.nodes);
addSegmentsToCache(store, devopsAdoptionNamespaceData.nodes);
expect(store.writeQuery).toHaveBeenCalledWith(
expect.objectContaining({
data: {
devopsAdoptionSegments: {
nodes: devopsAdoptionSegmentsData.nodes,
devopsAdoptionEnabledNamespaces: {
nodes: devopsAdoptionNamespaceData.nodes,
},
},
}),
......@@ -27,20 +27,20 @@ describe('addSegmentsToCache', () => {
describe('deleteSegmentsFromCache', () => {
const store = {
readQuery: jest.fn(() => ({ devopsAdoptionSegments: devopsAdoptionSegmentsData })),
readQuery: jest.fn(() => ({ devopsAdoptionEnabledNamespaces: devopsAdoptionNamespaceData })),
writeQuery: jest.fn(),
};
it('calls writeQuery with the correct response', () => {
// Remove the item at the first index
deleteSegmentsFromCache(store, [devopsAdoptionSegmentsData.nodes[0].id]);
deleteSegmentsFromCache(store, [devopsAdoptionNamespaceData.nodes[0].id]);
expect(store.writeQuery).toHaveBeenCalledWith(
expect.not.objectContaining({
data: {
devopsAdoptionSegments: {
__typename: 'devopsAdoptionSegments',
nodes: devopsAdoptionSegmentsData.nodes,
devopsAdoptionEnabledNamespaces: {
__typename: 'devopsAdoptionEnabledNamespaces',
nodes: devopsAdoptionNamespaceData.nodes,
},
},
}),
......@@ -48,10 +48,10 @@ describe('deleteSegmentsFromCache', () => {
expect(store.writeQuery).toHaveBeenCalledWith(
expect.objectContaining({
data: {
devopsAdoptionSegments: {
__typename: 'devopsAdoptionSegments',
devopsAdoptionEnabledNamespaces: {
__typename: 'devopsAdoptionEnabledNamespaces',
// Remove the item at the first index
nodes: devopsAdoptionSegmentsData.nodes.slice(1),
nodes: devopsAdoptionNamespaceData.nodes.slice(1),
},
},
}),
......
import { shouldPollTableData } from 'ee/analytics/devops_report/devops_adoption/utils/helpers';
import { devopsAdoptionSegmentsData } from '../mock_data';
import { devopsAdoptionNamespaceData } from '../mock_data';
describe('shouldPollTableData', () => {
const { nodes: pendingData } = devopsAdoptionSegmentsData;
const { nodes: pendingData } = devopsAdoptionNamespaceData;
const comepleteData = [pendingData[0]];
const mockDate = '2020-07-06T00:00:00.000Z';
const previousDay = '2020-07-05T00:00:00.000Z';
......
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