mirror of
https://github.com/open-metadata/OpenMetadata.git
synced 2025-08-23 16:38:17 +00:00
Fix: Additional permissions call happening in summary components (#20943)
* fix double permissions call happening in summary components * fix failing unit test case * removed unnecessary entity details fn call * address unit test failure
This commit is contained in:
parent
e181c50e50
commit
9ef9ae97a5
@ -144,7 +144,6 @@ export const DataAssetSummaryPanel = ({
|
||||
dataAsset.id
|
||||
);
|
||||
setEntityPermissions(permissions);
|
||||
fetchEntityBasedDetails();
|
||||
} else {
|
||||
setEntityPermissions(null);
|
||||
}
|
||||
@ -220,7 +219,10 @@ export const DataAssetSummaryPanel = ({
|
||||
</Row>
|
||||
|
||||
{entityType === EntityType.TABLE && (
|
||||
<TableSummary entityDetails={dataAsset as Table} />
|
||||
<TableSummary
|
||||
entityDetails={dataAsset as Table}
|
||||
permissions={entityPermissions}
|
||||
/>
|
||||
)}
|
||||
|
||||
<SummaryTagsDescription
|
||||
|
@ -25,11 +25,7 @@ import { useTranslation } from 'react-i18next';
|
||||
import { useHistory } from 'react-router-dom';
|
||||
import { ROUTES } from '../../../../constants/constants';
|
||||
import { mockTablePermission } from '../../../../constants/mockTourData.constants';
|
||||
import { usePermissionProvider } from '../../../../context/PermissionProvider/PermissionProvider';
|
||||
import {
|
||||
OperationPermission,
|
||||
ResourceEntity,
|
||||
} from '../../../../context/PermissionProvider/PermissionProvider.interface';
|
||||
import { OperationPermission } from '../../../../context/PermissionProvider/PermissionProvider.interface';
|
||||
import { EntityTabs, EntityType } from '../../../../enums/entity.enum';
|
||||
import { TestSummary } from '../../../../generated/tests/testCase';
|
||||
import useCustomLocation from '../../../../hooks/useCustomLocation/useCustomLocation';
|
||||
@ -40,21 +36,25 @@ import { TableProfilerTab } from '../../../Database/Profiler/ProfilerDashboard/p
|
||||
import './table-summary.less';
|
||||
import { TableSummaryProps } from './TableSummary.interface';
|
||||
|
||||
function TableSummary({ entityDetails: tableDetails }: TableSummaryProps) {
|
||||
function TableSummary({
|
||||
entityDetails: tableDetails,
|
||||
permissions,
|
||||
}: Readonly<TableSummaryProps>) {
|
||||
const { t } = useTranslation();
|
||||
const location = useCustomLocation();
|
||||
const history = useHistory();
|
||||
const isTourPage = location.pathname.includes(ROUTES.TOUR);
|
||||
const { getEntityPermission } = usePermissionProvider();
|
||||
|
||||
const [testSuiteSummary, setTestSuiteSummary] = useState<TestSummary>();
|
||||
const [tablePermissions, setTablePermissions] = useState<OperationPermission>(
|
||||
DEFAULT_ENTITY_PERMISSION
|
||||
);
|
||||
|
||||
useEffect(() => {
|
||||
setTablePermissions(permissions as OperationPermission);
|
||||
}, [permissions]);
|
||||
// Since we are showing test cases summary in the table summary panel, we are using ViewTests permission
|
||||
const viewTestCasesPermission = useMemo(
|
||||
() => tablePermissions.ViewAll || tablePermissions.ViewTests,
|
||||
() => tablePermissions?.ViewAll || tablePermissions?.ViewTests,
|
||||
[tablePermissions]
|
||||
);
|
||||
|
||||
@ -154,33 +154,21 @@ function TableSummary({ entityDetails: tableDetails }: TableSummaryProps) {
|
||||
|
||||
const init = useCallback(async () => {
|
||||
if (tableDetails.id && !isTourPage) {
|
||||
const tablePermission = await getEntityPermission(
|
||||
ResourceEntity.TABLE,
|
||||
tableDetails.id
|
||||
);
|
||||
setTablePermissions(tablePermission);
|
||||
const shouldFetchTestCaseData =
|
||||
!isTableDeleted &&
|
||||
tableDetails.service?.type === 'databaseService' &&
|
||||
(tablePermission.ViewAll || tablePermission.ViewTests);
|
||||
|
||||
(permissions?.ViewAll || permissions?.ViewTests);
|
||||
if (shouldFetchTestCaseData) {
|
||||
fetchAllTests();
|
||||
}
|
||||
} else {
|
||||
setTablePermissions(mockTablePermission as OperationPermission);
|
||||
}
|
||||
}, [
|
||||
tableDetails,
|
||||
isTourPage,
|
||||
isTableDeleted,
|
||||
fetchAllTests,
|
||||
getEntityPermission,
|
||||
]);
|
||||
}, [tableDetails, isTourPage, isTableDeleted, fetchAllTests, permissions]);
|
||||
|
||||
useEffect(() => {
|
||||
init();
|
||||
}, [tableDetails.id]);
|
||||
}, [tableDetails.id, permissions]);
|
||||
|
||||
return (
|
||||
<Row className="p-md border-radius-card summary-panel-card" gutter={[0, 8]}>
|
||||
|
@ -11,10 +11,12 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import { OperationPermission } from '../../../../context/PermissionProvider/PermissionProvider.interface';
|
||||
import { Table } from '../../../../generated/entity/data/table';
|
||||
|
||||
export interface TableSummaryProps {
|
||||
entityDetails: Table;
|
||||
permissions: OperationPermission | null;
|
||||
}
|
||||
|
||||
export interface TableProfileDetails {
|
||||
|
@ -14,6 +14,7 @@
|
||||
import { act, render, screen } from '@testing-library/react';
|
||||
import React from 'react';
|
||||
import { MemoryRouter } from 'react-router-dom';
|
||||
import { OperationPermission } from '../../../../context/PermissionProvider/PermissionProvider.interface';
|
||||
import { getTestCaseExecutionSummary } from '../../../../rest/testAPI';
|
||||
import { mockTableEntityDetails } from '../mocks/TableSummary.mock';
|
||||
import TableSummary from './TableSummary.component';
|
||||
@ -69,9 +70,15 @@ jest.mock('../../../../context/PermissionProvider/PermissionProvider', () => ({
|
||||
describe('TableSummary component tests', () => {
|
||||
it('Component should render properly, when loaded in the Explore page.', async () => {
|
||||
await act(async () => {
|
||||
render(<TableSummary entityDetails={mockTableEntityDetails} />, {
|
||||
wrapper: MemoryRouter,
|
||||
});
|
||||
render(
|
||||
<TableSummary
|
||||
entityDetails={mockTableEntityDetails}
|
||||
permissions={mockEntityPermissions as OperationPermission}
|
||||
/>,
|
||||
{
|
||||
wrapper: MemoryRouter,
|
||||
}
|
||||
);
|
||||
});
|
||||
|
||||
const profilerHeader = screen.getByTestId('profiler-header');
|
||||
@ -89,9 +96,15 @@ describe('TableSummary component tests', () => {
|
||||
|
||||
it('Component should render properly, when loaded in the Lineage page.', async () => {
|
||||
await act(async () => {
|
||||
render(<TableSummary entityDetails={mockTableEntityDetails} />, {
|
||||
wrapper: MemoryRouter,
|
||||
});
|
||||
render(
|
||||
<TableSummary
|
||||
entityDetails={mockTableEntityDetails}
|
||||
permissions={mockEntityPermissions as OperationPermission}
|
||||
/>,
|
||||
{
|
||||
wrapper: MemoryRouter,
|
||||
}
|
||||
);
|
||||
});
|
||||
|
||||
const profilerHeader = screen.getByTestId('profiler-header');
|
||||
@ -117,9 +130,15 @@ describe('TableSummary component tests', () => {
|
||||
);
|
||||
|
||||
await act(async () => {
|
||||
render(<TableSummary entityDetails={mockTableEntityDetails} />, {
|
||||
wrapper: MemoryRouter,
|
||||
});
|
||||
render(
|
||||
<TableSummary
|
||||
entityDetails={mockTableEntityDetails}
|
||||
permissions={mockEntityPermissions as OperationPermission}
|
||||
/>,
|
||||
{
|
||||
wrapper: MemoryRouter,
|
||||
}
|
||||
);
|
||||
});
|
||||
|
||||
const testsPassedLabel = screen.getByTestId('test-passed');
|
||||
@ -146,9 +165,15 @@ describe('TableSummary component tests', () => {
|
||||
})
|
||||
);
|
||||
await act(async () => {
|
||||
render(<TableSummary entityDetails={mockTableEntityDetails} />, {
|
||||
wrapper: MemoryRouter,
|
||||
});
|
||||
render(
|
||||
<TableSummary
|
||||
entityDetails={mockTableEntityDetails}
|
||||
permissions={mockEntityPermissions as OperationPermission}
|
||||
/>,
|
||||
{
|
||||
wrapper: MemoryRouter,
|
||||
}
|
||||
);
|
||||
});
|
||||
const testsPassedValue = screen.getByTestId('test-passed-value');
|
||||
const testsAbortedValue = screen.getByTestId('test-aborted-value');
|
||||
|
Loading…
x
Reference in New Issue
Block a user