Skip to content

Commit

Permalink
[Enterprise Search] Final KibanaPageTemplate cleanup (elastic#103355)
Browse files Browse the repository at this point in the history
* [AS] Delete AppSearchNav and EngineNav

* [WS] Delete WorkplaceSearchNav

* [Shared] Delete custom Layout & SideNav components
Constance authored Jun 24, 2021

Unverified

This commit is not signed, but one or more authors requires that any commit attributed to them is signed.
1 parent bd2215f commit 803d0fa
Showing 18 changed files with 18 additions and 1,233 deletions.
Original file line number Diff line number Diff line change
@@ -10,7 +10,6 @@ import { mockUseRouteMatch } from '../../../__mocks__/react_router';
import { mockEngineValues } from '../../__mocks__';

jest.mock('../../../shared/layout', () => ({
...jest.requireActual('../../../shared/layout'), // TODO: Remove once side nav components are gone
generateNavLink: jest.fn(({ to }) => ({ href: to })),
}));

@@ -20,9 +19,7 @@ import { shallow } from 'enzyme';

import { EuiBadge, EuiIcon } from '@elastic/eui';

import { rerender } from '../../../test_helpers';

import { useEngineNav, EngineNav } from './engine_nav';
import { useEngineNav } from './engine_nav';

describe('useEngineNav', () => {
const values = { ...mockEngineValues, myRole: {}, dataLoading: false };
@@ -321,182 +318,3 @@ describe('useEngineNav', () => {
});
});
});

