diff options
Diffstat (limited to 'spec/frontend/vue_merge_request_widget/components/states/mr_widget_unresolved_discussions_spec.js')
-rw-r--r-- | spec/frontend/vue_merge_request_widget/components/states/mr_widget_unresolved_discussions_spec.js | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/spec/frontend/vue_merge_request_widget/components/states/mr_widget_unresolved_discussions_spec.js b/spec/frontend/vue_merge_request_widget/components/states/mr_widget_unresolved_discussions_spec.js new file mode 100644 index 00000000000..e2d79c61b9b --- /dev/null +++ b/spec/frontend/vue_merge_request_widget/components/states/mr_widget_unresolved_discussions_spec.js @@ -0,0 +1,64 @@ +import { mount } from '@vue/test-utils'; +import { TEST_HOST } from 'helpers/test_constants'; +import notesEventHub from '~/notes/event_hub'; +import UnresolvedDiscussions from '~/vue_merge_request_widget/components/states/unresolved_discussions.vue'; + +function createComponent({ path = '' } = {}) { + return mount(UnresolvedDiscussions, { + propsData: { + mr: { + createIssueToResolveDiscussionsPath: path, + }, + }, + }); +} + +describe('UnresolvedDiscussions', () => { + let wrapper; + + beforeEach(() => { + wrapper = createComponent(); + }); + + afterEach(() => { + wrapper.destroy(); + }); + + it('triggers the correct notes event when the jump to first unresolved discussion button is clicked', () => { + jest.spyOn(notesEventHub, '$emit'); + + wrapper.find('[data-testid="jump-to-first"]').trigger('click'); + + expect(notesEventHub.$emit).toHaveBeenCalledWith('jumpToFirstUnresolvedDiscussion'); + }); + + describe('with threads path', () => { + beforeEach(() => { + wrapper = createComponent({ path: TEST_HOST }); + }); + + afterEach(() => { + wrapper.destroy(); + }); + + it('should have correct elements', () => { + expect(wrapper.element.innerText).toContain(`Merge blocked: all threads must be resolved.`); + + expect(wrapper.element.innerText).toContain('Jump to first unresolved thread'); + expect(wrapper.element.innerText).toContain('Create issue to resolve all threads'); + expect(wrapper.element.querySelector('.js-create-issue').getAttribute('href')).toEqual( + TEST_HOST, + ); + }); + }); + + describe('without threads path', () => { + it('should not show create issue link if user cannot create issue', () => { + expect(wrapper.element.innerText).toContain(`Merge blocked: all threads must be resolved.`); + + expect(wrapper.element.innerText).toContain('Jump to first unresolved thread'); + expect(wrapper.element.innerText).not.toContain('Create issue to resolve all threads'); + expect(wrapper.element.querySelector('.js-create-issue')).toEqual(null); + }); + }); +}); |