diff --git a/openmetadata-ui/src/main/resources/ui/src/pages/TableDetailsPageV1/TableDetailsPageV1.test.tsx b/openmetadata-ui/src/main/resources/ui/src/pages/TableDetailsPageV1/TableDetailsPageV1.test.tsx index d60ff48f84d..c47bf70249b 100644 --- a/openmetadata-ui/src/main/resources/ui/src/pages/TableDetailsPageV1/TableDetailsPageV1.test.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/pages/TableDetailsPageV1/TableDetailsPageV1.test.tsx @@ -305,6 +305,54 @@ describe('TestDetailsPageV1 component', () => { expect(screen.queryByText('label.view-definition')).not.toBeInTheDocument(); }); + it('TableDetailsPageV1 should dbt tab for rawSql, when sql is empty', async () => { + (usePermissionProvider as jest.Mock).mockImplementationOnce(() => ({ + getEntityPermissionByFqn: jest.fn().mockImplementationOnce(() => ({ + ViewBasic: true, + })), + })); + + (getTableDetailsByFQN as jest.Mock).mockImplementationOnce(() => + Promise.resolve({ + name: 'test', + id: '123', + tableFqn: 'fqn', + dataModel: { sql: '', rawSql: 'rawSql' }, + }) + ); + + await act(async () => { + render(); + }); + + expect(await screen.findByText('label.dbt-lowercase')).toBeInTheDocument(); + expect(screen.queryByText('label.view-definition')).not.toBeInTheDocument(); + }); + + it('TableDetailsPageV1 should dbt tab for rawSql, when there is no sql available', async () => { + (usePermissionProvider as jest.Mock).mockImplementationOnce(() => ({ + getEntityPermissionByFqn: jest.fn().mockImplementationOnce(() => ({ + ViewBasic: true, + })), + })); + + (getTableDetailsByFQN as jest.Mock).mockImplementationOnce(() => + Promise.resolve({ + name: 'test', + id: '123', + tableFqn: 'fqn', + dataModel: { rawSql: 'rawSql' }, + }) + ); + + await act(async () => { + render(); + }); + + expect(await screen.findByText('label.dbt-lowercase')).toBeInTheDocument(); + expect(screen.queryByText('label.view-definition')).not.toBeInTheDocument(); + }); + it('TableDetailsPageV1 should render schema definition tab table type is not view', async () => { (usePermissionProvider as jest.Mock).mockImplementationOnce(() => ({ getEntityPermissionByFqn: jest.fn().mockImplementationOnce(() => ({ @@ -325,6 +373,7 @@ describe('TestDetailsPageV1 component', () => { }); expect(screen.getByText('label.schema-definition')).toBeInTheDocument(); + expect(screen.queryByText('label.dbt-lowercase')).not.toBeInTheDocument(); }); it('TableDetailsPageV1 should render view definition tab if table type is view', async () => { diff --git a/openmetadata-ui/src/main/resources/ui/src/pages/TableDetailsPageV1/TableDetailsPageV1.tsx b/openmetadata-ui/src/main/resources/ui/src/pages/TableDetailsPageV1/TableDetailsPageV1.tsx index 9079b37ef35..0b044fa6e7b 100644 --- a/openmetadata-ui/src/main/resources/ui/src/pages/TableDetailsPageV1/TableDetailsPageV1.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/pages/TableDetailsPageV1/TableDetailsPageV1.tsx @@ -14,7 +14,7 @@ import { Col, Row, Space, Tabs, Typography } from 'antd'; import { AxiosError } from 'axios'; import classNames from 'classnames'; import { compare } from 'fast-json-patch'; -import { isEmpty, isEqual, isUndefined } from 'lodash'; +import { get, isEmpty, isEqual, isUndefined } from 'lodash'; import { EntityTags } from 'Models'; import React, { useCallback, useEffect, useMemo, useState } from 'react'; import { useTranslation } from 'react-i18next'; @@ -733,15 +733,14 @@ const TableDetailsPageV1: React.FC = () => { ), isHidden: !( - tableDetails?.dataModel?.sql ?? tableDetails?.dataModel?.rawSql + tableDetails?.dataModel?.sql || tableDetails?.dataModel?.rawSql ), key: EntityTabs.DBT, children: (