describe('EngineNav', () => {
const values = { ...mockEngineValues, myRole: {}, dataLoading: false };

beforeEach(() => {
setMockValues(values);
});

it('does not render if async data is still loading', () => {
setMockValues({ ...values, dataLoading: true });
const wrapper = shallow(<EngineNav />);
expect(wrapper.isEmptyRender()).toBe(true);
});

it('does not render without an engine name', () => {
setMockValues({ ...values, engineName: '' });
const wrapper = shallow(<EngineNav />);
expect(wrapper.isEmptyRender()).toBe(true);
});

it('renders an engine label and badges', () => {
setMockValues({ ...values, isSampleEngine: false, isMetaEngine: false });
const wrapper = shallow(<EngineNav />);
const label = wrapper.find('[data-test-subj="EngineLabel"]').find('.eui-textTruncate');

expect(label.text()).toEqual('SOME-ENGINE');
expect(wrapper.find(EuiBadge)).toHaveLength(0);

setMockValues({ ...values, isSampleEngine: true });
rerender(wrapper);
expect(wrapper.find(EuiBadge).prop('children')).toEqual('SAMPLE ENGINE');

setMockValues({ ...values, isMetaEngine: true });
rerender(wrapper);
expect(wrapper.find(EuiBadge).prop('children')).toEqual('META ENGINE');
});

it('renders a default engine overview link', () => {
const wrapper = shallow(<EngineNav />);
expect(wrapper.find('[data-test-subj="EngineOverviewLink"]')).toHaveLength(1);
});

it('renders an analytics link', () => {
setMockValues({ ...values, myRole: { canViewEngineAnalytics: true } });
const wrapper = shallow(<EngineNav />);
expect(wrapper.find('[data-test-subj="EngineAnalyticsLink"]')).toHaveLength(1);
});

it('renders a documents link', () => {
setMockValues({ ...values, myRole: { canViewEngineDocuments: true } });
const wrapper = shallow(<EngineNav />);
expect(wrapper.find('[data-test-subj="EngineDocumentsLink"]')).toHaveLength(1);
});

it('renders a schema link', () => {
setMockValues({ ...values, myRole: { canViewEngineSchema: true } });
const wrapper = shallow(<EngineNav />);
expect(wrapper.find('[data-test-subj="EngineSchemaLink"]')).toHaveLength(1);
});

describe('schema nav icons', () => {
const myRole = { canViewEngineSchema: true };

it('renders schema errors alert icon', () => {
setMockValues({ ...values, myRole, hasSchemaErrors: true });
const wrapper = shallow(<EngineNav />);
expect(wrapper.find('[data-test-subj="EngineNavSchemaErrors"]')).toHaveLength(1);
});

it('renders unconfirmed schema fields info icon', () => {
setMockValues({ ...values, myRole, hasUnconfirmedSchemaFields: true });
const wrapper = shallow(<EngineNav />);
expect(wrapper.find('[data-test-subj="EngineNavSchemaUnconfirmedFields"]')).toHaveLength(1);
});

it('renders schema conflicts alert icon', () => {
setMockValues({ ...values, myRole, hasSchemaConflicts: true });
const wrapper = shallow(<EngineNav />);
expect(wrapper.find('[data-test-subj="EngineNavSchemaConflicts"]')).toHaveLength(1);
});
});

describe('crawler link', () => {
const myRole = { canViewEngineCrawler: true };

it('renders', () => {
setMockValues({ ...values, myRole });
const wrapper = shallow(<EngineNav />);
expect(wrapper.find('[data-test-subj="EngineCrawlerLink"]')).toHaveLength(1);
});

it('does not render for meta engines', () => {
setMockValues({ ...values, myRole, isMetaEngine: true });
const wrapper = shallow(<EngineNav />);
expect(wrapper.find('[data-test-subj="EngineCrawlerLink"]')).toHaveLength(0);
});
});

describe('meta engine source engines link', () => {
const myRole = { canViewMetaEngineSourceEngines: true };

it('renders', () => {
setMockValues({ ...values, myRole, isMetaEngine: true });
const wrapper = shallow(<EngineNav />);
expect(wrapper.find('[data-test-subj="MetaEngineEnginesLink"]')).toHaveLength(1);
});

it('does not render for non meta engines', () => {
setMockValues({ ...values, myRole, isMetaEngine: false });
const wrapper = shallow(<EngineNav />);
expect(wrapper.find('[data-test-subj="MetaEngineEnginesLink"]')).toHaveLength(0);
});
});

it('renders a relevance tuning link', () => {
setMockValues({ ...values, myRole: { canManageEngineRelevanceTuning: true } });
const wrapper = shallow(<EngineNav />);
expect(wrapper.find('[data-test-subj="EngineRelevanceTuningLink"]')).toHaveLength(1);
});

describe('relevance tuning nav icons', () => {
const myRole = { canManageEngineRelevanceTuning: true };

it('renders unconfirmed schema fields info icon', () => {
const engine = { unsearchedUnconfirmedFields: true };
setMockValues({ ...values, myRole, engine });
const wrapper = shallow(<EngineNav />);
expect(
wrapper.find('[data-test-subj="EngineNavRelevanceTuningUnsearchedFields"]')
).toHaveLength(1);
});

it('renders schema conflicts alert icon', () => {
const engine = { invalidBoosts: true };
setMockValues({ ...values, myRole, engine });
const wrapper = shallow(<EngineNav />);
expect(wrapper.find('[data-test-subj="EngineNavRelevanceTuningInvalidBoosts"]')).toHaveLength(
1
);
});

it('can render multiple icons', () => {
const engine = { invalidBoosts: true, unsearchedUnconfirmedFields: true };
setMockValues({ ...values, myRole, engine });
const wrapper = shallow(<EngineNav />);
expect(wrapper.find(EuiIcon)).toHaveLength(2);
});
});

it('renders a synonyms link', () => {
setMockValues({ ...values, myRole: { canManageEngineSynonyms: true } });
const wrapper = shallow(<EngineNav />);
expect(wrapper.find('[data-test-subj="EngineSynonymsLink"]')).toHaveLength(1);
});

it('renders a curations link', () => {
setMockValues({ ...values, myRole: { canManageEngineCurations: true } });
const wrapper = shallow(<EngineNav />);
expect(wrapper.find('[data-test-subj="EngineCurationsLink"]')).toHaveLength(1);
});

it('renders a results settings link', () => {
setMockValues({ ...values, myRole: { canManageEngineResultSettings: true } });
const wrapper = shallow(<EngineNav />);
expect(wrapper.find('[data-test-subj="EngineResultSettingsLink"]')).toHaveLength(1);
});

it('renders a Search UI link', () => {
setMockValues({ ...values, myRole: { canManageEngineSearchUi: true } });
const wrapper = shallow(<EngineNav />);
expect(wrapper.find('[data-test-subj="EngineSearchUILink"]')).toHaveLength(1);
});

it('renders an API logs link', () => {
setMockValues({ ...values, myRole: { canViewEngineApiLogs: true } });
const wrapper = shallow(<EngineNav />);
expect(wrapper.find('[data-test-subj="EngineAPILogsLink"]')).toHaveLength(1);
});
});
Original file line number Diff line number Diff line change
@@ -10,17 +10,10 @@ import { useRouteMatch } from 'react-router-dom';

