diff options
Diffstat (limited to 'spec/frontend/super_sidebar/components/user_name_group_spec.js')
-rw-r--r-- | spec/frontend/super_sidebar/components/user_name_group_spec.js | 130 |
1 files changed, 0 insertions, 130 deletions
diff --git a/spec/frontend/super_sidebar/components/user_name_group_spec.js b/spec/frontend/super_sidebar/components/user_name_group_spec.js deleted file mode 100644 index a31ad93d143..00000000000 --- a/spec/frontend/super_sidebar/components/user_name_group_spec.js +++ /dev/null @@ -1,130 +0,0 @@ -import { GlDisclosureDropdownGroup, GlDisclosureDropdownItem, GlTooltip } from '@gitlab/ui'; -import { shallowMountExtended } from 'helpers/vue_test_utils_helper'; -import UserNameGroup from '~/super_sidebar/components/user_name_group.vue'; -import { userMenuMockData, userMenuMockStatus } from '../mock_data'; - -describe('UserNameGroup component', () => { - let wrapper; - - const findGlDisclosureDropdownGroup = () => wrapper.findComponent(GlDisclosureDropdownGroup); - const findGlDisclosureDropdownItem = () => wrapper.findComponent(GlDisclosureDropdownItem); - const findGlTooltip = () => wrapper.findComponent(GlTooltip); - const findUserStatus = () => wrapper.findByTestId('user-menu-status'); - - const GlEmoji = { template: '<img/>' }; - - const createWrapper = (userDataChanges = {}) => { - wrapper = shallowMountExtended(UserNameGroup, { - propsData: { - user: { - ...userMenuMockData, - ...userDataChanges, - }, - }, - stubs: { - GlEmoji, - GlDisclosureDropdownItem, - }, - }); - }; - - beforeEach(() => { - createWrapper(); - }); - - it('renders the menu item in a separate group', () => { - expect(findGlDisclosureDropdownGroup().exists()).toBe(true); - }); - - it('renders menu item', () => { - expect(findGlDisclosureDropdownItem().exists()).toBe(true); - }); - - it('passes the item to the disclosure dropdown item', () => { - expect(findGlDisclosureDropdownItem().props('item')).toEqual( - expect.objectContaining({ - text: userMenuMockData.name, - href: userMenuMockData.link_to_profile, - }), - ); - }); - - it("renders user's name", () => { - expect(findGlDisclosureDropdownItem().text()).toContain(userMenuMockData.name); - }); - - it("renders user's username", () => { - expect(findGlDisclosureDropdownItem().text()).toContain(userMenuMockData.username); - }); - - describe('Busy status', () => { - it('should not render "Busy" when user is NOT busy', () => { - expect(findGlDisclosureDropdownItem().text()).not.toContain('Busy'); - }); - it('should render "Busy" when user is busy', () => { - createWrapper({ status: { customized: true, busy: true } }); - - expect(findGlDisclosureDropdownItem().text()).toContain('Busy'); - }); - }); - - describe('User status', () => { - describe('when not customized', () => { - it('should not render it', () => { - expect(findUserStatus().exists()).toBe(false); - }); - }); - - describe('when customized', () => { - beforeEach(() => { - createWrapper({ status: { ...userMenuMockStatus, customized: true } }); - }); - - it('should render it', () => { - expect(findUserStatus().exists()).toBe(true); - }); - - it('should render status emoji', () => { - expect(findUserStatus().findComponent(GlEmoji).attributes('data-name')).toBe( - userMenuMockData.status.emoji, - ); - }); - - it('should render status message', () => { - expect(findUserStatus().html()).toContain(userMenuMockData.status.message_html); - }); - - it("sets the tooltip's target to the status container", () => { - expect(findGlTooltip().props('target')?.()).toBe(findUserStatus().element); - }); - - describe('Tooltip', () => { - it('renders the tooltip when message has some text', () => { - createWrapper({ - status: { ...userMenuMockStatus, customized: true, message_html: 'Has text' }, - }); - expect(findGlTooltip().exists()).toBe(true); - }); - - it('does not render the tooltip when message is empty', () => { - createWrapper({ - status: { ...userMenuMockStatus, customized: true, message_html: '' }, - }); - expect(findGlTooltip().exists()).toBe(false); - }); - }); - }); - }); - - describe('Tracking', () => { - it('sets the tracking attributes', () => { - expect(findGlDisclosureDropdownItem().find('a').attributes()).toEqual( - expect.objectContaining({ - 'data-track-property': 'nav_user_menu', - 'data-track-action': 'click_link', - 'data-track-label': 'user_profile', - }), - ); - }); - }); -}); |