diff options
Diffstat (limited to 'spec/frontend')
6 files changed, 90 insertions, 14 deletions
diff --git a/spec/frontend/ci/pipeline_editor/components/editor/ci_editor_header_spec.js b/spec/frontend/ci/pipeline_editor/components/editor/ci_editor_header_spec.js index 2861fc35342..f1a5c4169fb 100644 --- a/spec/frontend/ci/pipeline_editor/components/editor/ci_editor_header_spec.js +++ b/spec/frontend/ci/pipeline_editor/components/editor/ci_editor_header_spec.js @@ -11,12 +11,25 @@ describe('CI Editor Header', () => { let wrapper; let trackingSpy = null; - const createComponent = ({ showDrawer = false, showJobAssistantDrawer = false } = {}) => { + const createComponent = ({ + showDrawer = false, + showJobAssistantDrawer = false, + showAiAssistantDrawer = false, + aiChatAvailable = false, + aiCiConfigGenerator = false, + } = {}) => { wrapper = extendedWrapper( shallowMount(CiEditorHeader, { + provide: { + aiChatAvailable, + glFeatures: { + aiCiConfigGenerator, + }, + }, propsData: { showDrawer, showJobAssistantDrawer, + showAiAssistantDrawer, }, }), ); @@ -24,6 +37,7 @@ describe('CI Editor Header', () => { const findLinkBtn = () => wrapper.findByTestId('template-repo-link'); const findHelpBtn = () => wrapper.findByTestId('drawer-toggle'); + const findAiAssistnantBtn = () => wrapper.findByTestId('ai-assistant-drawer-toggle'); afterEach(() => { unmockTracking(); @@ -39,7 +53,29 @@ describe('CI Editor Header', () => { label, }); }; + describe('Ai Assistant toggle button', () => { + describe('when feature is unavailable', () => { + it('should not show ai button when feature toggle is off', () => { + createComponent({ aiChatAvailable: true }); + mockTracking(undefined, wrapper.element, jest.spyOn); + expect(findAiAssistnantBtn().exists()).toBe(false); + }); + + it('should not show ai button when feature is unavailable', () => { + createComponent({ aiCiConfigGenerator: true }); + mockTracking(undefined, wrapper.element, jest.spyOn); + expect(findAiAssistnantBtn().exists()).toBe(false); + }); + }); + describe('when feature is available', () => { + it('should show ai button', () => { + createComponent({ aiCiConfigGenerator: true, aiChatAvailable: true }); + mockTracking(undefined, wrapper.element, jest.spyOn); + expect(findAiAssistnantBtn().exists()).toBe(true); + }); + }); + }); describe('link button', () => { beforeEach(() => { createComponent(); diff --git a/spec/frontend/ci/pipeline_editor/components/pipeline_editor_tabs_spec.js b/spec/frontend/ci/pipeline_editor/components/pipeline_editor_tabs_spec.js index cbdf01105c7..471b033913b 100644 --- a/spec/frontend/ci/pipeline_editor/components/pipeline_editor_tabs_spec.js +++ b/spec/frontend/ci/pipeline_editor/components/pipeline_editor_tabs_spec.js @@ -57,6 +57,7 @@ describe('Pipeline editor tabs component', () => { isNewCiConfigFile: true, showDrawer: false, showJobAssistantDrawer: false, + showAiAssistantDrawer: false, ...props, }, data() { @@ -65,6 +66,7 @@ describe('Pipeline editor tabs component', () => { }; }, provide: { + aiChatAvailable: false, ciConfigPath: '/path/to/ci-config', ciLintPath: mockCiLintPath, currentBranch: 'main', diff --git a/spec/frontend/ci/pipeline_editor/pipeline_editor_home_spec.js b/spec/frontend/ci/pipeline_editor/pipeline_editor_home_spec.js index 7ec6d4c6a01..576263d5418 100644 --- a/spec/frontend/ci/pipeline_editor/pipeline_editor_home_spec.js +++ b/spec/frontend/ci/pipeline_editor/pipeline_editor_home_spec.js @@ -41,6 +41,7 @@ describe('Pipeline editor home wrapper', () => { ...props, }, provide: { + aiChatAvailable: false, projectFullPath: '', totalBranches: 19, glFeatures: { diff --git a/spec/frontend/design_management/components/list/__snapshots__/item_spec.js.snap b/spec/frontend/design_management/components/list/__snapshots__/item_spec.js.snap index 7773950708f..9451f35ac5b 100644 --- a/spec/frontend/design_management/components/list/__snapshots__/item_spec.js.snap +++ b/spec/frontend/design_management/components/list/__snapshots__/item_spec.js.snap @@ -38,13 +38,13 @@ exports[`Design management list item component with notes renders item with mult </div> <div - class="card-footer gl-display-flex gl-w-full" + class="card-footer gl-display-flex gl-w-full gl-bg-white gl-py-3 gl-px-4" > <div class="gl-display-flex gl-flex-direction-column str-truncated-100" > <span - class="gl-font-weight-bold str-truncated-100" + class="gl-font-weight-semibold str-truncated-100" data-qa-selector="design_file_name" data-testid="design-img-filename-1" title="test" @@ -118,13 +118,13 @@ exports[`Design management list item component with notes renders item with sing </div> <div - class="card-footer gl-display-flex gl-w-full" + class="card-footer gl-display-flex gl-w-full gl-bg-white gl-py-3 gl-px-4" > <div class="gl-display-flex gl-flex-direction-column str-truncated-100" > <span - class="gl-font-weight-bold str-truncated-100" + class="gl-font-weight-semibold str-truncated-100" data-qa-selector="design_file_name" data-testid="design-img-filename-1" title="test" diff --git a/spec/frontend/design_management/pages/__snapshots__/index_spec.js.snap b/spec/frontend/design_management/pages/__snapshots__/index_spec.js.snap index ef1ed9bee51..7da0652faba 100644 --- a/spec/frontend/design_management/pages/__snapshots__/index_spec.js.snap +++ b/spec/frontend/design_management/pages/__snapshots__/index_spec.js.snap @@ -9,7 +9,9 @@ exports[`Design management index page designs renders error 1`] = ` <!----> - <div> + <div + class="gl-bg-gray-10 gl-border gl-border-t-0 gl-rounded-bottom-left-base gl-rounded-bottom-right-base gl-px-5" + > <gl-alert-stub dismisslabel="Dismiss" primarybuttonlink="" @@ -41,7 +43,9 @@ exports[`Design management index page designs renders loading icon 1`] = ` <!----> - <div> + <div + class="gl-bg-gray-10 gl-border gl-border-t-0 gl-rounded-bottom-left-base gl-rounded-bottom-right-base gl-px-5" + > <gl-loading-icon-stub color="dark" label="Loading" diff --git a/spec/frontend/super_sidebar/components/sidebar_menu_spec.js b/spec/frontend/super_sidebar/components/sidebar_menu_spec.js index 26b146f0c8b..9b726b620dd 100644 --- a/spec/frontend/super_sidebar/components/sidebar_menu_spec.js +++ b/spec/frontend/super_sidebar/components/sidebar_menu_spec.js @@ -1,8 +1,16 @@ import { mountExtended } from 'helpers/vue_test_utils_helper'; import SidebarMenu from '~/super_sidebar/components/sidebar_menu.vue'; +import PinnedSection from '~/super_sidebar/components/pinned_section.vue'; import { PANELS_WITH_PINS } from '~/super_sidebar/constants'; import { sidebarData } from '../mock_data'; +const menuItems = [ + { id: 1, title: 'No subitems' }, + { id: 2, title: 'With subitems', items: [{ id: 21, title: 'Pinned subitem' }] }, + { id: 3, title: 'Empty subitems array', items: [] }, + { id: 4, title: 'Also with subitems', items: [{ id: 41, title: 'Subitem' }] }, +]; + describe('SidebarMenu component', () => { let wrapper; @@ -17,14 +25,10 @@ describe('SidebarMenu component', () => { }); }; - describe('computed', () => { - const menuItems = [ - { id: 1, title: 'No subitems' }, - { id: 2, title: 'With subitems', items: [{ id: 21, title: 'Pinned subitem' }] }, - { id: 3, title: 'Empty subitems array', items: [] }, - { id: 4, title: 'Also with subitems', items: [{ id: 41, title: 'Subitem' }] }, - ]; + const findPinnedSection = () => wrapper.findComponent(PinnedSection); + const findMainMenuSeparator = () => wrapper.findByTestId('main-menu-separator'); + describe('computed', () => { describe('supportsPins', () => { it('is true for the project sidebar', () => { createWrapper({ ...sidebarData, panel_type: 'project' }); @@ -148,4 +152,33 @@ describe('SidebarMenu component', () => { }); }); }); + + describe('Menu separators', () => { + it('should add the separator above pinned section', () => { + createWrapper({ + ...sidebarData, + current_menu_items: menuItems, + panel_type: 'project', + }); + expect(findPinnedSection().props('separated')).toBe(true); + }); + + it('should add the separator above main menu items when there is a pinned section', () => { + createWrapper({ + ...sidebarData, + current_menu_items: menuItems, + panel_type: PANELS_WITH_PINS[0], + }); + expect(findMainMenuSeparator().exists()).toBe(true); + }); + + it('should NOT add the separator above main menu items when there is no pinned section', () => { + createWrapper({ + ...sidebarData, + current_menu_items: menuItems, + panel_type: 'explore', + }); + expect(findMainMenuSeparator().exists()).toBe(false); + }); + }); }); |