import { useValues } from 'kea';

import {
EuiSideNavItemType,
EuiText,
EuiBadge,
EuiIcon,
EuiFlexGroup,
EuiFlexItem,
} from '@elastic/eui';
import { EuiSideNavItemType, EuiText, EuiBadge, EuiIcon } from '@elastic/eui';
import { i18n } from '@kbn/i18n';

import { generateNavLink, SideNavLink, SideNavItem } from '../../../shared/layout';
import { generateNavLink } from '../../../shared/layout';
import { AppLogic } from '../../app_logic';
import {
ENGINE_PATH,
@@ -49,8 +42,6 @@ import { SCHEMA_TITLE } from '../schema';
import { SEARCH_UI_TITLE } from '../search_ui';
import { SYNONYMS_TITLE } from '../synonyms';

import { EngineDetails } from './types';

import { EngineLogic, generateEnginePath } from './';

import './engine_nav.scss';
@@ -198,7 +189,10 @@ export const useEngineNav = () => {
navItems.push({
id: 'crawler',
name: CRAWLER_TITLE,
...generateNavLink({ to: generateEnginePath(ENGINE_CRAWLER_PATH) }),
...generateNavLink({
to: generateEnginePath(ENGINE_CRAWLER_PATH),
shouldShowActiveForSubroutes: true,
}),
'data-test-subj': 'EngineCrawlerLink',
});
}
@@ -301,220 +295,3 @@ export const useEngineNav = () => {

return navItems;
};

// TODO: Delete the below once page template migration is complete

export const EngineNav: React.FC = () => {
const {
myRole: {
canViewEngineAnalytics,
canViewEngineDocuments,
canViewEngineSchema,
canViewEngineCrawler,
canViewMetaEngineSourceEngines,
canManageEngineSynonyms,
canManageEngineCurations,
canManageEngineRelevanceTuning,
canManageEngineResultSettings,
canManageEngineSearchUi,
canViewEngineApiLogs,
},
} = useValues(AppLogic);

const {
engineName,
dataLoading,
isSampleEngine,
isMetaEngine,
hasSchemaErrors,
hasSchemaConflicts,
hasUnconfirmedSchemaFields,
engine,
} = useValues(EngineLogic);

if (dataLoading) return null;
if (!engineName) return null;

const { invalidBoosts, unsearchedUnconfirmedFields } = engine as Required<EngineDetails>;

return (
<>
<SideNavItem className="appSearchNavEngineLabel" data-test-subj="EngineLabel">
<EuiText color="subdued" size="s">
<div className="eui-textTruncate">{engineName.toUpperCase()}</div>
{isSampleEngine && (
<EuiBadge>
{i18n.translate('xpack.enterpriseSearch.appSearch.engine.sampleEngineBadge', {
defaultMessage: 'SAMPLE ENGINE',
})}
</EuiBadge>
)}
{isMetaEngine && (
<EuiBadge>
{i18n.translate('xpack.enterpriseSearch.appSearch.engine.metaEngineBadge', {
defaultMessage: 'META ENGINE',
})}
</EuiBadge>
)}
</EuiText>
</SideNavItem>
<SideNavLink to={generateEnginePath(ENGINE_PATH)} data-test-subj="EngineOverviewLink">
{OVERVIEW_TITLE}
</SideNavLink>
{canViewEngineAnalytics && (
<SideNavLink
to={generateEnginePath(ENGINE_ANALYTICS_PATH)}
shouldShowActiveForSubroutes
data-test-subj="EngineAnalyticsLink"
>
{ANALYTICS_TITLE}
</SideNavLink>
)}
{canViewEngineDocuments && (
<SideNavLink
to={generateEnginePath(ENGINE_DOCUMENTS_PATH)}
shouldShowActiveForSubroutes
data-test-subj="EngineDocumentsLink"
>
{DOCUMENTS_TITLE}
</SideNavLink>
)}
{canViewEngineSchema && (
<SideNavLink
to={generateEnginePath(ENGINE_SCHEMA_PATH)}
shouldShowActiveForSubroutes
data-test-subj="EngineSchemaLink"
>
<EuiFlexGroup justifyContent="spaceBetween" gutterSize="none" responsive={false}>
<EuiFlexItem>{SCHEMA_TITLE}</EuiFlexItem>
<EuiFlexItem className="appSearchNavIcons">
{hasSchemaErrors && (
<EuiIcon
type="alert"
color="danger"
title={i18n.translate('xpack.enterpriseSearch.appSearch.engine.schema.errors', {
defaultMessage: 'Schema change errors',
})}
data-test-subj="EngineNavSchemaErrors"
/>
)}
{hasUnconfirmedSchemaFields && (
<EuiIcon
type="iInCircle"
color="primary"
title={i18n.translate(
'xpack.enterpriseSearch.appSearch.engine.schema.unconfirmedFields',
{ defaultMessage: 'New unconfirmed fields' }
)}
data-test-subj="EngineNavSchemaUnconfirmedFields"
/>
)}
{hasSchemaConflicts && (
<EuiIcon
type="alert"
color="warning"
title={i18n.translate(
'xpack.enterpriseSearch.appSearch.engine.schema.conflicts',
{ defaultMessage: 'Schema conflicts' }
)}
data-test-subj="EngineNavSchemaConflicts"
/>
)}
</EuiFlexItem>
</EuiFlexGroup>
</SideNavLink>
)}
{canViewEngineCrawler && !isMetaEngine && (
<SideNavLink
to={generateEnginePath(ENGINE_CRAWLER_PATH)}
data-test-subj="EngineCrawlerLink"
>
{CRAWLER_TITLE}
</SideNavLink>
)}
{canViewMetaEngineSourceEngines && isMetaEngine && (
<SideNavLink
to={generateEnginePath(META_ENGINE_SOURCE_ENGINES_PATH)}
data-test-subj="MetaEngineEnginesLink"
>
{ENGINES_TITLE}
</SideNavLink>
)}
{canManageEngineRelevanceTuning && (
<SideNavLink
to={generateEnginePath(ENGINE_RELEVANCE_TUNING_PATH)}
data-test-subj="EngineRelevanceTuningLink"
>
<EuiFlexGroup justifyContent="spaceBetween" gutterSize="none" responsive={false}>
<EuiFlexItem>{RELEVANCE_TUNING_TITLE}</EuiFlexItem>
<EuiFlexItem className="appSearchNavIcons">
{invalidBoosts && (
<EuiIcon
type="alert"
color="warning"
title={i18n.translate(
'xpack.enterpriseSearch.appSearch.engine.relevanceTuning.invalidBoosts',
{ defaultMessage: 'Invalid boosts' }
)}
data-test-subj="EngineNavRelevanceTuningInvalidBoosts"
/>
)}
{unsearchedUnconfirmedFields && (
<EuiIcon
type="alert"
color="warning"
title={i18n.translate(
'xpack.enterpriseSearch.appSearch.engine.relevanceTuning.unsearchedFields',
{ defaultMessage: 'Unsearched fields' }
)}
data-test-subj="EngineNavRelevanceTuningUnsearchedFields"
/>
)}
</EuiFlexItem>
</EuiFlexGroup>
</SideNavLink>
)}
{canManageEngineSynonyms && (
<SideNavLink
to={generateEnginePath(ENGINE_SYNONYMS_PATH)}
data-test-subj="EngineSynonymsLink"
>
{SYNONYMS_TITLE}
</SideNavLink>
)}
{canManageEngineCurations && (
<SideNavLink
to={generateEnginePath(ENGINE_CURATIONS_PATH)}
shouldShowActiveForSubroutes
data-test-subj="EngineCurationsLink"
>
{CURATIONS_TITLE}
</SideNavLink>
)}
{canManageEngineResultSettings && (
<SideNavLink
to={generateEnginePath(ENGINE_RESULT_SETTINGS_PATH)}
data-test-subj="EngineResultSettingsLink"
>
{RESULT_SETTINGS_TITLE}
</SideNavLink>
)}
{canManageEngineSearchUi && (
<SideNavLink
to={generateEnginePath(ENGINE_SEARCH_UI_PATH)}
data-test-subj="EngineSearchUILink"
>
{SEARCH_UI_TITLE}
</SideNavLink>
)}
{canViewEngineApiLogs && (
<SideNavLink
to={generateEnginePath(ENGINE_API_LOGS_PATH)}
data-test-subj="EngineAPILogsLink"
>
{API_LOGS_TITLE}
</SideNavLink>
)}
</>
);
};
Original file line number Diff line number Diff line change
@@ -6,6 +6,5 @@
*/

export { EngineRouter } from './engine_router';
export { EngineNav } from './engine_nav';
export { EngineLogic } from './engine_logic';
export { generateEnginePath, getEngineBreadcrumbs } from './utils';
Original file line number Diff line number Diff line change
@@ -7,7 +7,6 @@

import { DEFAULT_INITIAL_APP_DATA } from '../../../common/__mocks__';
import { setMockValues } from '../__mocks__/kea_logic';
import { mockUseRouteMatch } from '../__mocks__/react_router';
import '../__mocks__/shallow_useeffect.mock';
import '../__mocks__/enterprise_search_url.mock';

@@ -17,15 +16,13 @@ import { Redirect } from 'react-router-dom';

import { shallow, ShallowWrapper } from 'enzyme';

import { SideNav, SideNavLink } from '../shared/layout';

import { rerender } from '../test_helpers';

jest.mock('./app_logic', () => ({ AppLogic: jest.fn() }));
import { AppLogic } from './app_logic';

import { Credentials } from './components/credentials';
import { EngineRouter, EngineNav } from './components/engine';
import { EngineRouter } from './components/engine';
import { EngineCreation } from './components/engine_creation';
import { EnginesOverview } from './components/engines';
import { ErrorConnecting } from './components/error_connecting';
@@ -35,7 +32,7 @@ import { RoleMappings } from './components/role_mappings';
import { Settings } from './components/settings';
import { SetupGuide } from './components/setup_guide';

import { AppSearch, AppSearchUnconfigured, AppSearchConfigured, AppSearchNav } from './';
import { AppSearch, AppSearchUnconfigured, AppSearchConfigured } from './';

describe('AppSearch', () => {
it('always renders the Setup Guide', () => {
@@ -142,51 +139,3 @@ describe('AppSearchConfigured', () => {
});
});
});

describe('AppSearchNav', () => {
it('renders with the Engines link', () => {
const wrapper = shallow(<AppSearchNav />);

expect(wrapper.find(SideNav)).toHaveLength(1);
expect(wrapper.find(SideNavLink).prop('to')).toEqual('/engines');
});

describe('engine subnavigation', () => {
const getEnginesLink = (wrapper: ShallowWrapper) => wrapper.find(SideNavLink).dive();

it('does not render the engine subnav on top-level routes', () => {
mockUseRouteMatch.mockReturnValueOnce(false);
const wrapper = shallow(<AppSearchNav />);

expect(getEnginesLink(wrapper).find(EngineNav)).toHaveLength(0);
});

it('renders the engine subnav if currently on an engine route', () => {
mockUseRouteMatch.mockReturnValueOnce(true);
const wrapper = shallow(<AppSearchNav />);

expect(getEnginesLink(wrapper).find(EngineNav)).toHaveLength(1);
});
});

it('renders the Settings link', () => {
setMockValues({ myRole: { canViewSettings: true } });
const wrapper = shallow(<AppSearchNav />);

expect(wrapper.find(SideNavLink).last().prop('to')).toEqual('/settings');
});

it('renders the Credentials link', () => {
setMockValues({ myRole: { canViewAccountCredentials: true } });
const wrapper = shallow(<AppSearchNav />);

expect(wrapper.find(SideNavLink).last().prop('to')).toEqual('/credentials');
});

it('renders the Role Mappings link', () => {
setMockValues({ myRole: { canViewRoleMappings: true } });
const wrapper = shallow(<AppSearchNav />);

expect(wrapper.find(SideNavLink).last().prop('to')).toEqual('/users_and_roles');
});
});
Original file line number Diff line number Diff line change
@@ -6,30 +6,26 @@
*/

import React, { useEffect } from 'react';
import { Route, Redirect, Switch, useRouteMatch } from 'react-router-dom';
import { Route, Redirect, Switch } from 'react-router-dom';

import { useValues } from 'kea';

import { APP_SEARCH_PLUGIN } from '../../../common/constants';
import { InitialAppData } from '../../../common/types';
import { HttpLogic } from '../shared/http';
import { KibanaLogic } from '../shared/kibana';
import { SideNav, SideNavLink } from '../shared/layout';

import { ROLE_MAPPINGS_TITLE } from '../shared/role_mapping/constants';

import { AppLogic } from './app_logic';
import { Credentials, CREDENTIALS_TITLE } from './components/credentials';
import { EngineNav, EngineRouter } from './components/engine';
import { Credentials } from './components/credentials';
import { EngineRouter } from './components/engine';
import { EngineCreation } from './components/engine_creation';
import { EnginesOverview, ENGINES_TITLE } from './components/engines';
import { EnginesOverview } from './components/engines';
import { ErrorConnecting } from './components/error_connecting';
import { KibanaHeaderActions } from './components/layout';
import { Library } from './components/library';
import { MetaEngineCreation } from './components/meta_engine_creation';
import { NotFound } from './components/not_found';
import { RoleMappings } from './components/role_mappings';
import { Settings, SETTINGS_TITLE } from './components/settings';
import { Settings } from './components/settings';
import { SetupGuide } from './components/setup_guide';
import {
ENGINE_CREATION_PATH,
@@ -137,28 +133,3 @@ export const AppSearchConfigured: React.FC<Required<InitialAppData>> = (props) =
</Switch>
);
};

