diff options
Diffstat (limited to 'spec/frontend/diffs/components')
3 files changed, 45 insertions, 9 deletions
diff --git a/spec/frontend/diffs/components/diff_code_quality_spec.js b/spec/frontend/diffs/components/diff_code_quality_spec.js index b5dce4fc924..7bd9afab648 100644 --- a/spec/frontend/diffs/components/diff_code_quality_spec.js +++ b/spec/frontend/diffs/components/diff_code_quality_spec.js @@ -1,12 +1,14 @@ import { GlIcon } from '@gitlab/ui'; import { mountExtended, shallowMountExtended } from 'helpers/vue_test_utils_helper'; import DiffCodeQuality from '~/diffs/components/diff_code_quality.vue'; -import { SEVERITY_CLASSES, SEVERITY_ICONS } from '~/reports/codequality_report/constants'; +import { SEVERITY_CLASSES, SEVERITY_ICONS } from '~/ci/reports/codequality_report/constants'; +import { NEW_CODE_QUALITY_FINDINGS } from '~/diffs/i18n'; import { multipleFindingsArr } from '../mock_data/diff_code_quality'; let wrapper; const findIcon = () => wrapper.findComponent(GlIcon); +const findHeading = () => wrapper.findByTestId(`diff-codequality-findings-heading`); describe('DiffCodeQuality', () => { afterEach(() => { @@ -30,14 +32,17 @@ describe('DiffCodeQuality', () => { expect(wrapper.emitted('hideCodeQualityFindings').length).toBe(1); }); - it('renders correct amount of list items for codequality array and their description', async () => { + it('renders heading and correct amount of list items for codequality array and their description', async () => { wrapper = createWrapper(multipleFindingsArr); - const listItems = wrapper.findAll('li'); + expect(findHeading().text()).toEqual(NEW_CODE_QUALITY_FINDINGS); - expect(wrapper.findAll('li').length).toBe(3); + const listItems = wrapper.findAll('li'); + expect(wrapper.findAll('li').length).toBe(5); listItems.wrappers.map((e, i) => { - return expect(e.text()).toEqual(multipleFindingsArr[i].description); + return expect(e.text()).toContain( + `${multipleFindingsArr[i].severity} - ${multipleFindingsArr[i].description}`, + ); }); }); diff --git a/spec/frontend/diffs/components/diff_discussion_reply_spec.js b/spec/frontend/diffs/components/diff_discussion_reply_spec.js index 5ccd2002462..bf4a1a1c1f7 100644 --- a/spec/frontend/diffs/components/diff_discussion_reply_spec.js +++ b/spec/frontend/diffs/components/diff_discussion_reply_spec.js @@ -1,10 +1,12 @@ import { shallowMount } from '@vue/test-utils'; +import { GlButton } from '@gitlab/ui'; import Vue from 'vue'; import Vuex from 'vuex'; import DiffDiscussionReply from '~/diffs/components/diff_discussion_reply.vue'; -import ReplyPlaceholder from '~/notes/components/discussion_reply_placeholder.vue'; import NoteSignedOutWidget from '~/notes/components/note_signed_out_widget.vue'; +import { START_THREAD } from '~/diffs/i18n'; + Vue.use(Vuex); describe('DiffDiscussionReply', () => { @@ -58,14 +60,42 @@ describe('DiffDiscussionReply', () => { expect(wrapper.find('#test-form').exists()).toBe(true); }); - it('should render a reply placeholder if there is no form', () => { + it('should render a reply placeholder button if there is no form', () => { createComponent({ renderReplyPlaceholder: true, hasForm: false, }); - expect(wrapper.findComponent(ReplyPlaceholder).exists()).toBe(true); + expect(wrapper.findComponent(GlButton).text()).toBe(START_THREAD); }); + + it.each` + userCanReply | hasForm | renderReplyPlaceholder | showButton + ${false} | ${false} | ${false} | ${false} + ${true} | ${false} | ${false} | ${false} + ${true} | ${true} | ${false} | ${false} + ${true} | ${true} | ${true} | ${false} + ${true} | ${false} | ${true} | ${true} + ${false} | ${false} | ${true} | ${false} + `( + 'reply button existence is `$showButton` when userCanReply is `$userCanReply`, hasForm is `$hasForm` and renderReplyPlaceholder is `$renderReplyPlaceholder`', + ({ userCanReply, hasForm, renderReplyPlaceholder, showButton }) => { + getters = { + userCanReply: () => userCanReply, + }; + + store = new Vuex.Store({ + getters, + }); + + createComponent({ + renderReplyPlaceholder, + hasForm, + }); + + expect(wrapper.findComponent(GlButton).exists()).toBe(showButton); + }, + ); }); it('renders a signed out widget when user is not logged in', () => { diff --git a/spec/frontend/diffs/components/diff_discussions_spec.js b/spec/frontend/diffs/components/diff_discussions_spec.js index e9a0e0745fd..5092ae6ab6e 100644 --- a/spec/frontend/diffs/components/diff_discussions_spec.js +++ b/spec/frontend/diffs/components/diff_discussions_spec.js @@ -5,9 +5,10 @@ import { createStore } from '~/mr_notes/stores'; import DiscussionNotes from '~/notes/components/discussion_notes.vue'; import NoteableDiscussion from '~/notes/components/noteable_discussion.vue'; import TimelineEntryItem from '~/vue_shared/components/notes/timeline_entry_item.vue'; -import '~/behaviors/markdown/render_gfm'; import discussionsMockData from '../mock_data/diff_discussions'; +jest.mock('~/behaviors/markdown/render_gfm'); + describe('DiffDiscussions', () => { let store; let wrapper; |