Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'spec/frontend/work_items/components/notes')
-rw-r--r--spec/frontend/work_items/components/notes/work_item_note_actions_spec.js5
-rw-r--r--spec/frontend/work_items/components/notes/work_item_note_awards_list_spec.js82
-rw-r--r--spec/frontend/work_items/components/notes/work_item_notes_activity_header_spec.js18
3 files changed, 65 insertions, 40 deletions
diff --git a/spec/frontend/work_items/components/notes/work_item_note_actions_spec.js b/spec/frontend/work_items/components/notes/work_item_note_actions_spec.js
index 596283a9590..97aed1d548e 100644
--- a/spec/frontend/work_items/components/notes/work_item_note_actions_spec.js
+++ b/spec/frontend/work_items/components/notes/work_item_note_actions_spec.js
@@ -1,4 +1,4 @@
-import { GlButton, GlDisclosureDropdown } from '@gitlab/ui';
+import { GlDisclosureDropdown } from '@gitlab/ui';
import Vue from 'vue';
import VueApollo from 'vue-apollo';
import createMockApollo from 'helpers/mock_apollo_helper';
@@ -17,7 +17,7 @@ describe('Work Item Note Actions', () => {
const showSpy = jest.fn();
const findReplyButton = () => wrapper.findComponent(ReplyButton);
- const findEditButton = () => wrapper.findComponent(GlButton);
+ const findEditButton = () => wrapper.findByTestId('note-actions-edit');
const findEmojiButton = () => wrapper.findByTestId('note-emoji-button');
const findDropdown = () => wrapper.findComponent(GlDisclosureDropdown);
const findDeleteNoteButton = () => wrapper.findByTestId('delete-note-action');
@@ -64,6 +64,7 @@ describe('Work Item Note Actions', () => {
projectName,
},
provide: {
+ isGroup: false,
glFeatures: {
workItemsMvc2: true,
},
diff --git a/spec/frontend/work_items/components/notes/work_item_note_awards_list_spec.js b/spec/frontend/work_items/components/notes/work_item_note_awards_list_spec.js
index ce915635946..6ce4c09329f 100644
--- a/spec/frontend/work_items/components/notes/work_item_note_awards_list_spec.js
+++ b/spec/frontend/work_items/components/notes/work_item_note_awards_list_spec.js
@@ -9,6 +9,7 @@ import AwardsList from '~/vue_shared/components/awards_list.vue';
import WorkItemNoteAwardsList from '~/work_items/components/notes/work_item_note_awards_list.vue';
import addAwardEmojiMutation from '~/work_items/graphql/notes/work_item_note_add_award_emoji.mutation.graphql';
import removeAwardEmojiMutation from '~/work_items/graphql/notes/work_item_note_remove_award_emoji.mutation.graphql';
+import groupWorkItemNotesByIidQuery from '~/work_items/graphql/notes/group_work_item_notes_by_iid.query.graphql';
import workItemNotesByIidQuery from '~/work_items/graphql/notes/work_item_notes_by_iid.query.graphql';
import {
mockWorkItemNotesResponseWithComments,
@@ -45,7 +46,9 @@ describe('Work Item Note Awards List', () => {
const findAwardsList = () => wrapper.findComponent(AwardsList);
const createComponent = ({
+ isGroup = false,
note = firstNote,
+ query = workItemNotesByIidQuery,
addAwardEmojiMutationHandler = addAwardEmojiMutationSuccessHandler,
removeAwardEmojiMutationHandler = removeAwardEmojiMutationSuccessHandler,
} = {}) => {
@@ -55,12 +58,15 @@ describe('Work Item Note Awards List', () => {
]);
apolloProvider.clients.defaultClient.writeQuery({
- query: workItemNotesByIidQuery,
+ query,
variables: { fullPath, iid: workItemIid },
...mockWorkItemNotesResponseWithComments,
});
wrapper = shallowMount(WorkItemNoteAwardsList, {
+ provide: {
+ isGroup,
+ },
propsData: {
fullPath,
workItemIid,
@@ -89,54 +95,58 @@ describe('Work Item Note Awards List', () => {
expect(findAwardsList().props('canAwardEmoji')).toBe(hasAwardEmojiPermission);
});
- it('adds award if not already awarded', async () => {
- createComponent();
- await waitForPromises();
-
- findAwardsList().vm.$emit('award', EMOJI_THUMBSUP);
-
- expect(addAwardEmojiMutationSuccessHandler).toHaveBeenCalledWith({
- awardableId: firstNote.id,
- name: EMOJI_THUMBSUP,
- });
- });
+ it.each`
+ isGroup | query
+ ${true} | ${groupWorkItemNotesByIidQuery}
+ ${false} | ${workItemNotesByIidQuery}
+ `(
+ 'adds award if not already awarded in both group and project contexts',
+ async ({ isGroup, query }) => {
+ createComponent({ isGroup, query });
+ await waitForPromises();
+
+ findAwardsList().vm.$emit('award', EMOJI_THUMBSUP);
+
+ expect(addAwardEmojiMutationSuccessHandler).toHaveBeenCalledWith({
+ awardableId: firstNote.id,
+ name: EMOJI_THUMBSUP,
+ });
+ },
+ );
it('emits error if awarding emoji fails', async () => {
- createComponent({
- addAwardEmojiMutationHandler: jest.fn().mockRejectedValue('oh no'),
- });
- await waitForPromises();
+ createComponent({ addAwardEmojiMutationHandler: jest.fn().mockRejectedValue('oh no') });
findAwardsList().vm.$emit('award', EMOJI_THUMBSUP);
-
await waitForPromises();
expect(wrapper.emitted('error')).toEqual([[__('Failed to add emoji. Please try again')]]);
});
- it('removes award if already awarded', async () => {
- const removeAwardEmojiMutationHandler = removeAwardEmojiMutationSuccessHandler;
-
- createComponent({ removeAwardEmojiMutationHandler });
-
- findAwardsList().vm.$emit('award', EMOJI_THUMBSDOWN);
-
- await waitForPromises();
-
- expect(removeAwardEmojiMutationHandler).toHaveBeenCalledWith({
- awardableId: firstNote.id,
- name: EMOJI_THUMBSDOWN,
- });
- });
+ it.each`
+ isGroup | query
+ ${true} | ${groupWorkItemNotesByIidQuery}
+ ${false} | ${workItemNotesByIidQuery}
+ `(
+ 'removes award if already awarded in both group and project contexts',
+ async ({ isGroup, query }) => {
+ const removeAwardEmojiMutationHandler = removeAwardEmojiMutationSuccessHandler;
+ createComponent({ isGroup, query, removeAwardEmojiMutationHandler });
+
+ findAwardsList().vm.$emit('award', EMOJI_THUMBSDOWN);
+ await waitForPromises();
+
+ expect(removeAwardEmojiMutationHandler).toHaveBeenCalledWith({
+ awardableId: firstNote.id,
+ name: EMOJI_THUMBSDOWN,
+ });
+ },
+ );
it('restores award if remove fails', async () => {
- createComponent({
- removeAwardEmojiMutationHandler: jest.fn().mockRejectedValue('oh no'),
- });
- await waitForPromises();
+ createComponent({ removeAwardEmojiMutationHandler: jest.fn().mockRejectedValue('oh no') });
findAwardsList().vm.$emit('award', EMOJI_THUMBSDOWN);
-
await waitForPromises();
expect(wrapper.emitted('error')).toEqual([[__('Failed to remove emoji. Please try again')]]);
diff --git a/spec/frontend/work_items/components/notes/work_item_notes_activity_header_spec.js b/spec/frontend/work_items/components/notes/work_item_notes_activity_header_spec.js
index daf74f7a93b..dff54fef9fe 100644
--- a/spec/frontend/work_items/components/notes/work_item_notes_activity_header_spec.js
+++ b/spec/frontend/work_items/components/notes/work_item_notes_activity_header_spec.js
@@ -9,7 +9,8 @@ import {
describe('Work Item Note Activity Header', () => {
let wrapper;
- const findActivityLabelHeading = () => wrapper.find('h3');
+ const findActivityLabelH2Heading = () => wrapper.find('h2');
+ const findActivityLabelH3Heading = () => wrapper.find('h3');
const findActivityFilterDropdown = () => wrapper.findByTestId('work-item-filter');
const findActivitySortDropdown = () => wrapper.findByTestId('work-item-sort');
@@ -18,6 +19,7 @@ describe('Work Item Note Activity Header', () => {
sortOrder = ASC,
workItemType = 'Task',
discussionFilter = WORK_ITEM_NOTES_FILTER_ALL_NOTES,
+ useH2 = false,
} = {}) => {
wrapper = shallowMountExtended(WorkItemNotesActivityHeader, {
propsData: {
@@ -25,6 +27,7 @@ describe('Work Item Note Activity Header', () => {
sortOrder,
workItemType,
discussionFilter,
+ useH2,
},
});
};
@@ -34,7 +37,18 @@ describe('Work Item Note Activity Header', () => {
});
it('Should have the Activity label', () => {
- expect(findActivityLabelHeading().text()).toBe(WorkItemNotesActivityHeader.i18n.activityLabel);
+ expect(findActivityLabelH3Heading().text()).toBe(
+ WorkItemNotesActivityHeader.i18n.activityLabel,
+ );
+ });
+
+ it('Should render an H2 instead of an H3 if useH2 is true', () => {
+ createComponent();
+ expect(findActivityLabelH3Heading().exists()).toBe(true);
+ expect(findActivityLabelH2Heading().exists()).toBe(false);
+ createComponent({ useH2: true });
+ expect(findActivityLabelH2Heading().exists()).toBe(true);
+ expect(findActivityLabelH3Heading().exists()).toBe(false);
});
it('Should have Activity filtering dropdown', () => {