diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2022-08-31 15:13:01 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2022-08-31 15:13:01 +0300 |
commit | 3034c7e6aa99d21c3d9fa1df01f60fdd3f32d914 (patch) | |
tree | 424f5a291abf1a93ff9870667ecb301b899972fc /spec/frontend/boards | |
parent | 6170bdc060501ecf6f817a530b3dc9f2e39ad4c3 (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/frontend/boards')
-rw-r--r-- | spec/frontend/boards/components/board_blocked_icon_spec.js | 74 | ||||
-rw-r--r-- | spec/frontend/boards/mock_data.js | 74 |
2 files changed, 130 insertions, 18 deletions
diff --git a/spec/frontend/boards/components/board_blocked_icon_spec.js b/spec/frontend/boards/components/board_blocked_icon_spec.js index cf4ba07da16..ffdc0a7cecc 100644 --- a/spec/frontend/boards/components/board_blocked_icon_spec.js +++ b/spec/frontend/boards/components/board_blocked_icon_spec.js @@ -10,13 +10,17 @@ import { blockingIssuablesQueries, issuableTypes } from '~/boards/constants'; import { truncate } from '~/lib/utils/text_utility'; import { mockIssue, + mockEpic, mockBlockingIssue1, mockBlockingIssue2, + mockBlockingEpic1, mockBlockingIssuablesResponse1, mockBlockingIssuablesResponse2, mockBlockingIssuablesResponse3, mockBlockedIssue1, mockBlockedIssue2, + mockBlockedEpic1, + mockBlockingEpicIssuablesResponse1, } from '../mock_data'; describe('BoardBlockedIcon', () => { @@ -51,9 +55,11 @@ describe('BoardBlockedIcon', () => { const createWrapperWithApollo = ({ item = mockBlockedIssue1, blockingIssuablesSpy = jest.fn().mockResolvedValue(mockBlockingIssuablesResponse1), + issuableItem = mockIssue, + issuableType = issuableTypes.issue, } = {}) => { mockApollo = createMockApollo([ - [blockingIssuablesQueries[issuableTypes.issue].query, blockingIssuablesSpy], + [blockingIssuablesQueries[issuableType].query, blockingIssuablesSpy], ]); Vue.use(VueApollo); @@ -62,27 +68,34 @@ describe('BoardBlockedIcon', () => { apolloProvider: mockApollo, propsData: { item: { - ...mockIssue, + ...issuableItem, ...item, }, uniqueId: 'uniqueId', - issuableType: issuableTypes.issue, + issuableType, }, attachTo: document.body, }), ); }; - const createWrapper = ({ item = {}, queries = {}, data = {}, loading = false } = {}) => { + const createWrapper = ({ + item = {}, + queries = {}, + data = {}, + loading = false, + mockIssuable = mockIssue, + issuableType = issuableTypes.issue, + } = {}) => { wrapper = extendedWrapper( shallowMount(BoardBlockedIcon, { propsData: { item: { - ...mockIssue, + ...mockIssuable, ...item, }, uniqueId: 'uniqueid', - issuableType: issuableTypes.issue, + issuableType, }, data() { return { @@ -105,11 +118,24 @@ describe('BoardBlockedIcon', () => { ); }; - it('should render blocked icon', () => { - createWrapper(); + it.each` + mockIssuable | issuableType | expectedIcon + ${mockIssue} | ${issuableTypes.issue} | ${'issue-block'} + ${mockEpic} | ${issuableTypes.epic} | ${'entity-blocked'} + `( + 'should render blocked icon for $issuableType', + ({ mockIssuable, issuableType, expectedIcon }) => { + createWrapper({ + mockIssuable, + issuableType, + }); - expect(findGlIcon().exists()).toBe(true); - }); + expect(findGlIcon().exists()).toBe(true); + const icon = findGlIcon(); + expect(icon.exists()).toBe(true); + expect(icon.props('name')).toBe(expectedIcon); + }, + ); it('should display a loading spinner while loading', () => { createWrapper({ loading: true }); @@ -124,17 +150,29 @@ describe('BoardBlockedIcon', () => { }); describe('on mouseenter on blocked icon', () => { - it('should query for blocking issuables and render the result', async () => { - createWrapperWithApollo(); + it.each` + item | issuableType | mockBlockingIssuable | issuableItem | blockingIssuablesSpy + ${mockBlockedIssue1} | ${issuableTypes.issue} | ${mockBlockingIssue1} | ${mockIssue} | ${jest.fn().mockResolvedValue(mockBlockingIssuablesResponse1)} + ${mockBlockedEpic1} | ${issuableTypes.epic} | ${mockBlockingEpic1} | ${mockEpic} | ${jest.fn().mockResolvedValue(mockBlockingEpicIssuablesResponse1)} + `( + 'should query for blocking issuables and render the result for $issuableType', + async ({ item, issuableType, issuableItem, mockBlockingIssuable, blockingIssuablesSpy }) => { + createWrapperWithApollo({ + item, + issuableType, + issuableItem, + blockingIssuablesSpy, + }); - expect(findGlPopover().text()).not.toContain(mockBlockingIssue1.title); + expect(findGlPopover().text()).not.toContain(mockBlockingIssuable.title); - await mouseenter(); + await mouseenter(); - expect(findGlPopover().exists()).toBe(true); - expect(findIssuableTitle().text()).toContain(mockBlockingIssue1.title); - expect(wrapper.vm.skip).toBe(true); - }); + expect(findGlPopover().exists()).toBe(true); + expect(findIssuableTitle().text()).toContain(mockBlockingIssuable.title); + expect(wrapper.vm.skip).toBe(true); + }, + ); it('should emit "blocking-issuables-error" event on query error', async () => { const mockError = new Error('mayday'); diff --git a/spec/frontend/boards/mock_data.js b/spec/frontend/boards/mock_data.js index 0e739f03f31..dc1f3246be0 100644 --- a/spec/frontend/boards/mock_data.js +++ b/spec/frontend/boards/mock_data.js @@ -266,6 +266,7 @@ export const rawIssue = { }; export const mockIssueFullPath = 'gitlab-org/test-subgroup/gitlab-test'; +export const mockEpicFullPath = 'gitlab-org/test-subgroup'; export const mockIssue = { id: 'gid://gitlab/Issue/436', @@ -291,6 +292,47 @@ export const mockIssue = { type: 'ISSUE', }; +export const mockEpic = { + id: 'gid://gitlab/Epic/26', + iid: '1', + group: { + id: 'gid://gitlab/Group/33', + fullPath: 'twitter', + __typename: 'Group', + }, + title: 'Eum animi debitis occaecati ad non odio repellat voluptatem similique.', + state: 'opened', + reference: '&1', + referencePath: `${mockEpicFullPath}&1`, + webPath: `/groups/${mockEpicFullPath}/-/epics/1`, + webUrl: `${mockEpicFullPath}/-/epics/1`, + createdAt: '2022-01-18T05:15:15Z', + closedAt: null, + __typename: 'Epic', + relativePosition: null, + confidential: false, + subscribed: true, + blocked: true, + blockedByCount: 1, + labels: { + nodes: [], + __typename: 'LabelConnection', + }, + hasIssues: true, + descendantCounts: { + closedEpics: 0, + closedIssues: 0, + openedEpics: 0, + openedIssues: 2, + __typename: 'EpicDescendantCount', + }, + descendantWeightSum: { + closedIssues: 0, + openedIssues: 0, + __typename: 'EpicDescendantWeights', + }, +}; + export const mockActiveIssue = { ...mockIssue, id: 'gid://gitlab/Issue/436', @@ -523,6 +565,15 @@ export const mockBlockingIssue1 = { __typename: 'Issue', }; +export const mockBlockingEpic1 = { + id: 'gid://gitlab/Epic/29', + iid: '4', + title: 'Sint nihil exercitationem aspernatur unde molestiae rem accusantium.', + reference: 'twitter&4', + webUrl: 'http://gdk.test:3000/groups/gitlab-org/test-subgroup/-/epics/4', + __typename: 'Epic', +}; + export const mockBlockingIssue2 = { id: 'gid://gitlab/Issue/524', iid: '5', @@ -564,6 +615,23 @@ export const mockBlockingIssuablesResponse1 = { }, }; +export const mockBlockingEpicIssuablesResponse1 = { + data: { + group: { + __typename: 'Group', + id: 'gid://gitlab/Group/33', + issuable: { + __typename: 'Epic', + id: 'gid://gitlab/Epic/26', + blockingIssuables: { + __typename: 'EpicConnection', + nodes: [mockBlockingEpic1], + }, + }, + }, + }, +}; + export const mockBlockingIssuablesResponse2 = { data: { issuable: { @@ -601,6 +669,12 @@ export const mockBlockedIssue2 = { webUrl: 'http://gdk.test:3000/gitlab-org/my-project-1/-/issues/0', }; +export const mockBlockedEpic1 = { + id: '26', + blockedByCount: 1, + webUrl: 'http://gdk.test:3000/gitlab-org/test-subgroup/-/epics/1', +}; + export const mockMoveIssueParams = { itemId: 1, fromListId: 'gid://gitlab/List/1', |