export const AppSearchNav: React.FC = () => {
const {
myRole: { canViewSettings, canViewAccountCredentials, canViewRoleMappings },
} = useValues(AppLogic);

const isEngineRoute = !!useRouteMatch(ENGINE_PATH);

return (
<SideNav product={APP_SEARCH_PLUGIN}>
<SideNavLink to={ENGINES_PATH} subNav={isEngineRoute ? <EngineNav /> : null} isRoot>
{ENGINES_TITLE}
</SideNavLink>
{canViewSettings && <SideNavLink to={SETTINGS_PATH}>{SETTINGS_TITLE}</SideNavLink>}
{canViewAccountCredentials && (
<SideNavLink to={CREDENTIALS_PATH}>{CREDENTIALS_TITLE}</SideNavLink>
)}
{canViewRoleMappings && (
<SideNavLink shouldShowActiveForSubroutes to={USERS_AND_ROLES_PATH}>
{ROLE_MAPPINGS_TITLE}
</SideNavLink>
)}
</SideNav>
);
};
Original file line number Diff line number Diff line change
@@ -7,7 +7,3 @@

export { EnterpriseSearchPageTemplate, PageTemplateProps } from './page_template';
export { generateNavLink } from './nav_link_helpers';

// TODO: Delete these once KibanaPageTemplate migration is done
export { Layout } from './layout';
export { SideNav, SideNavLink, SideNavItem } from './side_nav';

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -6,7 +6,7 @@
*/

