diff options
Diffstat (limited to 'spec/javascripts/notes/components/discussion_counter_spec.js')
-rw-r--r-- | spec/javascripts/notes/components/discussion_counter_spec.js | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/spec/javascripts/notes/components/discussion_counter_spec.js b/spec/javascripts/notes/components/discussion_counter_spec.js new file mode 100644 index 00000000000..7b2302e6f47 --- /dev/null +++ b/spec/javascripts/notes/components/discussion_counter_spec.js @@ -0,0 +1,58 @@ +import Vue from 'vue'; +import createStore from '~/notes/stores'; +import DiscussionCounter from '~/notes/components/discussion_counter.vue'; +import { createComponentWithStore } from 'spec/helpers/vue_mount_component_helper'; +import { noteableDataMock, discussionMock, notesDataMock } from '../mock_data'; + +describe('DiscussionCounter component', () => { + let store; + let vm; + + beforeEach(() => { + window.mrTabs = {}; + + const Component = Vue.extend(DiscussionCounter); + + store = createStore(); + store.dispatch('setNoteableData', noteableDataMock); + store.dispatch('setNotesData', notesDataMock); + + vm = createComponentWithStore(Component, store); + }); + + afterEach(() => { + vm.$destroy(); + }); + + describe('methods', () => { + describe('jumpToFirstUnresolvedDiscussion', () => { + it('expands unresolved discussion', () => { + spyOn(vm, 'expandDiscussion').and.stub(); + const discussions = [ + { + ...discussionMock, + id: discussionMock.id, + notes: [{ ...discussionMock.notes[0], resolved: true }], + }, + { + ...discussionMock, + id: discussionMock.id + 1, + notes: [{ ...discussionMock.notes[0], resolved: false }], + }, + ]; + const firstDiscussionId = discussionMock.id + 1; + store.replaceState({ + ...store.state, + discussions, + }); + setFixtures(` + <div data-discussion-id="${firstDiscussionId}"></div> + `); + + vm.jumpToFirstUnresolvedDiscussion(); + + expect(vm.expandDiscussion).toHaveBeenCalledWith({ discussionId: firstDiscussionId }); + }); + }); + }); +}); |