diff options
Diffstat (limited to 'spec/frontend/releases')
17 files changed, 96 insertions, 44 deletions
diff --git a/spec/frontend/releases/components/app_edit_new_spec.js b/spec/frontend/releases/components/app_edit_new_spec.js index cb044b9e891..649d8eef6ec 100644 --- a/spec/frontend/releases/components/app_edit_new_spec.js +++ b/spec/frontend/releases/components/app_edit_new_spec.js @@ -220,7 +220,7 @@ describe('Release edit/new component', () => { }); it('renders a checkbox to include release notes', () => { - expect(wrapper.find(GlFormCheckbox).exists()).toBe(true); + expect(wrapper.findComponent(GlFormCheckbox).exists()).toBe(true); }); }); @@ -238,7 +238,7 @@ describe('Release edit/new component', () => { beforeEach(factory); it('renders the asset links portion of the form', () => { - expect(wrapper.find(AssetLinksForm).exists()).toBe(true); + expect(wrapper.findComponent(AssetLinksForm).exists()).toBe(true); }); }); diff --git a/spec/frontend/releases/components/app_show_spec.js b/spec/frontend/releases/components/app_show_spec.js index c2ea6900d6e..9ca25b3b69a 100644 --- a/spec/frontend/releases/components/app_show_spec.js +++ b/spec/frontend/releases/components/app_show_spec.js @@ -36,8 +36,8 @@ describe('Release show component', () => { wrapper = null; }); - const findLoadingSkeleton = () => wrapper.find(ReleaseSkeletonLoader); - const findReleaseBlock = () => wrapper.find(ReleaseBlock); + const findLoadingSkeleton = () => wrapper.findComponent(ReleaseSkeletonLoader); + const findReleaseBlock = () => wrapper.findComponent(ReleaseBlock); const expectLoadingIndicator = () => { it('renders a loading indicator', () => { diff --git a/spec/frontend/releases/components/asset_links_form_spec.js b/spec/frontend/releases/components/asset_links_form_spec.js index 17f079ba5a6..1ff5766b074 100644 --- a/spec/frontend/releases/components/asset_links_form_spec.js +++ b/spec/frontend/releases/components/asset_links_form_spec.js @@ -73,7 +73,7 @@ describe('Release edit component', () => { it('calls the "addEmptyAssetLink" store method when the "Add another link" button is clicked', () => { expect(actions.addEmptyAssetLink).not.toHaveBeenCalled(); - wrapper.find({ ref: 'addAnotherLinkButton' }).vm.$emit('click'); + wrapper.findComponent({ ref: 'addAnotherLinkButton' }).vm.$emit('click'); expect(actions.addEmptyAssetLink).toHaveBeenCalledTimes(1); }); @@ -92,7 +92,7 @@ describe('Release edit component', () => { let newUrl; beforeEach(() => { - input = wrapper.find({ ref: 'urlInput' }).element; + input = wrapper.findComponent({ ref: 'urlInput' }).element; linkIdToUpdate = release.assets.links[0].id; newUrl = 'updated url'; }); @@ -118,7 +118,7 @@ describe('Release edit component', () => { it('calls the "updateAssetLinkUrl" store method when text is entered into the "URL" input field', () => { expectStoreMethodNotToBeCalled(); - wrapper.find({ ref: 'urlInput' }).vm.$emit('change', newUrl); + wrapper.findComponent({ ref: 'urlInput' }).vm.$emit('change', newUrl); expectStoreMethodToBeCalled(); }); @@ -150,7 +150,7 @@ describe('Release edit component', () => { let newName; beforeEach(() => { - input = wrapper.find({ ref: 'nameInput' }).element; + input = wrapper.findComponent({ ref: 'nameInput' }).element; linkIdToUpdate = release.assets.links[0].id; newName = 'updated name'; }); @@ -176,7 +176,7 @@ describe('Release edit component', () => { it('calls the "updateAssetLinkName" store method when text is entered into the "Link title" input field', () => { expectStoreMethodNotToBeCalled(); - wrapper.find({ ref: 'nameInput' }).vm.$emit('change', newName); + wrapper.findComponent({ ref: 'nameInput' }).vm.$emit('change', newName); expectStoreMethodToBeCalled(); }); @@ -208,7 +208,7 @@ describe('Release edit component', () => { expect(actions.updateAssetLinkType).not.toHaveBeenCalled(); - wrapper.find({ ref: 'typeSelect' }).vm.$emit('change', newType); + wrapper.findComponent({ ref: 'typeSelect' }).vm.$emit('change', newType); expect(actions.updateAssetLinkType).toHaveBeenCalledTimes(1); expect(actions.updateAssetLinkType).toHaveBeenCalledWith(expect.anything(), { @@ -225,7 +225,7 @@ describe('Release edit component', () => { }); it('selects the default asset type', () => { - const selected = wrapper.find({ ref: 'typeSelect' }).element.value; + const selected = wrapper.findComponent({ ref: 'typeSelect' }).element.value; expect(selected).toBe(DEFAULT_ASSET_LINK_TYPE); }); diff --git a/spec/frontend/releases/components/evidence_block_spec.js b/spec/frontend/releases/components/evidence_block_spec.js index f0d02884305..2db1e9e38a2 100644 --- a/spec/frontend/releases/components/evidence_block_spec.js +++ b/spec/frontend/releases/components/evidence_block_spec.js @@ -32,19 +32,19 @@ describe('Evidence Block', () => { }); it('renders the evidence icon', () => { - expect(wrapper.find(GlIcon).props('name')).toBe('review-list'); + expect(wrapper.findComponent(GlIcon).props('name')).toBe('review-list'); }); it('renders the title for the dowload link', () => { - expect(wrapper.find(GlLink).text()).toBe(`v1.1-evidences-1.json`); + expect(wrapper.findComponent(GlLink).text()).toBe(`v1.1-evidences-1.json`); }); it('renders the correct hover text for the download', () => { - expect(wrapper.find(GlLink).attributes('title')).toBe('Download evidence JSON'); + expect(wrapper.findComponent(GlLink).attributes('title')).toBe('Download evidence JSON'); }); it('renders the correct file link for download', () => { - expect(wrapper.find(GlLink).attributes().download).toBe(`v1.1-evidences-1.json`); + expect(wrapper.findComponent(GlLink).attributes().download).toBe(`v1.1-evidences-1.json`); }); describe('sha text', () => { @@ -62,15 +62,15 @@ describe('Evidence Block', () => { describe('copy to clipboard button', () => { it('renders button', () => { - expect(wrapper.find(ClipboardButton).exists()).toBe(true); + expect(wrapper.findComponent(ClipboardButton).exists()).toBe(true); }); it('renders the correct hover text', () => { - expect(wrapper.find(ClipboardButton).attributes('title')).toBe('Copy evidence SHA'); + expect(wrapper.findComponent(ClipboardButton).attributes('title')).toBe('Copy evidence SHA'); }); it('copies the sha', () => { - expect(wrapper.find(ClipboardButton).attributes('data-clipboard-text')).toBe( + expect(wrapper.findComponent(ClipboardButton).attributes('data-clipboard-text')).toBe( release.evidences[0].sha, ); }); diff --git a/spec/frontend/releases/components/issuable_stats_spec.js b/spec/frontend/releases/components/issuable_stats_spec.js index 8fc0779da14..3ac75e138ee 100644 --- a/spec/frontend/releases/components/issuable_stats_spec.js +++ b/spec/frontend/releases/components/issuable_stats_spec.js @@ -16,9 +16,11 @@ describe('~/releases/components/issuable_stats.vue', () => { }); }; - const findOpenStatLink = () => wrapper.find('[data-testid="open-stat"]').find(GlLink); - const findMergedStatLink = () => wrapper.find('[data-testid="merged-stat"]').find(GlLink); - const findClosedStatLink = () => wrapper.find('[data-testid="closed-stat"]').find(GlLink); + const findOpenStatLink = () => wrapper.find('[data-testid="open-stat"]').findComponent(GlLink); + const findMergedStatLink = () => + wrapper.find('[data-testid="merged-stat"]').findComponent(GlLink); + const findClosedStatLink = () => + wrapper.find('[data-testid="closed-stat"]').findComponent(GlLink); beforeEach(() => { defaultProps = { diff --git a/spec/frontend/releases/components/release_block_assets_spec.js b/spec/frontend/releases/components/release_block_assets_spec.js index c63689e11ac..4f94e4dfd55 100644 --- a/spec/frontend/releases/components/release_block_assets_spec.js +++ b/spec/frontend/releases/components/release_block_assets_spec.js @@ -44,7 +44,7 @@ describe('Release block assets', () => { }); it('renders the accordion as expanded by default', () => { - const accordion = wrapper.find(GlCollapse); + const accordion = wrapper.findComponent(GlCollapse); expect(accordion.exists()).toBe(true); expect(accordion.isVisible()).toBe(true); diff --git a/spec/frontend/releases/components/release_block_footer_spec.js b/spec/frontend/releases/components/release_block_footer_spec.js index 848e802df4b..8f4efad197f 100644 --- a/spec/frontend/releases/components/release_block_footer_spec.js +++ b/spec/frontend/releases/components/release_block_footer_spec.js @@ -38,16 +38,16 @@ describe('Release block footer', () => { }); const commitInfoSection = () => wrapper.find('.js-commit-info'); - const commitInfoSectionLink = () => commitInfoSection().find(GlLink); + const commitInfoSectionLink = () => commitInfoSection().findComponent(GlLink); const tagInfoSection = () => wrapper.find('.js-tag-info'); - const tagInfoSectionLink = () => tagInfoSection().find(GlLink); + const tagInfoSectionLink = () => tagInfoSection().findComponent(GlLink); const authorDateInfoSection = () => wrapper.find('.js-author-date-info'); describe('with all props provided', () => { beforeEach(() => factory()); it('renders the commit icon', () => { - const commitIcon = commitInfoSection().find(GlIcon); + const commitIcon = commitInfoSection().findComponent(GlIcon); expect(commitIcon.exists()).toBe(true); expect(commitIcon.props('name')).toBe('commit'); @@ -62,14 +62,14 @@ describe('Release block footer', () => { }); it('renders the tag icon', () => { - const commitIcon = tagInfoSection().find(GlIcon); + const commitIcon = tagInfoSection().findComponent(GlIcon); expect(commitIcon.exists()).toBe(true); expect(commitIcon.props('name')).toBe('tag'); }); it('renders the tag name with a link', () => { - const commitLink = tagInfoSection().find(GlLink); + const commitLink = tagInfoSection().findComponent(GlLink); expect(commitLink.exists()).toBe(true); expect(commitLink.text()).toBe(release.tagName); @@ -120,7 +120,7 @@ describe('Release block footer', () => { }); it("renders a link to the author's profile", () => { - const authorLink = authorDateInfoSection().find(GlLink); + const authorLink = authorDateInfoSection().findComponent(GlLink); expect(authorLink.exists()).toBe(true); expect(authorLink.attributes('href')).toBe(release.author.webUrl); diff --git a/spec/frontend/releases/components/release_block_header_spec.js b/spec/frontend/releases/components/release_block_header_spec.js index c9921185bad..fc421776d60 100644 --- a/spec/frontend/releases/components/release_block_header_spec.js +++ b/spec/frontend/releases/components/release_block_header_spec.js @@ -30,7 +30,7 @@ describe('Release block header', () => { }); const findHeader = () => wrapper.find('h2'); - const findHeaderLink = () => findHeader().find(GlLink); + const findHeaderLink = () => findHeader().findComponent(GlLink); const findEditButton = () => wrapper.find('.js-edit-button'); const findBadge = () => wrapper.findComponent(GlBadge); diff --git a/spec/frontend/releases/components/release_block_milestone_info_spec.js b/spec/frontend/releases/components/release_block_milestone_info_spec.js index 84a0080965b..541d487091c 100644 --- a/spec/frontend/releases/components/release_block_milestone_info_spec.js +++ b/spec/frontend/releases/components/release_block_milestone_info_spec.js @@ -43,7 +43,7 @@ describe('Release block milestone info', () => { }); it('renders a progress bar that displays the correct percentage', () => { - const progressBar = milestoneProgressBarContainer().find(GlProgressBar); + const progressBar = milestoneProgressBarContainer().findComponent(GlProgressBar); expect(progressBar.exists()).toBe(true); expect(progressBar.attributes()).toEqual( @@ -58,7 +58,7 @@ describe('Release block milestone info', () => { expect(milestoneListContainer().text()).toMatchInterpolatedText('Milestones 12.3 • 12.4'); milestones.forEach((m, i) => { - const milestoneLink = milestoneListContainer().findAll(GlLink).at(i); + const milestoneLink = milestoneListContainer().findAllComponents(GlLink).at(i); expect(milestoneLink.text()).toBe(m.title); expect(milestoneLink.attributes('href')).toBe(m.webUrl); @@ -72,7 +72,7 @@ describe('Release block milestone info', () => { expect(issuesContainerText).toContain(`Issues ${totalIssueCount}`); - const badge = issuesContainer().find(GlBadge); + const badge = issuesContainer().findComponent(GlBadge); expect(badge.text()).toBe(totalIssueCount.toString()); expect(issuesContainerText).toContain('Open: 5 • Closed: 4'); @@ -107,7 +107,7 @@ describe('Release block milestone info', () => { }); const clickShowMoreFewerButton = async () => { - milestoneListContainer().find(GlButton).trigger('click'); + milestoneListContainer().findComponent(GlButton).trigger('click'); await nextTick(); }; diff --git a/spec/frontend/releases/components/release_block_spec.js b/spec/frontend/releases/components/release_block_spec.js index 17e2af687a6..096c3db8902 100644 --- a/spec/frontend/releases/components/release_block_spec.js +++ b/spec/frontend/releases/components/release_block_spec.js @@ -74,7 +74,7 @@ describe('Release block', () => { }); it('renders the footer', () => { - expect(wrapper.find(ReleaseBlockFooter).exists()).toBe(true); + expect(wrapper.findComponent(ReleaseBlockFooter).exists()).toBe(true); }); }); @@ -133,7 +133,7 @@ describe('Release block', () => { describe('evidence block', () => { it('renders the evidence block when the evidence is available', () => { return factory(release).then(() => { - expect(wrapper.find(EvidenceBlock).exists()).toBe(true); + expect(wrapper.findComponent(EvidenceBlock).exists()).toBe(true); }); }); @@ -141,7 +141,7 @@ describe('Release block', () => { release.evidences = []; return factory(release).then(() => { - expect(wrapper.find(EvidenceBlock).exists()).toBe(false); + expect(wrapper.findComponent(EvidenceBlock).exists()).toBe(false); }); }); }); diff --git a/spec/frontend/releases/components/release_skeleton_loader_spec.js b/spec/frontend/releases/components/release_skeleton_loader_spec.js index 7f81081ff6c..76dfe0d9777 100644 --- a/spec/frontend/releases/components/release_skeleton_loader_spec.js +++ b/spec/frontend/releases/components/release_skeleton_loader_spec.js @@ -10,6 +10,6 @@ describe('release_skeleton_loader.vue', () => { }); it('renders a GlSkeletonLoader', () => { - expect(wrapper.find(GlSkeletonLoader).exists()).toBe(true); + expect(wrapper.findComponent(GlSkeletonLoader).exists()).toBe(true); }); }); diff --git a/spec/frontend/releases/components/tag_field_exsting_spec.js b/spec/frontend/releases/components/tag_field_exsting_spec.js index f45a28392b7..8105aa4f6f2 100644 --- a/spec/frontend/releases/components/tag_field_exsting_spec.js +++ b/spec/frontend/releases/components/tag_field_exsting_spec.js @@ -20,7 +20,7 @@ describe('releases/components/tag_field_existing', () => { }); }; - const findInput = () => wrapper.find(GlFormInput); + const findInput = () => wrapper.findComponent(GlFormInput); const findHelp = () => wrapper.find('[data-testid="tag-name-help"]'); beforeEach(() => { diff --git a/spec/frontend/releases/components/tag_field_new_spec.js b/spec/frontend/releases/components/tag_field_new_spec.js index 9f500c318ea..b8047cae8c2 100644 --- a/spec/frontend/releases/components/tag_field_new_spec.js +++ b/spec/frontend/releases/components/tag_field_new_spec.js @@ -79,12 +79,12 @@ describe('releases/components/tag_field_new', () => { }); const findTagNameFormGroup = () => wrapper.find('[data-testid="tag-name-field"]'); - const findTagNameDropdown = () => findTagNameFormGroup().find(RefSelectorStub); + const findTagNameDropdown = () => findTagNameFormGroup().findComponent(RefSelectorStub); const findCreateFromFormGroup = () => wrapper.find('[data-testid="create-from-field"]'); - const findCreateFromDropdown = () => findCreateFromFormGroup().find(RefSelectorStub); + const findCreateFromDropdown = () => findCreateFromFormGroup().findComponent(RefSelectorStub); - const findCreateNewTagOption = () => wrapper.find(GlDropdownItem); + const findCreateNewTagOption = () => wrapper.findComponent(GlDropdownItem); describe('"Tag name" field', () => { describe('rendering and behavior', () => { diff --git a/spec/frontend/releases/components/tag_field_spec.js b/spec/frontend/releases/components/tag_field_spec.js index e7b9aa4abbb..85a40f02c53 100644 --- a/spec/frontend/releases/components/tag_field_spec.js +++ b/spec/frontend/releases/components/tag_field_spec.js @@ -21,8 +21,8 @@ describe('releases/components/tag_field', () => { wrapper = shallowMount(TagField, { store }); }; - const findTagFieldNew = () => wrapper.find(TagFieldNew); - const findTagFieldExisting = () => wrapper.find(TagFieldExisting); + const findTagFieldNew = () => wrapper.findComponent(TagFieldNew); + const findTagFieldExisting = () => wrapper.findComponent(TagFieldExisting); afterEach(() => { wrapper.destroy(); diff --git a/spec/frontend/releases/stores/modules/detail/actions_spec.js b/spec/frontend/releases/stores/modules/detail/actions_spec.js index ce3b690213c..48fba3adb24 100644 --- a/spec/frontend/releases/stores/modules/detail/actions_spec.js +++ b/spec/frontend/releases/stores/modules/detail/actions_spec.js @@ -352,6 +352,32 @@ describe('Release edit/new actions', () => { }); }); + describe('when the GraphQL returns errors as data', () => { + beforeEach(() => { + gqClient.mutate.mockResolvedValue({ data: { releaseCreate: { errors: ['Yikes!'] } } }); + }); + + it(`commits ${types.RECEIVE_SAVE_RELEASE_ERROR} with an error object`, () => { + return testAction(actions.createRelease, undefined, state, [ + { + type: types.RECEIVE_SAVE_RELEASE_ERROR, + payload: expect.any(Error), + }, + ]); + }); + + it(`shows a flash message`, () => { + return actions + .createRelease({ commit: jest.fn(), dispatch: jest.fn(), state, getters: {} }) + .then(() => { + expect(createFlash).toHaveBeenCalledTimes(1); + expect(createFlash).toHaveBeenCalledWith({ + message: 'Yikes!', + }); + }); + }); + }); + describe('when the GraphQL network request fails', () => { beforeEach(() => { gqClient.mutate.mockRejectedValue(error); diff --git a/spec/frontend/releases/stores/modules/detail/getters_spec.js b/spec/frontend/releases/stores/modules/detail/getters_spec.js index 4ac6eaebaa2..2982dc5c46c 100644 --- a/spec/frontend/releases/stores/modules/detail/getters_spec.js +++ b/spec/frontend/releases/stores/modules/detail/getters_spec.js @@ -320,7 +320,9 @@ describe('Release edit/new getters', () => { it(description, () => { const expectedVariablesObject = { input: expect.objectContaining(expectedVariables) }; - const actualVariables = getters.releaseUpdateMutatationVariables(state); + const actualVariables = getters.releaseUpdateMutatationVariables(state, { + releasedAtChanged: Object.hasOwn(state.release, 'releasedAt'), + }); expect(actualVariables).toEqual(expectedVariablesObject); }); @@ -409,4 +411,19 @@ describe('Release edit/new getters', () => { }, ); }); + + describe('releasedAtChange', () => { + it('is false if the released at date has not changed', () => { + const date = new Date(); + expect( + getters.releasedAtChanged({ originalReleasedAt: date, release: { releasedAt: date } }), + ).toBe(false); + }); + + it('is true if the date changed', () => { + const originalReleasedAt = new Date(); + const releasedAt = new Date(2022, 5, 30); + expect(getters.releasedAtChanged({ originalReleasedAt, release: { releasedAt } })).toBe(true); + }); + }); }); diff --git a/spec/frontend/releases/stores/modules/detail/mutations_spec.js b/spec/frontend/releases/stores/modules/detail/mutations_spec.js index 60b57c7a7ff..8bbf550b77d 100644 --- a/spec/frontend/releases/stores/modules/detail/mutations_spec.js +++ b/spec/frontend/releases/stores/modules/detail/mutations_spec.js @@ -36,6 +36,12 @@ describe('Release edit/new mutations', () => { }, }); }); + + it('saves the original released at date as well', () => { + mutations[types.INITIALIZE_EMPTY_RELEASE](state); + + expect(state.originalReleasedAt).toEqual(new Date()); + }); }); describe(`${types.REQUEST_RELEASE}`, () => { @@ -57,6 +63,7 @@ describe('Release edit/new mutations', () => { expect(state.release).toEqual(release); expect(state.originalRelease).toEqual(release); + expect(state.originalReleasedAt).toEqual(release.releasedAt); }); }); |