From 549085350dee237b4689a0ff58451353ffbe861b Mon Sep 17 00:00:00 2001 From: Rodney Norris Date: Mon, 10 Jul 2023 17:57:47 +0000 Subject: [PATCH] feat: rebrand ent-search breadcrumbs to Search --- .../generate_breadcrumbs.test.ts | 44 +++++++++++++++++++ .../kibana_chrome/generate_breadcrumbs.ts | 31 +++++++------ .../shared/kibana_chrome/set_chrome.test.tsx | 8 ++-- .../shared/kibana_chrome/set_chrome.tsx | 10 ++--- 4 files changed, 70 insertions(+), 23 deletions(-) diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/kibana_chrome/generate_breadcrumbs.test.ts b/x-pack/plugins/enterprise_search/public/applications/shared/kibana_chrome/generate_breadcrumbs.test.ts index f5d10ba4bc00f..c767706fb0d6f 100644 --- a/x-pack/plugins/enterprise_search/public/applications/shared/kibana_chrome/generate_breadcrumbs.test.ts +++ b/x-pack/plugins/enterprise_search/public/applications/shared/kibana_chrome/generate_breadcrumbs.test.ts @@ -20,6 +20,7 @@ import { useEuiBreadcrumbs, useEnterpriseSearchBreadcrumbs, useAppSearchBreadcrumbs, + useSearchBreadcrumbs, useWorkplaceSearchBreadcrumbs, } from './generate_breadcrumbs'; @@ -142,6 +143,49 @@ describe('useEuiBreadcrumbs', () => { }); }); +describe('useSearchBreadcrumbs', () => { + beforeEach(() => { + jest.clearAllMocks(); + }); + + it('builds a chain of breadcrumbs with Search at the root', () => { + const breadcrumbs = [ + { + text: 'Page 1', + path: '/page1', + }, + { + text: 'Page 2', + path: '/page2', + }, + ]; + + expect(useSearchBreadcrumbs(breadcrumbs)).toEqual([ + { + text: 'Search', + href: '/app/enterprise_search/overview', + onClick: expect.any(Function), + }, + { + text: 'Page 1', + href: '/app/enterprise_search/page1', + onClick: expect.any(Function), + }, + { + text: 'Page 2', + }, + ]); + }); + + it('shows just the root if breadcrumbs is empty', () => { + expect(useSearchBreadcrumbs()).toEqual([ + { + text: 'Search', + }, + ]); + }); +}); + describe('useEnterpriseSearchBreadcrumbs', () => { beforeEach(() => { jest.clearAllMocks(); diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/kibana_chrome/generate_breadcrumbs.ts b/x-pack/plugins/enterprise_search/public/applications/shared/kibana_chrome/generate_breadcrumbs.ts index a0e912fbae149..3b4ac0fd316cd 100644 --- a/x-pack/plugins/enterprise_search/public/applications/shared/kibana_chrome/generate_breadcrumbs.ts +++ b/x-pack/plugins/enterprise_search/public/applications/shared/kibana_chrome/generate_breadcrumbs.ts @@ -17,6 +17,7 @@ import { ENTERPRISE_SEARCH_PRODUCT_NAME, ESRE_PLUGIN, SEARCH_EXPERIENCES_PLUGIN, + SEARCH_PRODUCT_NAME, VECTOR_SEARCH_PLUGIN, WORKPLACE_SEARCH_PLUGIN, } from '../../../../common/constants'; @@ -100,6 +101,16 @@ export const useEuiBreadcrumbs = (breadcrumbs: Breadcrumbs): EuiBreadcrumb[] => * Product-specific breadcrumb helpers */ +export const useSearchBreadcrumbs = (breadcrumbs: Breadcrumbs = []) => + useEuiBreadcrumbs([ + { + text: SEARCH_PRODUCT_NAME, + path: ENTERPRISE_SEARCH_OVERVIEW_PLUGIN.URL, + shouldNotCreateHref: true, + }, + ...breadcrumbs, + ]); + export const useEnterpriseSearchBreadcrumbs = (breadcrumbs: Breadcrumbs = []) => useEuiBreadcrumbs([ { @@ -111,13 +122,10 @@ export const useEnterpriseSearchBreadcrumbs = (breadcrumbs: Breadcrumbs = []) => ]); export const useAnalyticsBreadcrumbs = (breadcrumbs: Breadcrumbs = []) => - useEnterpriseSearchBreadcrumbs([{ text: ANALYTICS_PLUGIN.NAME, path: '/' }, ...breadcrumbs]); + useSearchBreadcrumbs([{ text: ANALYTICS_PLUGIN.NAME, path: '/' }, ...breadcrumbs]); export const useElasticsearchBreadcrumbs = (breadcrumbs: Breadcrumbs = []) => - useEnterpriseSearchBreadcrumbs([ - { text: 'Getting started with Elasticsearch', path: '/' }, - ...breadcrumbs, - ]); + useSearchBreadcrumbs([{ text: 'Getting started with Elasticsearch', path: '/' }, ...breadcrumbs]); export const useAppSearchBreadcrumbs = (breadcrumbs: Breadcrumbs = []) => useEnterpriseSearchBreadcrumbs([{ text: APP_SEARCH_PLUGIN.NAME, path: '/' }, ...breadcrumbs]); @@ -129,22 +137,19 @@ export const useWorkplaceSearchBreadcrumbs = (breadcrumbs: Breadcrumbs = []) => ]); export const useEnterpriseSearchContentBreadcrumbs = (breadcrumbs: Breadcrumbs = []) => - useEnterpriseSearchBreadcrumbs([ + useSearchBreadcrumbs([ { text: ENTERPRISE_SEARCH_CONTENT_PLUGIN.NAV_TITLE, path: '/' }, ...breadcrumbs, ]); export const useSearchExperiencesBreadcrumbs = (breadcrumbs: Breadcrumbs = []) => - useEnterpriseSearchBreadcrumbs([ - { text: SEARCH_EXPERIENCES_PLUGIN.NAV_TITLE, path: '/' }, - ...breadcrumbs, - ]); + useSearchBreadcrumbs([{ text: SEARCH_EXPERIENCES_PLUGIN.NAV_TITLE, path: '/' }, ...breadcrumbs]); export const useEnterpriseSearchApplicationsBreadcrumbs = (breadcrumbs: Breadcrumbs = []) => - useEnterpriseSearchBreadcrumbs(breadcrumbs); + useSearchBreadcrumbs(breadcrumbs); export const useEsreBreadcrumbs = (breadcrumbs: Breadcrumbs = []) => - useEnterpriseSearchBreadcrumbs([{ text: ESRE_PLUGIN.NAME, path: '/' }, ...breadcrumbs]); + useSearchBreadcrumbs([{ text: ESRE_PLUGIN.NAME, path: '/' }, ...breadcrumbs]); export const useVectorSearchBreadcrumbs = (breadcrumbs: Breadcrumbs = []) => - useEnterpriseSearchBreadcrumbs([{ text: VECTOR_SEARCH_PLUGIN.NAME, path: '/' }, ...breadcrumbs]); + useSearchBreadcrumbs([{ text: VECTOR_SEARCH_PLUGIN.NAV_TITLE, path: '/' }, ...breadcrumbs]); diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/kibana_chrome/set_chrome.test.tsx b/x-pack/plugins/enterprise_search/public/applications/shared/kibana_chrome/set_chrome.test.tsx index aaf8e119e7c00..9fd2799c81330 100644 --- a/x-pack/plugins/enterprise_search/public/applications/shared/kibana_chrome/set_chrome.test.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/shared/kibana_chrome/set_chrome.test.tsx @@ -15,12 +15,12 @@ import { shallow } from 'enzyme'; jest.mock('./generate_breadcrumbs', () => ({ useGenerateBreadcrumbs: jest.requireActual('./generate_breadcrumbs').useGenerateBreadcrumbs, - useEnterpriseSearchBreadcrumbs: jest.fn(() => (crumbs: any) => crumbs), + useSearchBreadcrumbs: jest.fn(() => (crumbs: any) => crumbs), useAppSearchBreadcrumbs: jest.fn(() => (crumbs: any) => crumbs), useWorkplaceSearchBreadcrumbs: jest.fn(() => (crumbs: any) => crumbs), })); import { - useEnterpriseSearchBreadcrumbs, + useSearchBreadcrumbs, useAppSearchBreadcrumbs, useWorkplaceSearchBreadcrumbs, } from './generate_breadcrumbs'; @@ -53,7 +53,7 @@ describe('Set Kibana Chrome helpers', () => { shallow(); expect(searchTitle).toHaveBeenCalledWith(['Hello World']); - expect(useEnterpriseSearchBreadcrumbs).toHaveBeenCalledWith([ + expect(useSearchBreadcrumbs).toHaveBeenCalledWith([ { text: 'Hello World', path: '/current-path', @@ -65,7 +65,7 @@ describe('Set Kibana Chrome helpers', () => { shallow(); expect(searchTitle).toHaveBeenCalledWith([]); - expect(useEnterpriseSearchBreadcrumbs).toHaveBeenCalledWith([]); + expect(useSearchBreadcrumbs).toHaveBeenCalledWith([]); }); }); diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/kibana_chrome/set_chrome.tsx b/x-pack/plugins/enterprise_search/public/applications/shared/kibana_chrome/set_chrome.tsx index 3e7384bd2e593..2ea7e352ced6f 100644 --- a/x-pack/plugins/enterprise_search/public/applications/shared/kibana_chrome/set_chrome.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/shared/kibana_chrome/set_chrome.tsx @@ -9,13 +9,13 @@ import React, { useEffect } from 'react'; import { useValues } from 'kea'; -import { APPLICATIONS_PLUGIN, VECTOR_SEARCH_PLUGIN } from '../../../../common/constants'; +import { APPLICATIONS_PLUGIN } from '../../../../common/constants'; import { KibanaLogic } from '../kibana'; import { useGenerateBreadcrumbs, - useEnterpriseSearchBreadcrumbs, + useSearchBreadcrumbs, useEnterpriseSearchApplicationsBreadcrumbs, useAnalyticsBreadcrumbs, useEnterpriseSearchContentBreadcrumbs, @@ -64,7 +64,7 @@ export const SetSearchChrome: React.FC = ({ trail = [] }) => { const docTitle = searchTitle(title); const crumbs = useGenerateBreadcrumbs(trail); - const breadcrumbs = useEnterpriseSearchBreadcrumbs(crumbs); + const breadcrumbs = useSearchBreadcrumbs(crumbs); useEffect(() => { setBreadcrumbs(breadcrumbs); @@ -217,9 +217,7 @@ export const SetVectorSearchChrome: React.FC = ({ trail = [] }) const title = reverseArray(trail); const docTitle = vectorSearchTitle(title); - const breadcrumbs = useVectorSearchBreadcrumbs( - useGenerateBreadcrumbs([VECTOR_SEARCH_PLUGIN.NAV_TITLE, ...trail]) - ); + const breadcrumbs = useVectorSearchBreadcrumbs(useGenerateBreadcrumbs(trail)); useEffect(() => { setBreadcrumbs(breadcrumbs);