diff options
author | Robert Speicher <rspeicher@gmail.com> | 2021-01-20 13:34:23 -0600 |
---|---|---|
committer | Robert Speicher <rspeicher@gmail.com> | 2021-01-20 13:34:23 -0600 |
commit | 6438df3a1e0fb944485cebf07976160184697d72 (patch) | |
tree | 00b09bfd170e77ae9391b1a2f5a93ef6839f2597 /spec/frontend/snippets | |
parent | 42bcd54d971da7ef2854b896a7b34f4ef8601067 (diff) | |
download | gitlab-ce-6438df3a1e0fb944485cebf07976160184697d72.tar.gz |
Add latest changes from gitlab-org/gitlab@13-8-stable-eev13.8.0-rc42
Diffstat (limited to 'spec/frontend/snippets')
6 files changed, 50 insertions, 31 deletions
diff --git a/spec/frontend/snippets/components/edit_spec.js b/spec/frontend/snippets/components/edit_spec.js index 3521733ee5e..b818f98efb1 100644 --- a/spec/frontend/snippets/components/edit_spec.js +++ b/spec/frontend/snippets/components/edit_spec.js @@ -2,7 +2,7 @@ import VueApollo, { ApolloMutation } from 'vue-apollo'; import { GlLoadingIcon } from '@gitlab/ui'; import { shallowMount, createLocalVue } from '@vue/test-utils'; import waitForPromises from 'helpers/wait_for_promises'; -import createMockApollo from 'jest/helpers/mock_apollo_helper'; +import createMockApollo from 'helpers/mock_apollo_helper'; import GetSnippetQuery from 'shared_queries/snippet/snippet.query.graphql'; import { deprecatedCreateFlash as Flash } from '~/flash'; import * as urlUtils from '~/lib/utils/url_utility'; @@ -149,9 +149,11 @@ describe('Snippet Edit app', () => { const hasDisabledSubmit = () => Boolean(findSubmitButton().attributes('disabled')); const clickSubmitBtn = () => wrapper.find('[data-testid="snippet-edit-form"]').trigger('submit'); - const triggerBlobActions = actions => findBlobActions().vm.$emit('actions', actions); - const setUploadFilesHtml = paths => { - wrapper.vm.$el.innerHTML = paths.map(path => `<input name="files[]" value="${path}">`).join(''); + const triggerBlobActions = (actions) => findBlobActions().vm.$emit('actions', actions); + const setUploadFilesHtml = (paths) => { + wrapper.vm.$el.innerHTML = paths + .map((path) => `<input name="files[]" value="${path}">`) + .join(''); }; const getApiData = ({ id, @@ -189,7 +191,7 @@ describe('Snippet Edit app', () => { it.each([[{}], [{ snippetGid: '' }]])( 'should render all required components with %s', - props => { + (props) => { createComponent(props); expect(wrapper.find(TitleField).exists()).toBe(true); @@ -257,7 +259,7 @@ describe('Snippet Edit app', () => { describe('default visibility', () => { it.each([SNIPPET_VISIBILITY_PRIVATE, SNIPPET_VISIBILITY_INTERNAL, SNIPPET_VISIBILITY_PUBLIC])( 'marks %s visibility by default', - async visibility => { + async (visibility) => { createComponent({ props: { snippetGid: '' }, selectedLevel: visibility, diff --git a/spec/frontend/snippets/components/embed_dropdown_spec.js b/spec/frontend/snippets/components/embed_dropdown_spec.js index 8eb44965692..f1eb7d43409 100644 --- a/spec/frontend/snippets/components/embed_dropdown_spec.js +++ b/spec/frontend/snippets/components/embed_dropdown_spec.js @@ -26,7 +26,7 @@ describe('snippets/components/embed_dropdown', () => { const sections = []; let current = {}; - wrapper.findAll('[data-testid="header"],[data-testid="input"]').wrappers.forEach(x => { + wrapper.findAll('[data-testid="header"],[data-testid="input"]').wrappers.forEach((x) => { const type = x.attributes('data-testid'); if (type === 'header') { diff --git a/spec/frontend/snippets/components/snippet_blob_actions_edit_spec.js b/spec/frontend/snippets/components/snippet_blob_actions_edit_spec.js index 055168a1711..08056e788de 100644 --- a/spec/frontend/snippets/components/snippet_blob_actions_edit_spec.js +++ b/spec/frontend/snippets/components/snippet_blob_actions_edit_spec.js @@ -14,7 +14,7 @@ const TEST_BLOBS = [ createBlobFromTestEntry(testEntries.deleted), ]; -const TEST_BLOBS_UNLOADED = TEST_BLOBS.map(blob => ({ ...blob, content: '', isLoaded: false })); +const TEST_BLOBS_UNLOADED = TEST_BLOBS.map((blob) => ({ ...blob, content: '', isLoaded: false })); describe('snippets/components/snippet_blob_actions_edit', () => { let wrapper; @@ -31,7 +31,7 @@ describe('snippets/components/snippet_blob_actions_edit', () => { const findLabel = () => wrapper.find('label'); const findBlobEdits = () => wrapper.findAll(SnippetBlobEdit); const findBlobsData = () => - findBlobEdits().wrappers.map(x => ({ + findBlobEdits().wrappers.map((x) => ({ blob: x.props('blob'), classes: x.classes(), })); @@ -42,7 +42,7 @@ describe('snippets/components/snippet_blob_actions_edit', () => { return events[events.length - 1]?.[0]; }; - const buildBlobsDataExpectation = blobs => + const buildBlobsDataExpectation = (blobs) => blobs.map((blob, index) => ({ blob: { ...blob, @@ -50,14 +50,8 @@ describe('snippets/components/snippet_blob_actions_edit', () => { }, classes: index > 0 ? ['gl-mt-3'] : [], })); - const triggerBlobDelete = idx => - findBlobEdits() - .at(idx) - .vm.$emit('delete'); - const triggerBlobUpdate = (idx, props) => - findBlobEdits() - .at(idx) - .vm.$emit('blob-updated', props); + const triggerBlobDelete = (idx) => findBlobEdits().at(idx).vm.$emit('delete'); + const triggerBlobUpdate = (idx, props) => findBlobEdits().at(idx).vm.$emit('blob-updated', props); afterEach(() => { wrapper.destroy(); @@ -213,11 +207,7 @@ describe('snippets/components/snippet_blob_actions_edit', () => { it('disables delete button', () => { expect(findBlobEdits()).toHaveLength(1); - expect( - findBlobEdits() - .at(0) - .props(), - ).toMatchObject({ + expect(findBlobEdits().at(0).props()).toMatchObject({ showDelete: true, canDelete: false, }); diff --git a/spec/frontend/snippets/components/snippet_header_spec.js b/spec/frontend/snippets/components/snippet_header_spec.js index 5836de1fdbe..93a66db32c6 100644 --- a/spec/frontend/snippets/components/snippet_header_spec.js +++ b/spec/frontend/snippets/components/snippet_header_spec.js @@ -17,6 +17,8 @@ describe('Snippet header component', () => { let err; const originalRelativeUrlRoot = gon.relative_url_root; + const GlEmoji = { template: '<img/>' }; + function createComponent({ loading = false, permissions = {}, @@ -47,10 +49,15 @@ describe('Snippet header component', () => { }, stubs: { ApolloMutation, + GlEmoji, }, }); } + const findAuthorEmoji = () => wrapper.find(GlEmoji); + const findAuthoredMessage = () => wrapper.find('[data-testid="authored-message"]').text(); + const buttonCount = () => wrapper.findAll(GlButton).length; + beforeEach(() => { gon.relative_url_root = '/foo/'; snippet = { @@ -66,6 +73,7 @@ describe('Snippet header component', () => { project: null, author: { name: 'Thor Odinson', + status: null, }, blobs: [Blob], createdAt: new Date(differenceInMilliseconds(32 * 24 * 3600 * 1000)).toISOString(), @@ -100,17 +108,36 @@ describe('Snippet header component', () => { it('renders a message showing snippet creation date and author', () => { createComponent(); - const text = wrapper.find('[data-testid="authored-message"]').text(); + const text = findAuthoredMessage(); expect(text).toContain('Authored 1 month ago by'); expect(text).toContain('Thor Odinson'); }); + describe('author status', () => { + it('is rendered when it is set', () => { + snippet.author.status = { + message: 'At work', + emoji: 'hammer', + }; + createComponent(); + + expect(findAuthorEmoji().attributes('title')).toBe(snippet.author.status.message); + expect(findAuthorEmoji().attributes('data-name')).toBe(snippet.author.status.emoji); + }); + + it('is not rendered when the user has no status', () => { + createComponent(); + + expect(findAuthorEmoji().exists()).toBe(false); + }); + }); + 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(); + const text = findAuthoredMessage(); expect(text).toBe('Authored 1 month ago'); }); @@ -121,7 +148,7 @@ describe('Snippet header component', () => { updateSnippet: false, }, }); - expect(wrapper.findAll(GlButton).length).toEqual(0); + expect(buttonCount()).toEqual(0); createComponent({ permissions: { @@ -129,7 +156,7 @@ describe('Snippet header component', () => { updateSnippet: false, }, }); - expect(wrapper.findAll(GlButton).length).toEqual(1); + expect(buttonCount()).toEqual(1); createComponent({ permissions: { @@ -137,7 +164,7 @@ describe('Snippet header component', () => { updateSnippet: true, }, }); - expect(wrapper.findAll(GlButton).length).toEqual(2); + expect(buttonCount()).toEqual(2); createComponent({ permissions: { @@ -149,7 +176,7 @@ describe('Snippet header component', () => { canCreateSnippet: true, }); return wrapper.vm.$nextTick().then(() => { - expect(wrapper.findAll(GlButton).length).toEqual(3); + expect(buttonCount()).toEqual(3); }); }); diff --git a/spec/frontend/snippets/components/snippet_visibility_edit_spec.js b/spec/frontend/snippets/components/snippet_visibility_edit_spec.js index 3151090f388..62d1ac9b476 100644 --- a/spec/frontend/snippets/components/snippet_visibility_edit_spec.js +++ b/spec/frontend/snippets/components/snippet_visibility_edit_spec.js @@ -40,7 +40,7 @@ describe('Snippet Visibility Edit component', () => { const findLink = () => wrapper.find('label').find(GlLink); const findRadios = () => wrapper.find(GlFormRadioGroup).findAll(GlFormRadio); const findRadiosData = () => - findRadios().wrappers.map(x => { + findRadios().wrappers.map((x) => { return { value: x.find('input').attributes('value'), icon: x.find(GlIcon).props('name'), diff --git a/spec/frontend/snippets/utils/blob_spec.js b/spec/frontend/snippets/utils/blob_spec.js index c20cf2e6102..4c6cee32614 100644 --- a/spec/frontend/snippets/utils/blob_spec.js +++ b/spec/frontend/snippets/utils/blob_spec.js @@ -2,7 +2,7 @@ import { cloneDeep } from 'lodash'; import { decorateBlob, createBlob, diffAll } from '~/snippets/utils/blob'; import { testEntries, createBlobsFromTestEntries } from '../test_utils'; -jest.mock('lodash/uniqueId', () => arg => `${arg}fakeUniqueId`); +jest.mock('lodash/uniqueId', () => (arg) => `${arg}fakeUniqueId`); const TEST_RAW_BLOB = { rawPath: '/test/blob/7/raw', |