diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-08-05 21:09:40 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-08-05 21:09:40 +0000 |
commit | ad9eb72915f1be40da3ebe287274fe2bae62e46b (patch) | |
tree | e5a029b2edbce0e84a54b6ff4d18e8240680c4c4 /spec/frontend/snippets/components/snippet_header_spec.js | |
parent | f8d20b20be74c283fe8bfe81abfd2d132a500968 (diff) | |
download | gitlab-ce-ad9eb72915f1be40da3ebe287274fe2bae62e46b.tar.gz |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/frontend/snippets/components/snippet_header_spec.js')
-rw-r--r-- | spec/frontend/snippets/components/snippet_header_spec.js | 106 |
1 files changed, 66 insertions, 40 deletions
diff --git a/spec/frontend/snippets/components/snippet_header_spec.js b/spec/frontend/snippets/components/snippet_header_spec.js index 0b991e7a5d4..af6631de9c9 100644 --- a/spec/frontend/snippets/components/snippet_header_spec.js +++ b/spec/frontend/snippets/components/snippet_header_spec.js @@ -2,45 +2,18 @@ import SnippetHeader from '~/snippets/components/snippet_header.vue'; import DeleteSnippetMutation from '~/snippets/mutations/deleteSnippet.mutation.graphql'; import { ApolloMutation } from 'vue-apollo'; import { GlButton, GlModal } from '@gitlab/ui'; -import { shallowMount } from '@vue/test-utils'; +import { mount } from '@vue/test-utils'; import { Blob, BinaryBlob } from 'jest/blob/components/mock_data'; +import waitForPromises from 'helpers/wait_for_promises'; describe('Snippet header component', () => { let wrapper; - const snippet = { - id: 'gid://gitlab/PersonalSnippet/50', - title: 'The property of Thor', - visibilityLevel: 'private', - webUrl: 'http://personal.dev.null/42', - userPermissions: { - adminSnippet: true, - updateSnippet: true, - reportSnippet: false, - }, - project: null, - author: { - name: 'Thor Odinson', - }, - blobs: [Blob], - }; - const mutationVariables = { - mutation: DeleteSnippetMutation, - variables: { - id: snippet.id, - }, - }; - const errorMsg = 'Foo bar'; - const err = { message: errorMsg }; - - const resolveMutate = jest.fn(() => - Promise.resolve({ data: { destroySnippet: { errors: [] } } }), - ); - const rejectMutation = jest.fn(() => Promise.reject(err)); - - const mutationTypes = { - RESOLVE: resolveMutate, - REJECT: rejectMutation, - }; + let snippet; + let mutationTypes; + let mutationVariables; + + let errorMsg; + let err; function createComponent({ loading = false, @@ -63,7 +36,7 @@ describe('Snippet header component', () => { mutate: mutationRes, }; - wrapper = shallowMount(SnippetHeader, { + wrapper = mount(SnippetHeader, { mocks: { $apollo }, propsData: { snippet: { @@ -76,6 +49,41 @@ describe('Snippet header component', () => { }); } + beforeEach(() => { + snippet = { + id: 'gid://gitlab/PersonalSnippet/50', + title: 'The property of Thor', + visibilityLevel: 'private', + webUrl: 'http://personal.dev.null/42', + userPermissions: { + adminSnippet: true, + updateSnippet: true, + reportSnippet: false, + }, + project: null, + author: { + name: 'Thor Odinson', + }, + blobs: [Blob], + createdAt: new Date(Date.now() - 32 * 24 * 3600 * 1000).toISOString(), + }; + + mutationVariables = { + mutation: DeleteSnippetMutation, + variables: { + id: snippet.id, + }, + }; + + errorMsg = 'Foo bar'; + err = { message: errorMsg }; + + mutationTypes = { + RESOLVE: jest.fn(() => Promise.resolve({ data: { destroySnippet: { errors: [] } } })), + REJECT: jest.fn(() => Promise.reject(err)), + }; + }); + afterEach(() => { wrapper.destroy(); }); @@ -85,6 +93,23 @@ describe('Snippet header component', () => { expect(wrapper.find('.detail-page-header').exists()).toBe(true); }); + it('renders a message showing snippet creation date and author', () => { + createComponent(); + + const text = wrapper.find('[data-testid="authored-message"]').text(); + expect(text).toContain('Authored 1 month ago by'); + expect(text).toContain('Thor Odinson'); + }); + + it('renders a message showing only snippet creation date if author is null', () => { + snippet.author = null; + + createComponent(); + + const text = wrapper.find('[data-testid="authored-message"]').text(); + expect(text).toBe('Authored 1 month ago'); + }); + it('renders action buttons based on permissions', () => { createComponent({ permissions: { @@ -163,14 +188,15 @@ describe('Snippet header component', () => { expect(mutationTypes.RESOLVE).toHaveBeenCalledWith(mutationVariables); }); - it('sets error message if mutation fails', () => { + it('sets error message if mutation fails', async () => { createComponent({ mutationRes: mutationTypes.REJECT }); expect(Boolean(wrapper.vm.errorMessage)).toBe(false); wrapper.vm.deleteSnippet(); - return wrapper.vm.$nextTick().then(() => { - expect(wrapper.vm.errorMessage).toEqual(errorMsg); - }); + + await waitForPromises(); + + expect(wrapper.vm.errorMessage).toEqual(errorMsg); }); describe('in case of successful mutation, closes modal and redirects to correct listing', () => { |