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/notes/components/discussion_actions_spec.js')
-rw-r--r--spec/frontend/notes/components/discussion_actions_spec.js36
1 files changed, 29 insertions, 7 deletions
diff --git a/spec/frontend/notes/components/discussion_actions_spec.js b/spec/frontend/notes/components/discussion_actions_spec.js
index f582729d773..d3c8cf72376 100644
--- a/spec/frontend/notes/components/discussion_actions_spec.js
+++ b/spec/frontend/notes/components/discussion_actions_spec.js
@@ -7,6 +7,18 @@ import ResolveDiscussionButton from '~/notes/components/discussion_resolve_butto
import ResolveWithIssueButton from '~/notes/components/discussion_resolve_with_issue_button.vue';
import JumpToNextDiscussionButton from '~/notes/components/discussion_jump_to_next_button.vue';
+// NOTE: clone mock_data so that it is not accidentally mutated
+const createDiscussionMock = (props = {}) =>
+ Object.assign(JSON.parse(JSON.stringify(discussionMock)), props);
+const createNoteMock = (props = {}) =>
+ Object.assign(JSON.parse(JSON.stringify(discussionMock.notes[0])), props);
+const createResolvableNote = () =>
+ createNoteMock({ resolvable: true, current_user: { can_resolve: true } });
+const createUnresolvableNote = () =>
+ createNoteMock({ resolvable: false, current_user: { can_resolve: false } });
+const createUnallowedNote = () =>
+ createNoteMock({ resolvable: true, current_user: { can_resolve: false } });
+
describe('DiscussionActions', () => {
let wrapper;
const createComponentFactory = (shallow = true) => props => {
@@ -66,13 +78,23 @@ describe('DiscussionActions', () => {
expect(wrapper.find(JumpToNextDiscussionButton).exists()).toBe(false);
});
- it('does not renders discussion button for non-member', () => {
- const discussion = JSON.parse(JSON.stringify(discussionMock));
- discussion.notes[1].current_user.can_resolve = false;
- createComponent({ discussion });
-
- expect(wrapper.find(ResolveDiscussionButton).exists()).toBe(false);
- expect(wrapper.find(ResolveWithIssueButton).exists()).toBe(false);
+ describe.each`
+ desc | notes | shouldRender
+ ${'with no notes'} | ${[]} | ${true}
+ ${'with resolvable notes'} | ${[createResolvableNote(), createResolvableNote()]} | ${true}
+ ${'with unresolvable notes'} | ${[createResolvableNote(), createUnresolvableNote()]} | ${true}
+ ${'with unallowed note'} | ${[createResolvableNote(), createUnallowedNote()]} | ${false}
+ `('$desc', ({ notes, shouldRender }) => {
+ beforeEach(() => {
+ createComponent({
+ discussion: createDiscussionMock({ notes }),
+ });
+ });
+
+ it(shouldRender ? 'renders resolve buttons' : 'does not render resolve buttons', () => {
+ expect(wrapper.find(ResolveDiscussionButton).exists()).toBe(shouldRender);
+ expect(wrapper.find(ResolveWithIssueButton).exists()).toBe(shouldRender);
+ });
});
});