Rename users and access tabs

Rename users and access tabs

See: https://github.com/ansible/awx/issues/7595
This commit is contained in:
nixocio
2020-10-21 17:12:52 -04:00
parent 81a79c30cb
commit dcc3422484
8 changed files with 32 additions and 30 deletions

View File

@@ -21,7 +21,7 @@ import UserEdit from './UserEdit';
import UserOrganizations from './UserOrganizations'; import UserOrganizations from './UserOrganizations';
import UserTeams from './UserTeams'; import UserTeams from './UserTeams';
import UserTokens from './UserTokens'; import UserTokens from './UserTokens';
import UserAccessList from './UserAccess/UserAccessList'; import UserRolesList from './UserRoles/UserRolesList';
function User({ i18n, setBreadcrumb, me }) { function User({ i18n, setBreadcrumb, me }) {
const location = useLocation(); const location = useLocation();
@@ -68,7 +68,7 @@ function User({ i18n, setBreadcrumb, me }) {
id: 1, id: 1,
}, },
{ name: i18n._(t`Teams`), link: `${match.url}/teams`, id: 2 }, { name: i18n._(t`Teams`), link: `${match.url}/teams`, id: 2 },
{ name: i18n._(t`Access`), link: `${match.url}/access`, id: 3 }, { name: i18n._(t`Roles`), link: `${match.url}/roles`, id: 3 },
]; ];
if (me?.id === Number(match.params.id)) { if (me?.id === Number(match.params.id)) {
@@ -128,8 +128,8 @@ function User({ i18n, setBreadcrumb, me }) {
<UserTeams userId={Number(match.params.id)} /> <UserTeams userId={Number(match.params.id)} />
</Route> </Route>
{user && ( {user && (
<Route path="/users/:id/access"> <Route path="/users/:id/roles">
<UserAccessList user={user} /> <UserRolesList user={user} />
</Route> </Route>
)} )}
<Route path="/users/:id/tokens"> <Route path="/users/:id/tokens">

View File

@@ -1,2 +0,0 @@
export { default as UserAccessList } from './UserAccessList';
export { default as UserAccessListItem } from './UserAccessListItem';

View File

@@ -18,7 +18,7 @@ import ErrorDetail from '../../../components/ErrorDetail';
import AlertModal from '../../../components/AlertModal'; import AlertModal from '../../../components/AlertModal';
import DatalistToolbar from '../../../components/DataListToolbar'; import DatalistToolbar from '../../../components/DataListToolbar';
import UserAccessListItem from './UserAccessListItem'; import UserRolesListItem from './UserRolesListItem';
import UserAndTeamAccessAdd from '../../../components/UserAndTeamAccessAdd/UserAndTeamAccessAdd'; import UserAndTeamAccessAdd from '../../../components/UserAndTeamAccessAdd/UserAndTeamAccessAdd';
const QS_CONFIG = getQSConfig('roles', { const QS_CONFIG = getQSConfig('roles', {
@@ -29,7 +29,7 @@ const QS_CONFIG = getQSConfig('roles', {
// TODO Figure out how to best conduct a search of this list. // TODO Figure out how to best conduct a search of this list.
// Since we only have a role ID in the top level of each role object // Since we only have a role ID in the top level of each role object
// we can't really search using the normal search parameters. // we can't really search using the normal search parameters.
function UserAccessList({ i18n, user }) { function UserRolesList({ i18n, user }) {
const { search } = useLocation(); const { search } = useLocation();
const [isWizardOpen, setIsWizardOpen] = useState(false); const [isWizardOpen, setIsWizardOpen] = useState(false);
const [roleToDisassociate, setRoleToDisassociate] = useState(null); const [roleToDisassociate, setRoleToDisassociate] = useState(null);
@@ -164,7 +164,7 @@ function UserAccessList({ i18n, user }) {
toolbarRelatedSearchableKeys={relatedSearchableKeys} toolbarRelatedSearchableKeys={relatedSearchableKeys}
renderItem={role => { renderItem={role => {
return ( return (
<UserAccessListItem <UserRolesListItem
key={role.id} key={role.id}
value={role.name} value={role.name}
role={role} role={role}
@@ -256,4 +256,4 @@ function UserAccessList({ i18n, user }) {
</> </>
); );
} }
export default withI18n()(UserAccessList); export default withI18n()(UserRolesList);

View File

@@ -5,7 +5,7 @@ import {
mountWithContexts, mountWithContexts,
waitForElement, waitForElement,
} from '../../../../testUtils/enzymeHelpers'; } from '../../../../testUtils/enzymeHelpers';
import UserAccessList from './UserAccessList'; import UserRolesList from './UserRolesList';
jest.mock('../../../api/models/Users'); jest.mock('../../../api/models/Users');
jest.mock('../../../api/models/Roles'); jest.mock('../../../api/models/Roles');
@@ -101,7 +101,7 @@ const roles = {
}, },
}; };
describe('<UserAccessList />', () => { describe('<UserRolesList />', () => {
let wrapper; let wrapper;
afterEach(() => { afterEach(() => {
jest.clearAllMocks(); jest.clearAllMocks();
@@ -111,17 +111,17 @@ describe('<UserAccessList />', () => {
UsersAPI.readRoles.mockResolvedValue(roles); UsersAPI.readRoles.mockResolvedValue(roles);
await act(async () => { await act(async () => {
wrapper = mountWithContexts(<UserAccessList user={user} />); wrapper = mountWithContexts(<UserRolesList user={user} />);
}); });
expect(wrapper.find('UserAccessList').length).toBe(1); expect(wrapper.find('UserRolesList').length).toBe(1);
}); });
test('should create proper detailUrl', async () => { test('should create proper detailUrl', async () => {
UsersAPI.readRoles.mockResolvedValue(roles); UsersAPI.readRoles.mockResolvedValue(roles);
await act(async () => { await act(async () => {
wrapper = mountWithContexts(<UserAccessList user={user} />); wrapper = mountWithContexts(<UserRolesList user={user} />);
}); });
wrapper.update(); wrapper.update();
@@ -191,7 +191,7 @@ describe('<UserAccessList />', () => {
}); });
await act(async () => { await act(async () => {
wrapper = mountWithContexts( wrapper = mountWithContexts(
<UserAccessList <UserRolesList
user={{ user={{
...user, ...user,
summary_fields: { summary_fields: {
@@ -214,7 +214,7 @@ describe('<UserAccessList />', () => {
test('should open and close wizard', async () => { test('should open and close wizard', async () => {
UsersAPI.readRoles.mockResolvedValue(roles); UsersAPI.readRoles.mockResolvedValue(roles);
await act(async () => { await act(async () => {
wrapper = mountWithContexts(<UserAccessList user={user} />); wrapper = mountWithContexts(<UserRolesList user={user} />);
}); });
wrapper.update(); wrapper.update();
await act(async () => await act(async () =>
@@ -232,7 +232,7 @@ describe('<UserAccessList />', () => {
UsersAPI.readRoles.mockResolvedValue(roles); UsersAPI.readRoles.mockResolvedValue(roles);
await act(async () => { await act(async () => {
wrapper = mountWithContexts(<UserAccessList user={user} />); wrapper = mountWithContexts(<UserRolesList user={user} />);
}); });
wrapper.update(); wrapper.update();
@@ -283,7 +283,7 @@ describe('<UserAccessList />', () => {
); );
await act(async () => { await act(async () => {
wrapper = mountWithContexts(<UserAccessList user={user} />); wrapper = mountWithContexts(<UserRolesList user={user} />);
}); });
wrapper.update(); wrapper.update();
@@ -338,7 +338,7 @@ describe('<UserAccessList />', () => {
}); });
await act(async () => { await act(async () => {
wrapper = mountWithContexts(<UserAccessList user={user} />); wrapper = mountWithContexts(<UserRolesList user={user} />);
}); });
waitForElement( waitForElement(

View File

@@ -11,7 +11,7 @@ import { Link } from 'react-router-dom';
import { DetailList, Detail } from '../../../components/DetailList'; import { DetailList, Detail } from '../../../components/DetailList';
import DataListCell from '../../../components/DataListCell'; import DataListCell from '../../../components/DataListCell';
function UserAccessListItem({ role, i18n, detailUrl, onSelect }) { function UserRolesListItem({ role, i18n, detailUrl, onSelect }) {
const labelId = `userRole-${role.id}`; const labelId = `userRole-${role.id}`;
return ( return (
<DataListItem key={role.id} aria-labelledby={labelId} id={`${role.id}`}> <DataListItem key={role.id} aria-labelledby={labelId} id={`${role.id}`}>
@@ -61,4 +61,4 @@ function UserAccessListItem({ role, i18n, detailUrl, onSelect }) {
); );
} }
export default withI18n()(UserAccessListItem); export default withI18n()(UserRolesListItem);

View File

@@ -1,8 +1,8 @@
import React from 'react'; import React from 'react';
import { mountWithContexts } from '../../../../testUtils/enzymeHelpers'; import { mountWithContexts } from '../../../../testUtils/enzymeHelpers';
import UserAccessListItem from './UserAccessListItem'; import UserRolesListItem from './UserRolesListItem';
describe('<UserAccessListItem/>', () => { describe('<UserRolesListItem/>', () => {
let wrapper; let wrapper;
const role = { const role = {
id: 1, id: 1,
@@ -19,7 +19,7 @@ describe('<UserAccessListItem/>', () => {
}; };
test('should mount properly', () => { test('should mount properly', () => {
wrapper = mountWithContexts( wrapper = mountWithContexts(
<UserAccessListItem <UserRolesListItem
role={role} role={role}
detailUrl="/templates/job_template/15/details" detailUrl="/templates/job_template/15/details"
/> />
@@ -29,7 +29,7 @@ describe('<UserAccessListItem/>', () => {
test('should render proper list item data', () => { test('should render proper list item data', () => {
wrapper = mountWithContexts( wrapper = mountWithContexts(
<UserAccessListItem <UserRolesListItem
role={role} role={role}
detailUrl="/templates/job_template/15/details" detailUrl="/templates/job_template/15/details"
/> />
@@ -46,7 +46,7 @@ describe('<UserAccessListItem/>', () => {
}); });
test('should render deletable chip', () => { test('should render deletable chip', () => {
wrapper = mountWithContexts( wrapper = mountWithContexts(
<UserAccessListItem <UserRolesListItem
role={role} role={role}
detailUrl="/templates/job_template/15/details" detailUrl="/templates/job_template/15/details"
/> />
@@ -56,7 +56,7 @@ describe('<UserAccessListItem/>', () => {
test('should render read only chip', () => { test('should render read only chip', () => {
role.summary_fields.user_capabilities.unattach = false; role.summary_fields.user_capabilities.unattach = false;
wrapper = mountWithContexts( wrapper = mountWithContexts(
<UserAccessListItem <UserRolesListItem
role={role} role={role}
detailUrl="/templates/job_template/15/details" detailUrl="/templates/job_template/15/details"
/> />

View File

@@ -0,0 +1,2 @@
export { default as UserRolesList } from './UserRolesList';
export { default as UserRolesListItem } from './UserRolesListItem';

View File

@@ -29,12 +29,14 @@ function Users({ i18n }) {
[`/users/${user.id}`]: `${user.username}`, [`/users/${user.id}`]: `${user.username}`,
[`/users/${user.id}/edit`]: i18n._(t`Edit Details`), [`/users/${user.id}/edit`]: i18n._(t`Edit Details`),
[`/users/${user.id}/details`]: i18n._(t`Details`), [`/users/${user.id}/details`]: i18n._(t`Details`),
[`/users/${user.id}/access`]: i18n._(t`Access`), [`/users/${user.id}/roles`]: i18n._(t`Roles`),
[`/users/${user.id}/teams`]: i18n._(t`Teams`), [`/users/${user.id}/teams`]: i18n._(t`Teams`),
[`/users/${user.id}/organizations`]: i18n._(t`Organizations`), [`/users/${user.id}/organizations`]: i18n._(t`Organizations`),
[`/users/${user.id}/tokens`]: i18n._(t`Tokens`), [`/users/${user.id}/tokens`]: i18n._(t`Tokens`),
[`/users/${user.id}/tokens/add`]: i18n._(t`Create user token`), [`/users/${user.id}/tokens/add`]: i18n._(t`Create user token`),
[`/users/${user.id}/tokens/${token && token.id}`]: `Application Name`, [`/users/${user.id}/tokens/${token && token.id}`]: i18n._(
t`Application Name`
),
[`/users/${user.id}/tokens/${token && token.id}/details`]: i18n._( [`/users/${user.id}/tokens/${token && token.id}/details`]: i18n._(
t`Details` t`Details`
), ),