mirror of
https://github.com/open-metadata/OpenMetadata.git
synced 2025-11-14 09:51:13 +00:00
fix(ui): schema page loader bug (#12786)
* Fixed issue for database schema page where no data placeholder was showing while loading permissions * removed unnecessary condition check
This commit is contained in:
parent
d2f3d45276
commit
911b41f7f3
@ -89,7 +89,7 @@ const DatabaseSchemaPage: FunctionComponent = () => {
|
|||||||
const [threadType, setThreadType] = useState<ThreadType>(
|
const [threadType, setThreadType] = useState<ThreadType>(
|
||||||
ThreadType.Conversation
|
ThreadType.Conversation
|
||||||
);
|
);
|
||||||
const [isLoading, setIsLoading] = useState(true);
|
const [isPermissionsLoading, setIsPermissionsLoading] = useState(true);
|
||||||
const [databaseSchema, setDatabaseSchema] = useState<DatabaseSchema>(
|
const [databaseSchema, setDatabaseSchema] = useState<DatabaseSchema>(
|
||||||
{} as DatabaseSchema
|
{} as DatabaseSchema
|
||||||
);
|
);
|
||||||
@ -132,7 +132,7 @@ const DatabaseSchemaPage: FunctionComponent = () => {
|
|||||||
);
|
);
|
||||||
|
|
||||||
const fetchDatabaseSchemaPermission = useCallback(async () => {
|
const fetchDatabaseSchemaPermission = useCallback(async () => {
|
||||||
setIsLoading(true);
|
setIsPermissionsLoading(true);
|
||||||
try {
|
try {
|
||||||
const response = await getEntityPermissionByFqn(
|
const response = await getEntityPermissionByFqn(
|
||||||
ResourceEntity.DATABASE_SCHEMA,
|
ResourceEntity.DATABASE_SCHEMA,
|
||||||
@ -142,7 +142,7 @@ const DatabaseSchemaPage: FunctionComponent = () => {
|
|||||||
} catch (error) {
|
} catch (error) {
|
||||||
showErrorToast(error as AxiosError);
|
showErrorToast(error as AxiosError);
|
||||||
} finally {
|
} finally {
|
||||||
setIsLoading(false);
|
setIsPermissionsLoading(false);
|
||||||
}
|
}
|
||||||
}, [databaseSchemaFQN]);
|
}, [databaseSchemaFQN]);
|
||||||
|
|
||||||
@ -193,7 +193,6 @@ const DatabaseSchemaPage: FunctionComponent = () => {
|
|||||||
} catch (err) {
|
} catch (err) {
|
||||||
// Error
|
// Error
|
||||||
} finally {
|
} finally {
|
||||||
setIsLoading(false);
|
|
||||||
setIsSchemaDetailsLoading(false);
|
setIsSchemaDetailsLoading(false);
|
||||||
}
|
}
|
||||||
}, [databaseSchemaFQN]);
|
}, [databaseSchemaFQN]);
|
||||||
@ -435,6 +434,10 @@ const DatabaseSchemaPage: FunctionComponent = () => {
|
|||||||
[tableData, getSchemaTables]
|
[tableData, getSchemaTables]
|
||||||
);
|
);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
fetchDatabaseSchemaPermission();
|
||||||
|
}, [databaseSchemaFQN]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (viewDatabaseSchemaPermission) {
|
if (viewDatabaseSchemaPermission) {
|
||||||
fetchDatabaseSchemaDetails();
|
fetchDatabaseSchemaDetails();
|
||||||
@ -443,14 +446,10 @@ const DatabaseSchemaPage: FunctionComponent = () => {
|
|||||||
}, [viewDatabaseSchemaPermission, databaseSchemaFQN]);
|
}, [viewDatabaseSchemaPermission, databaseSchemaFQN]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (databaseSchemaFQN) {
|
if (viewDatabaseSchemaPermission && databaseSchemaFQN) {
|
||||||
getSchemaTables();
|
getSchemaTables();
|
||||||
}
|
}
|
||||||
}, [showDeletedTables, databaseSchemaFQN]);
|
}, [showDeletedTables, databaseSchemaFQN, viewDatabaseSchemaPermission]);
|
||||||
|
|
||||||
useEffect(() => {
|
|
||||||
fetchDatabaseSchemaPermission();
|
|
||||||
}, [databaseSchemaFQN]);
|
|
||||||
|
|
||||||
// always Keep this useEffect at the end...
|
// always Keep this useEffect at the end...
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
@ -558,7 +557,7 @@ const DatabaseSchemaPage: FunctionComponent = () => {
|
|||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
if (isLoading) {
|
if (isPermissionsLoading) {
|
||||||
return <Loader />;
|
return <Loader />;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -572,7 +571,7 @@ const DatabaseSchemaPage: FunctionComponent = () => {
|
|||||||
pageTitle={t('label.entity-detail-plural', {
|
pageTitle={t('label.entity-detail-plural', {
|
||||||
entity: getEntityName(databaseSchema),
|
entity: getEntityName(databaseSchema),
|
||||||
})}>
|
})}>
|
||||||
{isEmpty(databaseSchema) ? (
|
{isEmpty(databaseSchema) && !isSchemaDetailsLoading ? (
|
||||||
<ErrorPlaceHolder className="m-0">
|
<ErrorPlaceHolder className="m-0">
|
||||||
{getEntityMissingError(EntityType.DATABASE_SCHEMA, databaseSchemaFQN)}
|
{getEntityMissingError(EntityType.DATABASE_SCHEMA, databaseSchemaFQN)}
|
||||||
</ErrorPlaceHolder>
|
</ErrorPlaceHolder>
|
||||||
|
|||||||
@ -35,23 +35,15 @@ jest.mock('../../utils/ToastUtils', () => ({
|
|||||||
}));
|
}));
|
||||||
|
|
||||||
jest.mock('components/Loader/Loader', () =>
|
jest.mock('components/Loader/Loader', () =>
|
||||||
jest.fn().mockImplementation(() => <div data-testid="Loader">Loader</div>)
|
jest.fn().mockImplementation(() => <div>Loader</div>)
|
||||||
);
|
);
|
||||||
|
|
||||||
jest.mock('components/common/rich-text-editor/RichTextEditorPreviewer', () =>
|
jest.mock('components/common/rich-text-editor/RichTextEditorPreviewer', () =>
|
||||||
jest
|
jest.fn().mockImplementation(() => <div>RichTextEditorPreviewer</div>)
|
||||||
.fn()
|
|
||||||
.mockImplementation(() => (
|
|
||||||
<div data-testid="RichTextEditorPreviewer">RichTextEditorPreviewer</div>
|
|
||||||
))
|
|
||||||
);
|
);
|
||||||
|
|
||||||
jest.mock('components/common/next-previous/NextPrevious', () =>
|
jest.mock('components/common/next-previous/NextPrevious', () =>
|
||||||
jest
|
jest.fn().mockImplementation(() => <div>NextPrevious</div>)
|
||||||
.fn()
|
|
||||||
.mockImplementation(() => (
|
|
||||||
<div data-testid="NextPrevious">NextPrevious</div>
|
|
||||||
))
|
|
||||||
);
|
);
|
||||||
|
|
||||||
jest.mock('components/FeedEditor/FeedEditor', () => {
|
jest.mock('components/FeedEditor/FeedEditor', () => {
|
||||||
@ -62,7 +54,7 @@ jest.mock('components/common/error-with-placeholder/ErrorPlaceHolder', () =>
|
|||||||
jest
|
jest
|
||||||
.fn()
|
.fn()
|
||||||
.mockImplementation(({ children }) => (
|
.mockImplementation(({ children }) => (
|
||||||
<div data-testid="ErrorPlaceHolder">{children}</div>
|
<div data-testid="error-placeHolder">{children}</div>
|
||||||
))
|
))
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -72,7 +64,6 @@ jest.mock('components/common/description/Description', () =>
|
|||||||
.mockImplementation(
|
.mockImplementation(
|
||||||
({ onThreadLinkSelect, onDescriptionEdit, onDescriptionUpdate }) => (
|
({ onThreadLinkSelect, onDescriptionEdit, onDescriptionUpdate }) => (
|
||||||
<div
|
<div
|
||||||
data-testid="Description"
|
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
onThreadLinkSelect('threadLink');
|
onThreadLinkSelect('threadLink');
|
||||||
onDescriptionEdit();
|
onDescriptionEdit();
|
||||||
@ -86,12 +77,7 @@ jest.mock('components/common/description/Description', () =>
|
|||||||
|
|
||||||
jest.mock(
|
jest.mock(
|
||||||
'components/ActivityFeed/ActivityThreadPanel/ActivityThreadPanel',
|
'components/ActivityFeed/ActivityThreadPanel/ActivityThreadPanel',
|
||||||
() =>
|
() => jest.fn().mockImplementation(() => <div>ActivityThreadPanel</div>)
|
||||||
jest
|
|
||||||
.fn()
|
|
||||||
.mockImplementation(() => (
|
|
||||||
<div data-testid="ActivityThreadPanel">ActivityThreadPanel</div>
|
|
||||||
))
|
|
||||||
);
|
);
|
||||||
|
|
||||||
jest.mock('components/PermissionProvider/PermissionProvider', () => ({
|
jest.mock('components/PermissionProvider/PermissionProvider', () => ({
|
||||||
@ -177,11 +163,11 @@ describe.skip('Tests for DatabaseSchemaPage', () => {
|
|||||||
|
|
||||||
const entityPageInfo = await screen.findByTestId('entityPageInfo');
|
const entityPageInfo = await screen.findByTestId('entityPageInfo');
|
||||||
const tabsPane = await screen.findByTestId('tabs');
|
const tabsPane = await screen.findByTestId('tabs');
|
||||||
const richTextEditorPreviewer = await screen.findAllByTestId(
|
const richTextEditorPreviewer = await screen.findAllByText(
|
||||||
'RichTextEditorPreviewer'
|
'RichTextEditorPreviewer'
|
||||||
);
|
);
|
||||||
const description = await screen.findByTestId('Description');
|
const description = await screen.findByText('Description');
|
||||||
const nextPrevious = await screen.findByTestId('NextPrevious');
|
const nextPrevious = await screen.findByText('NextPrevious');
|
||||||
const databaseSchemaTable = await screen.findByTestId(
|
const databaseSchemaTable = await screen.findByTestId(
|
||||||
'databaseSchema-tables'
|
'databaseSchema-tables'
|
||||||
);
|
);
|
||||||
@ -194,6 +180,26 @@ describe.skip('Tests for DatabaseSchemaPage', () => {
|
|||||||
expect(databaseSchemaTable).toBeInTheDocument();
|
expect(databaseSchemaTable).toBeInTheDocument();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('Loader should be visible if the permissions are being fetched', async () => {
|
||||||
|
await act(async () => {
|
||||||
|
render(<DatabaseSchemaPageComponent />, {
|
||||||
|
wrapper: MemoryRouter,
|
||||||
|
});
|
||||||
|
|
||||||
|
const loader = screen.getByText('Loader');
|
||||||
|
const errorPlaceHolder = screen.queryByText('error-placeHolder');
|
||||||
|
|
||||||
|
expect(loader).toBeInTheDocument();
|
||||||
|
expect(errorPlaceHolder).toBeNull();
|
||||||
|
});
|
||||||
|
|
||||||
|
const entityPageInfo = await screen.findByTestId('entityPageInfo');
|
||||||
|
const tabsPane = await screen.findByTestId('tabs');
|
||||||
|
|
||||||
|
expect(entityPageInfo).toBeInTheDocument();
|
||||||
|
expect(tabsPane).toBeInTheDocument();
|
||||||
|
});
|
||||||
|
|
||||||
it('Activity Feed List should render properly for "Activity Feeds" tab', async () => {
|
it('Activity Feed List should render properly for "Activity Feeds" tab', async () => {
|
||||||
mockParams.tab = 'activity_feed';
|
mockParams.tab = 'activity_feed';
|
||||||
|
|
||||||
@ -208,7 +214,7 @@ describe.skip('Tests for DatabaseSchemaPage', () => {
|
|||||||
expect(activityFeedList).toBeInTheDocument();
|
expect(activityFeedList).toBeInTheDocument();
|
||||||
});
|
});
|
||||||
|
|
||||||
it('AcivityThreadPanel should render properly after clicked on thread panel button', async () => {
|
it('ActivityThreadPanel should render properly after clicked on thread panel button', async () => {
|
||||||
mockParams.tab = 'table';
|
mockParams.tab = 'table';
|
||||||
await act(async () => {
|
await act(async () => {
|
||||||
render(<DatabaseSchemaPageComponent />, {
|
render(<DatabaseSchemaPageComponent />, {
|
||||||
@ -216,7 +222,7 @@ describe.skip('Tests for DatabaseSchemaPage', () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
const description = await screen.findByTestId('Description');
|
const description = await screen.findByText('Description');
|
||||||
|
|
||||||
expect(description).toBeInTheDocument();
|
expect(description).toBeInTheDocument();
|
||||||
|
|
||||||
@ -224,9 +230,7 @@ describe.skip('Tests for DatabaseSchemaPage', () => {
|
|||||||
fireEvent.click(description);
|
fireEvent.click(description);
|
||||||
});
|
});
|
||||||
|
|
||||||
const activityThreadPanel = await screen.findByTestId(
|
const activityThreadPanel = await screen.findByText('ActivityThreadPanel');
|
||||||
'ActivityThreadPanel'
|
|
||||||
);
|
|
||||||
|
|
||||||
expect(activityThreadPanel).toBeInTheDocument();
|
expect(activityThreadPanel).toBeInTheDocument();
|
||||||
});
|
});
|
||||||
@ -242,7 +246,7 @@ describe.skip('Tests for DatabaseSchemaPage', () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
const errorPlaceHolder = await screen.findByTestId('ErrorPlaceHolder');
|
const errorPlaceHolder = await screen.findByTestId('error-placeHolder');
|
||||||
const errorMessage = await screen.findByTestId('error-message');
|
const errorMessage = await screen.findByTestId('error-message');
|
||||||
|
|
||||||
expect(errorPlaceHolder).toBeInTheDocument();
|
expect(errorPlaceHolder).toBeInTheDocument();
|
||||||
@ -266,7 +270,7 @@ describe.skip('Tests for DatabaseSchemaPage', () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
const errorPlaceHolder = await screen.findByTestId('ErrorPlaceHolder');
|
const errorPlaceHolder = await screen.findByTestId('error-placeHolder');
|
||||||
|
|
||||||
expect(errorPlaceHolder).toBeInTheDocument();
|
expect(errorPlaceHolder).toBeInTheDocument();
|
||||||
});
|
});
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user