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