Skip to content

Commit 725ffec

Browse files
v-tarasevich-blitz-brainVictor Tarasevich
andauthored
feat(datasetSummaryTab): add feature flag (#15206)
Co-authored-by: Victor Tarasevich <v.tarasevich@invento-labs.com>
1 parent 7df902a commit 725ffec

File tree

10 files changed

+85
-0
lines changed

10 files changed

+85
-0
lines changed

datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/config/AppConfigResolver.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -276,6 +276,7 @@ public CompletableFuture<AppConfig> get(final DataFetchingEnvironment environmen
276276
.setLogicalModelsEnabled(_featureFlags.isLogicalModelsEnabled())
277277
.setShowHomepageUserRole(_featureFlags.isShowHomepageUserRole())
278278
.setAssetSummaryPageV1(_featureFlags.isAssetSummaryPageV1())
279+
.setDatasetSummaryPageV1(_featureFlags.isDatasetSummaryPageV1())
279280
.setDocumentationFileUploadV1(isDocumentationFileUploadV1Enabled())
280281
.build();
281282

datahub-graphql-core/src/main/resources/app.graphql

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -824,6 +824,11 @@ type FeatureFlagsConfig {
824824
"""
825825
assetSummaryPageV1: Boolean!
826826

827+
"""
828+
Enables displaying the dataset summary page
829+
"""
830+
datasetSummaryPageV1: Boolean!
831+
827832
"""
828833
If enabled, allows uploading of files for documentation.
829834
"""

datahub-graphql-core/src/test/java/com/linkedin/datahub/graphql/resolvers/config/AppConfigResolverTest.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,7 @@ private void setupFeatureFlags() {
141141
when(mockFeatureFlags.isLogicalModelsEnabled()).thenReturn(false);
142142
when(mockFeatureFlags.isShowHomepageUserRole()).thenReturn(false);
143143
when(mockFeatureFlags.isAssetSummaryPageV1()).thenReturn(false);
144+
when(mockFeatureFlags.isDatasetSummaryPageV1()).thenReturn(false);
144145
when(mockFeatureFlags.isDocumentationFileUploadV1()).thenReturn(false);
145146
}
146147

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
import { renderHook } from '@testing-library/react-hooks';
2+
import { MockedFunction, beforeEach, describe, expect, it, vi } from 'vitest';
3+
4+
import { useShowDatasetSummaryPage } from '@app/entityV2/summary/useShowDatasetSummaryPage';
5+
import { useAppConfig } from '@app/useAppConfig';
6+
7+
vi.mock('@app/useAppConfig', () => ({
8+
useAppConfig: vi.fn(),
9+
}));
10+
11+
const mockedUseAppConfig = useAppConfig as MockedFunction<typeof useAppConfig>;
12+
13+
describe('useShowDatasetSummaryPage', () => {
14+
beforeEach(() => {
15+
vi.clearAllMocks();
16+
});
17+
18+
it('should return true when loaded is true and flag is true', () => {
19+
mockedUseAppConfig.mockReturnValue({
20+
loaded: true,
21+
config: { featureFlags: { datasetSummaryPageV1: true } },
22+
} as any);
23+
24+
const { result } = renderHook(() => useShowDatasetSummaryPage());
25+
expect(result.current).toBe(true);
26+
});
27+
28+
it('should return false when loaded is true and flag is false', () => {
29+
mockedUseAppConfig.mockReturnValue({
30+
loaded: true,
31+
config: { featureFlags: { datasetSummaryPageV1: false } },
32+
} as any);
33+
34+
const { result } = renderHook(() => useShowDatasetSummaryPage());
35+
expect(result.current).toBe(false);
36+
});
37+
38+
it('should return false when loaded is false regardless of the flag', () => {
39+
mockedUseAppConfig.mockReturnValue({
40+
loaded: false,
41+
config: { featureFlags: { datasetSummaryPageV1: true } },
42+
} as any);
43+
44+
const { result } = renderHook(() => useShowDatasetSummaryPage());
45+
expect(result.current).toBe(false);
46+
});
47+
48+
it('should return false when loaded is true but flag is missing', () => {
49+
mockedUseAppConfig.mockReturnValue({
50+
loaded: true,
51+
config: { featureFlags: { datasetSummaryPageV1: false } },
52+
} as any);
53+
54+
const { result } = renderHook(() => useShowDatasetSummaryPage());
55+
expect(result.current).toBe(false);
56+
});
57+
58+
it('should return false when loaded is false and flag is missing', () => {
59+
mockedUseAppConfig.mockReturnValue({
60+
loaded: false,
61+
config: { featureFlags: { datasetSummaryPageV1: false } },
62+
} as any);
63+
64+
const { result } = renderHook(() => useShowDatasetSummaryPage());
65+
expect(result.current).toBe(false);
66+
});
67+
});
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
import { useFeatureFlag } from '@app/sharedV2/hooks/useFeatureFlag';
2+
3+
export function useShowDatasetSummaryPage() {
4+
const datasetSummaryPageV1 = useFeatureFlag('datasetSummaryPageV1');
5+
return datasetSummaryPageV1;
6+
}

datahub-web-react/src/appConfigContext.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@ export const DEFAULT_APP_CONFIG = {
9494
logicalModelsEnabled: false,
9595
showHomepageUserRole: false,
9696
assetSummaryPageV1: false,
97+
datasetSummaryPageV1: false,
9798
documentationFileUploadV1: false,
9899
},
99100
chromeExtensionConfig: {

datahub-web-react/src/graphql/app.graphql

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,7 @@ query appConfig {
116116
logicalModelsEnabled
117117
showHomepageUserRole
118118
assetSummaryPageV1
119+
datasetSummaryPageV1
119120
documentationFileUploadV1
120121
}
121122
chromeExtensionConfig {

metadata-io/src/test/java/com/linkedin/metadata/system_info/collectors/PropertiesCollectorConfigurationTest.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -466,6 +466,7 @@ public PropertiesCollector propertiesCollector(Environment environment) {
466466
"featureFlags.alwaysEmitChangeLog",
467467
"featureFlags.alternateMCPValidation",
468468
"featureFlags.assetSummaryPageV1",
469+
"featureFlags.datasetSummaryPageV1",
469470
"featureFlags.businessAttributeEntityEnabled",
470471
"featureFlags.cdcModeChangeLog",
471472
"featureFlags.dataContractsEnabled",

metadata-service/configuration/src/main/java/com/linkedin/datahub/graphql/featureflags/FeatureFlags.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ public class FeatureFlags {
5151
private boolean logicalModelsEnabled = false;
5252
private boolean showHomepageUserRole = false;
5353
private boolean assetSummaryPageV1 = false;
54+
private boolean datasetSummaryPageV1 = false;
5455
private boolean showDefaultExternalLinks = true;
5556
private boolean documentationFileUploadV1 = false;
5657
}

metadata-service/configuration/src/main/resources/application.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -865,6 +865,7 @@ featureFlags:
865865
showHomepageUserRole: ${SHOW_HOMEPAGE_USER_ROLE:false} # Enables displaying the homepage user role underneath the name. Only relevant for custom home page
866866
fineGrainedLineageNotAllowedForPlatforms: ${FINE_GRAINED_LINEAGE_NOT_ALLOWED_FOR_PLATFORMS:} # Comma separated list of platforms for which schemaFields entity edges will not be allowed to be created. for example: "hdfs, s3"
867867
assetSummaryPageV1: ${ASSET_SUMMARY_PAGE_V1:false} # Enables displaying the asset summary page
868+
datasetSummaryPageV1: ${DATASET_SUMMARY_PAGE_V1:false} # Enables displaying the dataset summary page
868869
showDefaultExternalLinks: ${SHOW_DEFAULT_EXTERNAL_LINKS:true} # If turned on, show the default external links on the entity page
869870
documentationFileUploadV1: ${DOCUMENTATION_FILE_UPLOAD_V1:false} # Enables uploading of files for documentation
870871

0 commit comments

Comments
 (0)