diff options
Diffstat (limited to 'spec/frontend/issuable_sidebar/components/issuable_sidebar_root_spec.js')
-rw-r--r-- | spec/frontend/issuable_sidebar/components/issuable_sidebar_root_spec.js | 131 |
1 files changed, 0 insertions, 131 deletions
diff --git a/spec/frontend/issuable_sidebar/components/issuable_sidebar_root_spec.js b/spec/frontend/issuable_sidebar/components/issuable_sidebar_root_spec.js deleted file mode 100644 index c872925cca2..00000000000 --- a/spec/frontend/issuable_sidebar/components/issuable_sidebar_root_spec.js +++ /dev/null @@ -1,131 +0,0 @@ -import { GlBreakpointInstance as bp } from '@gitlab/ui/dist/utils'; -import Cookies from 'js-cookie'; -import { shallowMountExtended } from 'helpers/vue_test_utils_helper'; - -import IssuableSidebarRoot from '~/issuable_sidebar/components/issuable_sidebar_root.vue'; -import { USER_COLLAPSED_GUTTER_COOKIE } from '~/issuable_sidebar/constants'; - -const MOCK_LAYOUT_PAGE_CLASS = 'layout-page'; - -const createComponent = () => { - setFixtures(`<div class="${MOCK_LAYOUT_PAGE_CLASS}"></div>`); - - return shallowMountExtended(IssuableSidebarRoot, { - slots: { - 'right-sidebar-items': ` - <button class="js-todo">Todo</button> - `, - }, - }); -}; - -describe('IssuableSidebarRoot', () => { - let wrapper; - - const findToggleSidebarButton = () => wrapper.findByTestId('toggle-right-sidebar-button'); - - const assertPageLayoutClasses = ({ isExpanded }) => { - const { classList } = document.querySelector(`.${MOCK_LAYOUT_PAGE_CLASS}`); - if (isExpanded) { - expect(classList).toContain('right-sidebar-expanded'); - expect(classList).not.toContain('right-sidebar-collapsed'); - } else { - expect(classList).toContain('right-sidebar-collapsed'); - expect(classList).not.toContain('right-sidebar-expanded'); - } - }; - - afterEach(() => { - wrapper.destroy(); - }); - - describe('when sidebar is expanded', () => { - beforeEach(() => { - jest.spyOn(Cookies, 'set').mockImplementation(jest.fn()); - jest.spyOn(Cookies, 'get').mockReturnValue(false); - jest.spyOn(bp, 'isDesktop').mockReturnValue(true); - - wrapper = createComponent(); - }); - - it('renders component container element with class `right-sidebar-expanded`', () => { - expect(wrapper.classes()).toContain('right-sidebar-expanded'); - }); - - it('sets layout class to reflect expanded state', () => { - assertPageLayoutClasses({ isExpanded: true }); - }); - - it('renders sidebar toggle button with text and icon', () => { - const buttonEl = findToggleSidebarButton(); - - expect(buttonEl.exists()).toBe(true); - expect(buttonEl.attributes('title')).toBe('Toggle sidebar'); - expect(buttonEl.find('span').text()).toBe('Collapse sidebar'); - expect(wrapper.findByTestId('icon-collapse').isVisible()).toBe(true); - }); - - describe('when collapsing the sidebar', () => { - it('updates "collapsed_gutter" cookie value and layout classes', async () => { - await findToggleSidebarButton().trigger('click'); - - expect(Cookies.set).toHaveBeenCalledWith(USER_COLLAPSED_GUTTER_COOKIE, true); - assertPageLayoutClasses({ isExpanded: false }); - }); - }); - - describe('when window `resize` event is triggered', () => { - it.each` - breakpoint | isExpandedValue - ${'xs'} | ${false} - ${'sm'} | ${false} - ${'md'} | ${false} - ${'lg'} | ${true} - ${'xl'} | ${true} - `( - 'sets page layout classes correctly when current screen size is `$breakpoint`', - async ({ breakpoint, isExpandedValue }) => { - jest.spyOn(bp, 'isDesktop').mockReturnValue(breakpoint === 'lg' || breakpoint === 'xl'); - - window.dispatchEvent(new Event('resize')); - await wrapper.vm.$nextTick(); - - assertPageLayoutClasses({ isExpanded: isExpandedValue }); - }, - ); - }); - }); - - describe('when sidebar is collapsed', () => { - beforeEach(() => { - jest.spyOn(Cookies, 'get').mockReturnValue(true); - - wrapper = createComponent(); - }); - - it('renders component container element with class `right-sidebar-collapsed`', () => { - expect(wrapper.classes()).toContain('right-sidebar-collapsed'); - }); - - it('sets layout class to reflect collapsed state', () => { - assertPageLayoutClasses({ isExpanded: false }); - }); - - it('renders sidebar toggle button with text and icon', () => { - const buttonEl = findToggleSidebarButton(); - - expect(buttonEl.exists()).toBe(true); - expect(buttonEl.attributes('title')).toBe('Toggle sidebar'); - expect(wrapper.findByTestId('icon-expand').isVisible()).toBe(true); - }); - }); - - it('renders slotted sidebar items', () => { - wrapper = createComponent(); - - const sidebarItemsEl = wrapper.findByTestId('sidebar-items'); - - expect(sidebarItemsEl.exists()).toBe(true); - expect(sidebarItemsEl.find('button.js-todo').exists()).toBe(true); - }); -}); |