diff --git a/awx/ui/src/screens/ActivityStream/ActivityStream.js b/awx/ui/src/screens/ActivityStream/ActivityStream.js index bb54049772..209da83669 100644 --- a/awx/ui/src/screens/ActivityStream/ActivityStream.js +++ b/awx/ui/src/screens/ActivityStream/ActivityStream.js @@ -188,6 +188,10 @@ function ActivityStream() { > {t`Notification Templates`} + {t`Instances`} {t`Instance Groups`} diff --git a/awx/ui/src/screens/InstanceGroup/InstanceGroups.js b/awx/ui/src/screens/InstanceGroup/InstanceGroups.js index 3f92aa6abe..c4ca94541e 100644 --- a/awx/ui/src/screens/InstanceGroup/InstanceGroups.js +++ b/awx/ui/src/screens/InstanceGroup/InstanceGroups.js @@ -1,7 +1,7 @@ import React, { useCallback, useEffect, useState } from 'react'; import { t } from '@lingui/macro'; -import { Route, Switch } from 'react-router-dom'; +import { Route, Switch, useLocation } from 'react-router-dom'; import useRequest from 'hooks/useRequest'; import { SettingsAPI } from 'api'; @@ -14,6 +14,7 @@ import ContainerGroupAdd from './ContainerGroupAdd'; import ContainerGroup from './ContainerGroup'; function InstanceGroups() { + const { pathname } = useLocation(); const { request: settingsRequest, isLoading: isSettingsRequestLoading, @@ -62,10 +63,14 @@ function InstanceGroups() { }); }, []); + const streamType = pathname.includes('instances') + ? 'instance' + : 'instance_group'; + return ( <> diff --git a/awx/ui/src/screens/InstanceGroup/InstanceGroups.test.js b/awx/ui/src/screens/InstanceGroup/InstanceGroups.test.js index 1a310dbe1b..fdd53c6e8f 100644 --- a/awx/ui/src/screens/InstanceGroup/InstanceGroups.test.js +++ b/awx/ui/src/screens/InstanceGroup/InstanceGroups.test.js @@ -1,10 +1,20 @@ import React from 'react'; import { shallow } from 'enzyme'; - +import { InstanceGroupsAPI } from 'api'; import InstanceGroups from './InstanceGroups'; +const mockUseLocationValue = { + pathname: '', +}; +jest.mock('api'); +jest.mock('react-router-dom', () => ({ + ...jest.requireActual('react-router-dom'), + useLocation: () => mockUseLocationValue, +})); describe('', () => { test('should set breadcrumbs', () => { + mockUseLocationValue.pathname = '/instance_groups'; + const wrapper = shallow(); const header = wrapper.find('ScreenHeader'); @@ -15,4 +25,17 @@ describe('', () => { '/instance_groups/container_group/add': 'Create new container group', }); }); + test('should set breadcrumbs', async () => { + mockUseLocationValue.pathname = '/instance_groups/1/instances'; + InstanceGroupsAPI.readInstances.mockResolvedValue({ + data: { results: [{ hostname: 'EC2', id: 1 }] }, + }); + InstanceGroupsAPI.readInstanceOptions.mockResolvedValue({ + data: { actions: {} }, + }); + + const wrapper = shallow(); + + expect(wrapper.find('ScreenHeader').prop('streamType')).toEqual('instance'); + }); });