diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2023-09-02 03:10:00 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2023-09-02 03:10:00 +0300 |
commit | 304c8e83a1a35124a7c23f686b7da1f517d26aa4 (patch) | |
tree | ca84b91f3a106112defc82d50586df50fc0d2b51 /spec/frontend | |
parent | c629c71fe6b682978c026ae67d82f2b5562c5c44 (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/frontend')
5 files changed, 57 insertions, 57 deletions
diff --git a/spec/frontend/super_sidebar/components/global_search/components/global_search_default_places_spec.js b/spec/frontend/super_sidebar/components/global_search/components/global_search_default_places_spec.js index ffcb9137497..f91c8034fe9 100644 --- a/spec/frontend/super_sidebar/components/global_search/components/global_search_default_places_spec.js +++ b/spec/frontend/super_sidebar/components/global_search/components/global_search_default_places_spec.js @@ -72,6 +72,8 @@ describe('GlobalSearchDefaultPlaces', () => { 'data-track-extra': '{"title":"Explore"}', 'data-track-label': 'item_without_id', 'data-track-property': 'nav_panel_unknown', + 'data-testid': 'places-item-link', + 'data-qa-places-item': 'Explore', }, }, { @@ -82,6 +84,8 @@ describe('GlobalSearchDefaultPlaces', () => { 'data-track-extra': '{"title":"Admin area"}', 'data-track-label': 'item_without_id', 'data-track-property': 'nav_panel_unknown', + 'data-testid': 'places-item-link', + 'data-qa-places-item': 'Admin area', }, }, ]); diff --git a/spec/frontend/super_sidebar/components/nav_item_spec.js b/spec/frontend/super_sidebar/components/nav_item_spec.js index 589db349dc6..9b657506045 100644 --- a/spec/frontend/super_sidebar/components/nav_item_spec.js +++ b/spec/frontend/super_sidebar/components/nav_item_spec.js @@ -1,4 +1,4 @@ -import { GlBadge, GlButton } from '@gitlab/ui'; +import { GlBadge, GlButton, GlAvatar } from '@gitlab/ui'; import { RouterLinkStub } from '@vue/test-utils'; import { nextTick } from 'vue'; import { mountExtended, extendedWrapper } from 'helpers/vue_test_utils_helper'; @@ -14,6 +14,7 @@ import { describe('NavItem component', () => { let wrapper; + const findAvatar = () => wrapper.findComponent(GlAvatar); const findLink = () => wrapper.findByTestId('nav-item-link'); const findPill = () => wrapper.findComponent(GlBadge); const findPinButton = () => wrapper.findComponent(GlButton); @@ -211,4 +212,18 @@ describe('NavItem component', () => { }); }); }); + + describe('when `item` prop has `entity_id` attribute', () => { + it('renders an avatar', () => { + createWrapper({ + item: { title: 'Foo', entity_id: 123, avatar: '/avatar.png', avatar_shape: 'circle' }, + }); + + expect(findAvatar().props()).toMatchObject({ + entityId: 123, + shape: 'circle', + src: '/avatar.png', + }); + }); + }); }); diff --git a/spec/frontend/super_sidebar/components/sidebar_menu_spec.js b/spec/frontend/super_sidebar/components/sidebar_menu_spec.js index 5d9a35fbf70..1ba4b34ada0 100644 --- a/spec/frontend/super_sidebar/components/sidebar_menu_spec.js +++ b/spec/frontend/super_sidebar/components/sidebar_menu_spec.js @@ -185,14 +185,6 @@ describe('Sidebar Menu', () => { }); describe('Separators', () => { - it('should add the separator above pinned section', () => { - createWrapper({ - items: menuItems, - panelType: 'project', - }); - expect(findPinnedSection().props('separated')).toBe(true); - }); - it('should add the separator above main menu items when there is a pinned section', () => { createWrapper({ items: menuItems, diff --git a/spec/frontend/super_sidebar/components/super_sidebar_spec.js b/spec/frontend/super_sidebar/components/super_sidebar_spec.js index 7b7b8a7be13..2e2dfe7e94a 100644 --- a/spec/frontend/super_sidebar/components/super_sidebar_spec.js +++ b/spec/frontend/super_sidebar/components/super_sidebar_spec.js @@ -11,22 +11,23 @@ import SidebarPeekBehavior, { STATE_WILL_CLOSE, } from '~/super_sidebar/components/sidebar_peek_behavior.vue'; import SidebarPortalTarget from '~/super_sidebar/components/sidebar_portal_target.vue'; -import ContextHeader from '~/super_sidebar/components/context_header.vue'; -import ContextSwitcher from '~/super_sidebar/components/context_switcher.vue'; import SidebarMenu from '~/super_sidebar/components/sidebar_menu.vue'; import { sidebarState } from '~/super_sidebar/constants'; import { toggleSuperSidebarCollapsed, isCollapsed, } from '~/super_sidebar/super_sidebar_collapsed_state_manager'; -import { stubComponent } from 'helpers/stub_component'; import { mockTracking, unmockTracking } from 'helpers/tracking_helper'; +import { trackContextAccess } from '~/super_sidebar/utils'; import { sidebarData as mockSidebarData, loggedOutSidebarData } from '../mock_data'; const initialSidebarState = { ...sidebarState }; jest.mock('~/super_sidebar/super_sidebar_collapsed_state_manager'); -const closeContextSwitcherMock = jest.fn(); +jest.mock('~/super_sidebar/utils', () => ({ + ...jest.requireActual('~/super_sidebar/utils'), + trackContextAccess: jest.fn(), +})); const trialStatusWidgetStubTestId = 'trial-status-widget'; const TrialStatusWidgetStub = { template: `<div data-testid="${trialStatusWidgetStubTestId}" />` }; @@ -43,8 +44,6 @@ describe('SuperSidebar component', () => { const findSidebar = () => wrapper.findByTestId('super-sidebar'); const findUserBar = () => wrapper.findComponent(UserBar); - const findContextHeader = () => wrapper.findComponent(ContextHeader); - const findContextSwitcher = () => wrapper.findComponent(ContextSwitcher); const findNavContainer = () => wrapper.findByTestId('nav-container'); const findHelpCenter = () => wrapper.findComponent(HelpCenter); const findSidebarPortalTarget = () => wrapper.findComponent(SidebarPortalTarget); @@ -70,9 +69,6 @@ describe('SuperSidebar component', () => { sidebarData, }, stubs: { - ContextSwitcher: stubComponent(ContextSwitcher, { - methods: { close: closeContextSwitcherMock }, - }), TrialStatusWidget: TrialStatusWidgetStub, TrialStatusPopover: TrialStatusPopoverStub, }, @@ -128,12 +124,6 @@ describe('SuperSidebar component', () => { expect(findSidebarPortalTarget().exists()).toBe(true); }); - it("does not call the context switcher's close method initially", () => { - createWrapper(); - - expect(closeContextSwitcherMock).not.toHaveBeenCalled(); - }); - it('renders hidden shortcut links', () => { createWrapper(); const [linkAttrs] = mockSidebarData.shortcut_links; @@ -186,16 +176,37 @@ describe('SuperSidebar component', () => { expect(findPeekBehavior().exists()).toBe(false); }); - }); - describe('on collapse', () => { - beforeEach(() => { + it('renders the context header', () => { createWrapper(); - sidebarState.isCollapsed = true; + + expect(wrapper.text()).toContain('Your work'); }); - it('closes the context switcher', () => { - expect(closeContextSwitcherMock).toHaveBeenCalled(); + describe('item access tracking', () => { + it('does not track anything if logged out', () => { + createWrapper({ sidebarData: loggedOutSidebarData }); + + expect(trackContextAccess).not.toHaveBeenCalled(); + }); + + it('does not track anything if logged in and not within a trackable context', () => { + createWrapper(); + + expect(trackContextAccess).not.toHaveBeenCalled(); + }); + + it('tracks item access if logged in within a trackable context', () => { + const currentContext = { namespace: 'groups' }; + createWrapper({ + sidebarData: { + ...mockSidebarData, + current_context: currentContext, + }, + }); + + expect(trackContextAccess).toHaveBeenCalledWith('root', currentContext); + }); }); }); @@ -248,16 +259,9 @@ describe('SuperSidebar component', () => { createWrapper(); }); - it('allows overflow while the context switcher is closed', () => { + it('allows overflow', () => { expect(findNavContainer().classes()).toContain('gl-overflow-auto'); }); - - it('hides overflow when context switcher is opened', async () => { - findContextSwitcher().vm.$emit('toggle', true); - await nextTick(); - - expect(findNavContainer().classes()).not.toContain('gl-overflow-auto'); - }); }); describe('when a trial is active', () => { @@ -270,15 +274,4 @@ describe('SuperSidebar component', () => { expect(findTrialStatusPopover().exists()).toBe(true); }); }); - - describe('Logged out', () => { - beforeEach(() => { - createWrapper({ sidebarData: loggedOutSidebarData }); - }); - - it('renders context header instead of context switcher', () => { - expect(findContextHeader().exists()).toBe(true); - expect(findContextSwitcher().exists()).toBe(false); - }); - }); }); diff --git a/spec/frontend/super_sidebar/mock_data.js b/spec/frontend/super_sidebar/mock_data.js index 6fb9715824f..b4c1596e5cd 100644 --- a/spec/frontend/super_sidebar/mock_data.js +++ b/spec/frontend/super_sidebar/mock_data.js @@ -79,10 +79,8 @@ export const contextSwitcherLinks = [ export const sidebarData = { is_logged_in: true, current_menu_items: [], - current_context_header: { - title: 'Your Work', - icon: 'work', - }, + current_context: {}, + current_context_header: 'Your work', name: 'Administrator', username: 'root', avatar_url: 'path/to/img_administrator', @@ -129,10 +127,8 @@ export const sidebarData = { export const loggedOutSidebarData = { is_logged_in: false, current_menu_items: [], - current_context_header: { - title: 'Your Work', - icon: 'work', - }, + current_context: {}, + current_context_header: 'Your work', support_path: '/support', display_whats_new: true, whats_new_most_recent_release_items_count: 5, |