summaryrefslogtreecommitdiff
path: root/spec/frontend/work_items/pages/work_item_root_spec.js
diff options
context:
space:
mode:
Diffstat (limited to 'spec/frontend/work_items/pages/work_item_root_spec.js')
-rw-r--r--spec/frontend/work_items/pages/work_item_root_spec.js91
1 files changed, 7 insertions, 84 deletions
diff --git a/spec/frontend/work_items/pages/work_item_root_spec.js b/spec/frontend/work_items/pages/work_item_root_spec.js
index 728495e0e23..2803724b9af 100644
--- a/spec/frontend/work_items/pages/work_item_root_spec.js
+++ b/spec/frontend/work_items/pages/work_item_root_spec.js
@@ -1,108 +1,31 @@
-import Vue from 'vue';
import { shallowMount } from '@vue/test-utils';
+import Vue from 'vue';
import VueApollo from 'vue-apollo';
-import createMockApollo from 'helpers/mock_apollo_helper';
-import waitForPromises from 'helpers/wait_for_promises';
-import { mockTracking, unmockTracking } from 'helpers/tracking_helper';
-import workItemQuery from '~/work_items/graphql/work_item.query.graphql';
-import updateWorkItemMutation from '~/work_items/graphql/update_work_item.mutation.graphql';
+import WorkItemDetail from '~/work_items/components/work_item_detail.vue';
import WorkItemsRoot from '~/work_items/pages/work_item_root.vue';
-import ItemTitle from '~/work_items/components/item_title.vue';
-import { resolvers } from '~/work_items/graphql/resolvers';
-import { workItemQueryResponse, updateWorkItemMutationResponse } from '../mock_data';
Vue.use(VueApollo);
-const WORK_ITEM_ID = '1';
-const WORK_ITEM_GID = `gid://gitlab/WorkItem/${WORK_ITEM_ID}`;
-
describe('Work items root component', () => {
- const mockUpdatedTitle = 'Updated title';
let wrapper;
- let fakeApollo;
-
- const findTitle = () => wrapper.findComponent(ItemTitle);
- const createComponent = ({ queryResponse = workItemQueryResponse } = {}) => {
- fakeApollo = createMockApollo(
- [[updateWorkItemMutation, jest.fn().mockResolvedValue(updateWorkItemMutationResponse)]],
- resolvers,
- {
- possibleTypes: {
- LocalWorkItemWidget: ['LocalTitleWidget'],
- },
- },
- );
- fakeApollo.clients.defaultClient.cache.writeQuery({
- query: workItemQuery,
- variables: {
- id: WORK_ITEM_GID,
- },
- data: queryResponse,
- });
+ const findWorkItemDetail = () => wrapper.findComponent(WorkItemDetail);
+ const createComponent = () => {
wrapper = shallowMount(WorkItemsRoot, {
propsData: {
- id: WORK_ITEM_ID,
+ id: '1',
},
- apolloProvider: fakeApollo,
});
};
afterEach(() => {
wrapper.destroy();
- fakeApollo = null;
});
- it('renders the title', () => {
+ it('renders WorkItemDetail', () => {
createComponent();
- expect(findTitle().exists()).toBe(true);
- expect(findTitle().props('initialTitle')).toBe('Test');
- });
-
- it('updates the title when it is edited', async () => {
- createComponent();
- jest.spyOn(wrapper.vm.$apollo, 'mutate');
-
- await findTitle().vm.$emit('title-changed', mockUpdatedTitle);
-
- expect(wrapper.vm.$apollo.mutate).toHaveBeenCalledWith({
- mutation: updateWorkItemMutation,
- variables: {
- input: {
- id: WORK_ITEM_GID,
- title: mockUpdatedTitle,
- },
- },
- });
- });
-
- describe('tracking', () => {
- let trackingSpy;
-
- beforeEach(() => {
- trackingSpy = mockTracking('_category_', undefined, jest.spyOn);
-
- createComponent();
- });
-
- afterEach(() => {
- unmockTracking();
- });
-
- it('tracks item title updates', async () => {
- await findTitle().vm.$emit('title-changed', mockUpdatedTitle);
-
- await waitForPromises();
-
- expect(trackingSpy).toHaveBeenCalledTimes(1);
- expect(trackingSpy).toHaveBeenCalledWith('workItems:show', undefined, {
- action: 'updated_title',
- category: 'workItems:show',
- label: 'item_title',
- property: '[type_work_item]',
- });
- });
+ expect(findWorkItemDetail().props()).toEqual({ workItemId: 'gid://gitlab/WorkItem/1' });
});
});