From 1a270bfc8b69242a48c2d2beb9bd538cc4d7f80d Mon Sep 17 00:00:00 2001 From: mabashian Date: Tue, 8 Dec 2020 13:38:55 -0500 Subject: [PATCH] Removes token edit button from details. Removes unnecessary request/props that were used to determine whether a user could delete a token. --- .../src/screens/User/UserToken/UserToken.jsx | 12 +++---- .../User/UserTokenDetail/UserTokenDetail.jsx | 32 ++++++------------ .../UserTokenDetail/UserTokenDetail.test.jsx | 33 ++++--------------- 3 files changed, 20 insertions(+), 57 deletions(-) diff --git a/awx/ui_next/src/screens/User/UserToken/UserToken.jsx b/awx/ui_next/src/screens/User/UserToken/UserToken.jsx index af6f0f0b16..e42a98b5a4 100644 --- a/awx/ui_next/src/screens/User/UserToken/UserToken.jsx +++ b/awx/ui_next/src/screens/User/UserToken/UserToken.jsx @@ -24,20 +24,16 @@ function UserToken({ i18n, setBreadcrumb, user }) { isLoading, error, request: fetchToken, - result: { token, actions }, + result: { token }, } = useRequest( useCallback(async () => { - const [response, actionsResponse] = await Promise.all([ - TokensAPI.readDetail(tokenId), - TokensAPI.readOptions(), - ]); + const response = await TokensAPI.readDetail(tokenId); setBreadcrumb(user, response.data); return { token: response.data, - actions: actionsResponse.data.actions.POST, }; }, [setBreadcrumb, user, tokenId]), - { token: null, actions: null } + { token: null } ); useEffect(() => { fetchToken(); @@ -97,7 +93,7 @@ function UserToken({ i18n, setBreadcrumb, user }) { /> {token && ( - + )} diff --git a/awx/ui_next/src/screens/User/UserTokenDetail/UserTokenDetail.jsx b/awx/ui_next/src/screens/User/UserTokenDetail/UserTokenDetail.jsx index 53e8d1c742..f465ac2a1a 100644 --- a/awx/ui_next/src/screens/User/UserTokenDetail/UserTokenDetail.jsx +++ b/awx/ui_next/src/screens/User/UserTokenDetail/UserTokenDetail.jsx @@ -1,8 +1,7 @@ import React, { useCallback } from 'react'; -import { Link, useHistory, useParams } from 'react-router-dom'; +import { useHistory, useParams } from 'react-router-dom'; import { withI18n } from '@lingui/react'; import { t } from '@lingui/macro'; -import { Button } from '@patternfly/react-core'; import AlertModal from '../../../components/AlertModal'; import { CardBody, CardActionsRow } from '../../../components/Card'; @@ -18,7 +17,7 @@ import { formatDateString } from '../../../util/dates'; import useRequest, { useDismissableError } from '../../../util/useRequest'; import { toTitleCase } from '../../../util/strings'; -function UserTokenDetail({ token, canEditOrDelete, i18n }) { +function UserTokenDetail({ token, i18n }) { const { scope, description, @@ -60,25 +59,14 @@ function UserTokenDetail({ token, canEditOrDelete, i18n }) { /> - {canEditOrDelete && ( - <> - - - {i18n._(t`Delete`)} - - - )} + + {i18n._(t`Delete`)} + {error && ( ', () => { description: 'cdfsg', scope: 'read', }; - test('should call api for token details and actions', async () => { + test('should render properly', async () => { await act(async () => { - wrapper = mountWithContexts( - - ); + wrapper = mountWithContexts(); }); + expect(wrapper.find('UserTokenDetail').length).toBe(1); - }); - test('should call api for token details and actions', async () => { - await act(async () => { - wrapper = mountWithContexts( - - ); - }); expect(wrapper.find('Detail[label="Application"]').prop('value')).toBe( 'hg' @@ -68,20 +60,9 @@ describe('', () => { expect(wrapper.find('Button[aria-label="Edit"]').length).toBe(1); expect(wrapper.find('Button[aria-label="Delete"]').length).toBe(1); }); - test('should not render edit or delete buttons', async () => { - await act(async () => { - wrapper = mountWithContexts( - - ); - }); - expect(wrapper.find('Button[aria-label="Edit"]').length).toBe(0); - expect(wrapper.find('Button[aria-label="Delete"]').length).toBe(0); - }); test('should delete token properly', async () => { await act(async () => { - wrapper = mountWithContexts( - - ); + wrapper = mountWithContexts(); }); await act(async () => wrapper.find('Button[aria-label="Delete"]').prop('onClick')() @@ -90,7 +71,7 @@ describe('', () => { await act(async () => wrapper.find('DeleteButton').prop('onConfirm')()); expect(TokensAPI.destroy).toBeCalledWith(2); }); - test('should throw deletion error', async () => { + test('should display error on failed deletion', async () => { TokensAPI.destroy.mockRejectedValue( new Error({ response: { @@ -104,9 +85,7 @@ describe('', () => { }) ); await act(async () => { - wrapper = mountWithContexts( - - ); + wrapper = mountWithContexts(); }); await act(async () => wrapper.find('Button[aria-label="Delete"]').prop('onClick')()