From 05bdfa0698d8fc5117e995958044fa29dfef0b68 Mon Sep 17 00:00:00 2001 From: Elwyn Benson Date: Tue, 3 Sep 2024 15:07:23 +1200 Subject: [PATCH] feat: add improved duo chat context menu category items - format category items nicer - add functionality for active item --- .../duo_chat_context_item_menu.spec.js | 21 +++---- .../duo_chat_context_item_menu.vue | 20 ++++--- ...t_context_item_menu_category_items.spec.js | 57 +++++++++++++++++++ ..._chat_context_item_menu_category_items.vue | 45 +++++++++++++++ 4 files changed, 122 insertions(+), 21 deletions(-) create mode 100644 src/components/experimental/duo/chat/components/duo_chat_context/duo_chat_context_item_menu/duo_chat_context_item_menu_category_items.spec.js create mode 100644 src/components/experimental/duo/chat/components/duo_chat_context/duo_chat_context_item_menu/duo_chat_context_item_menu_category_items.vue diff --git a/src/components/experimental/duo/chat/components/duo_chat_context/duo_chat_context_item_menu/duo_chat_context_item_menu.spec.js b/src/components/experimental/duo/chat/components/duo_chat_context/duo_chat_context_item_menu/duo_chat_context_item_menu.spec.js index a3098bed4b..5079c3a2d2 100644 --- a/src/components/experimental/duo/chat/components/duo_chat_context/duo_chat_context_item_menu/duo_chat_context_item_menu.spec.js +++ b/src/components/experimental/duo/chat/components/duo_chat_context/duo_chat_context_item_menu/duo_chat_context_item_menu.spec.js @@ -6,6 +6,7 @@ import { CONTEXT_ITEM_TYPE_PROJECT_FILE, } from '../constants'; import GlDuoChatContextItemSelections from '../duo_chat_context_item_selections/duo_chat_context_item_selections.vue'; +import GlDuoChatContextItemMenuCategoryItems from './duo_chat_context_item_menu_category_items.vue'; import GlDuoChatContextItemMenu from './duo_chat_context_item_menu.vue'; jest.mock('lodash/debounce', () => jest.fn((fn) => fn)); @@ -32,7 +33,7 @@ describe('GlDuoChatContextItemMenu', () => { const findMenu = () => findByTestId('context-item-menu'); const findContextItemSelections = () => wrapper.findComponent(GlDuoChatContextItemSelections); - const findCategoryItems = () => findByTestId('context-menu-category-items'); + const findCategoryItems = () => wrapper.findComponent(GlDuoChatContextItemMenuCategoryItems); const findResultItems = () => findByTestId('context-menu-search-items'); describe('context item selection', () => { @@ -81,18 +82,10 @@ describe('GlDuoChatContextItemMenu', () => { }); it('shows categories', () => { - expect(findCategoryItems().exists()).toBe(true); - }); - - it('selects the category when clicked', async () => { - await findCategoryItems().find('li').trigger('click'); - - expect(wrapper.emitted('search').at(0)).toEqual([ - { - category: MOCK_CATEGORIES[0].value, - query: '', - }, - ]); + expect(findCategoryItems().props()).toEqual({ + activeIndex: 0, + categories: MOCK_CATEGORIES, + }); }); }); @@ -116,7 +109,7 @@ describe('GlDuoChatContextItemMenu', () => { results, }); - return findCategoryItems().find('li', { text: category.label }).trigger('click'); + return findCategoryItems().vm.$emit('select', category); }); it('shows search result items', () => { diff --git a/src/components/experimental/duo/chat/components/duo_chat_context/duo_chat_context_item_menu/duo_chat_context_item_menu.vue b/src/components/experimental/duo/chat/components/duo_chat_context/duo_chat_context_item_menu/duo_chat_context_item_menu.vue index 282b79ca62..197a314b8c 100644 --- a/src/components/experimental/duo/chat/components/duo_chat_context/duo_chat_context_item_menu/duo_chat_context_item_menu.vue +++ b/src/components/experimental/duo/chat/components/duo_chat_context/duo_chat_context_item_menu/duo_chat_context_item_menu.vue @@ -1,13 +1,15 @@ + -- GitLab