From 729e3765d5feb762df1ccfbc228a8dd4662aa3f9 Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Tue, 24 Mar 2020 12:09:42 +0000 Subject: Add latest changes from gitlab-org/gitlab@master --- .../notes/components/discussion_counter_spec.js | 59 ++++++++++++++++++++-- 1 file changed, 54 insertions(+), 5 deletions(-) (limited to 'spec/frontend/notes/components') diff --git a/spec/frontend/notes/components/discussion_counter_spec.js b/spec/frontend/notes/components/discussion_counter_spec.js index c9375df07e8..77603c16f82 100644 --- a/spec/frontend/notes/components/discussion_counter_spec.js +++ b/spec/frontend/notes/components/discussion_counter_spec.js @@ -75,17 +75,66 @@ describe('DiscussionCounter component', () => { }); it.each` - title | resolved | hasNextBtn | isActive | icon | groupLength - ${'hasNextButton'} | ${false} | ${true} | ${false} | ${'check-circle'} | ${2} - ${'allResolved'} | ${true} | ${false} | ${true} | ${'check-circle-filled'} | ${0} - `('renders correctly if $title', ({ resolved, hasNextBtn, isActive, icon, groupLength }) => { + title | resolved | isActive | icon | groupLength + ${'not allResolved'} | ${false} | ${false} | ${'check-circle'} | ${3} + ${'allResolved'} | ${true} | ${true} | ${'check-circle-filled'} | ${1} + `('renders correctly if $title', ({ resolved, isActive, icon, groupLength }) => { updateStore({ resolvable: true, resolved }); wrapper = shallowMount(DiscussionCounter, { store, localVue }); - expect(wrapper.find(`.has-next-btn`).exists()).toBe(hasNextBtn); expect(wrapper.find(`.is-active`).exists()).toBe(isActive); expect(wrapper.find({ name: icon }).exists()).toBe(true); expect(wrapper.findAll('[role="group"').length).toBe(groupLength); }); }); + + describe('toggle all threads button', () => { + let toggleAllButton; + const updateStoreWithExpanded = expanded => { + const discussion = { ...discussionMock, expanded }; + store.commit(types.SET_INITIAL_DISCUSSIONS, [discussion]); + store.dispatch('updateResolvableDiscussionsCounts'); + wrapper = shallowMount(DiscussionCounter, { store, localVue }); + toggleAllButton = wrapper.find('.toggle-all-discussions-btn'); + }; + + afterEach(() => wrapper.destroy()); + + it('calls button handler when clicked', () => { + updateStoreWithExpanded(true); + + wrapper.setMethods({ handleExpandDiscussions: jest.fn() }); + toggleAllButton.trigger('click'); + + expect(wrapper.vm.handleExpandDiscussions).toHaveBeenCalledTimes(1); + }); + + it('collapses all discussions if expanded', () => { + updateStoreWithExpanded(true); + + expect(wrapper.vm.allExpanded).toBe(true); + expect(toggleAllButton.find({ name: 'angle-up' }).exists()).toBe(true); + + toggleAllButton.trigger('click'); + + return wrapper.vm.$nextTick().then(() => { + expect(wrapper.vm.allExpanded).toBe(false); + expect(toggleAllButton.find({ name: 'angle-down' }).exists()).toBe(true); + }); + }); + + it('expands all discussions if collapsed', () => { + updateStoreWithExpanded(false); + + expect(wrapper.vm.allExpanded).toBe(false); + expect(toggleAllButton.find({ name: 'angle-down' }).exists()).toBe(true); + + toggleAllButton.trigger('click'); + + return wrapper.vm.$nextTick().then(() => { + expect(wrapper.vm.allExpanded).toBe(true); + expect(toggleAllButton.find({ name: 'angle-up' }).exists()).toBe(true); + }); + }); + }); }); -- cgit v1.2.3