export { WorkplaceSearchPageTemplate } from './page_template';
export { useWorkplaceSearchNav, WorkplaceSearchNav } from './nav';
export { useWorkplaceSearchNav } from './nav';
export { WorkplaceSearchHeaderActions } from './kibana_header_actions';
export { AccountHeader } from './account_header';
export { PersonalDashboardLayout } from './personal_dashboard_layout';
Original file line number Diff line number Diff line change
@@ -6,7 +6,6 @@
*/

jest.mock('../../../shared/layout', () => ({
...jest.requireActual('../../../shared/layout'),
generateNavLink: jest.fn(({ to, items }) => ({ href: to, items })),
}));
jest.mock('../../views/content_sources/components/source_sub_nav', () => ({
@@ -19,13 +18,7 @@ jest.mock('../../views/settings/components/settings_sub_nav', () => ({
useSettingsSubNav: () => [],
}));

import React from 'react';

import { shallow } from 'enzyme';

import { SideNav, SideNavLink } from '../../../shared/layout';

import { useWorkplaceSearchNav, WorkplaceSearchNav } from './';
import { useWorkplaceSearchNav } from './';

describe('useWorkplaceSearchNav', () => {
it('returns an array of top-level Workplace Search nav items', () => {
@@ -72,15 +65,3 @@ describe('useWorkplaceSearchNav', () => {
]);
});
});

// TODO: Delete below once fully migrated to KibanaPageTemplate

describe('WorkplaceSearchNav', () => {
it('renders', () => {
const wrapper = shallow(<WorkplaceSearchNav />);

expect(wrapper.find(SideNav)).toHaveLength(1);
expect(wrapper.find(SideNavLink).first().prop('to')).toEqual('/');
expect(wrapper.find(SideNavLink)).toHaveLength(6);
});
});
Original file line number Diff line number Diff line change
@@ -5,12 +5,9 @@
* 2.0.
*/

import React from 'react';
import { EuiSideNavItemType } from '@elastic/eui';

import { EuiSideNavItemType, EuiSpacer } from '@elastic/eui';

import { WORKPLACE_SEARCH_PLUGIN } from '../../../../../common/constants';
import { generateNavLink, SideNav, SideNavLink } from '../../../shared/layout';
import { generateNavLink } from '../../../shared/layout';
import { NAV } from '../../constants';
import {
SOURCES_PATH,
@@ -68,37 +65,3 @@ export const useWorkplaceSearchNav = () => {
// to cause all our navItems to properly render as nav links.
return [{ id: '', name: '', items: navItems }];
};

// TODO: Delete below once fully migrated to KibanaPageTemplate

interface Props {
sourcesSubNav?: React.ReactNode;
groupsSubNav?: React.ReactNode;
settingsSubNav?: React.ReactNode;
}

export const WorkplaceSearchNav: React.FC<Props> = ({
sourcesSubNav,
groupsSubNav,
settingsSubNav,
}) => (
<SideNav product={WORKPLACE_SEARCH_PLUGIN}>
<SideNavLink to="/" isRoot>
{NAV.OVERVIEW}
</SideNavLink>
<SideNavLink to={SOURCES_PATH} subNav={sourcesSubNav}>
{NAV.SOURCES}
</SideNavLink>
<SideNavLink to={GROUPS_PATH} subNav={groupsSubNav}>
{NAV.GROUPS}
</SideNavLink>
<SideNavLink shouldShowActiveForSubroutes to={USERS_AND_ROLES_PATH}>
{NAV.ROLE_MAPPINGS}
</SideNavLink>
<SideNavLink to={SECURITY_PATH}>{NAV.SECURITY}</SideNavLink>
<SideNavLink subNav={settingsSubNav} to={ORG_SETTINGS_PATH}>
{NAV.SETTINGS}
</SideNavLink>
<EuiSpacer />
</SideNav>
);
3 changes: 0 additions & 3 deletions x-pack/plugins/translations/translations/ja-JP.json
Original file line number Diff line number Diff line change
@@ -7884,9 +7884,6 @@
"xpack.enterpriseSearch.featureCatalogueDescription2": "ユーザーを関連するデータにつなげます。",
"xpack.enterpriseSearch.featureCatalogueDescription3": "チームの内容を統合します。",
"xpack.enterpriseSearch.hiddenText": "非表示のテキスト",
"xpack.enterpriseSearch.nav.hierarchy": "セカンダリ",
"xpack.enterpriseSearch.nav.menu": "メニュー",
"xpack.enterpriseSearch.nav.toggleMenu": "セカンダリナビゲーションを切り替える",
"xpack.enterpriseSearch.navTitle": "概要",
"xpack.enterpriseSearch.notFound.action1": "ダッシュボードに戻す",
"xpack.enterpriseSearch.notFound.action2": "サポートに問い合わせる",
3 changes: 0 additions & 3 deletions x-pack/plugins/translations/translations/zh-CN.json
Original file line number Diff line number Diff line change
@@ -7952,9 +7952,6 @@
"xpack.enterpriseSearch.featureCatalogueDescription2": "将您的用户连接到相关数据。",
"xpack.enterpriseSearch.featureCatalogueDescription3": "统一您的团队内容。",
"xpack.enterpriseSearch.hiddenText": "隐藏文本",
"xpack.enterpriseSearch.nav.hierarchy": "次级",
"xpack.enterpriseSearch.nav.menu": "菜单",
"xpack.enterpriseSearch.nav.toggleMenu": "切换次级导航",
"xpack.enterpriseSearch.navTitle": "概览",
"xpack.enterpriseSearch.notFound.action1": "返回到您的仪表板",
"xpack.enterpriseSearch.notFound.action2": "联系支持人员",

0 comments on commit 803d0fa

Please sign in to comment.