Skip to content

Commit c501d8f

Browse files
Deep Furiyadeepfuriya
authored andcommitted
added feature flagfor top level section hover
1 parent a2f88ce commit c501d8f

File tree

5 files changed

+42
-4
lines changed

5 files changed

+42
-4
lines changed

src/hover/HoverRouter.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ export class HoverRouter implements SettingsConfigurable, Closeable {
136136

137137
private createHoverProviders(schemaRetriever: SchemaRetriever): Map<HoverType, HoverProvider> {
138138
const hoverProviderMap = new Map<HoverType, HoverProvider>();
139-
hoverProviderMap.set(HoverType.TopLevelSection, new TemplateSectionHoverProvider());
139+
hoverProviderMap.set(HoverType.TopLevelSection, new TemplateSectionHoverProvider(this.constantsFeatureFlag));
140140
hoverProviderMap.set(HoverType.ResourceSection, new ResourceSectionHoverProvider(schemaRetriever));
141141
hoverProviderMap.set(HoverType.Parameter, new ParameterHoverProvider());
142142
hoverProviderMap.set(HoverType.ParameterAttribute, new ParameterAttributeHoverProvider());
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,19 @@
11
import { templateSectionDocsMap } from '../artifacts/TemplateSectionDocs';
22
import { Context } from '../context/Context';
33
import { TopLevelSection } from '../context/ContextType';
4+
import { FeatureFlag } from '../featureFlag/FeatureFlagI';
45
import { Measure } from '../telemetry/TelemetryDecorator';
56
import { HoverProvider } from './HoverProvider';
67

78
export class TemplateSectionHoverProvider implements HoverProvider {
9+
constructor(private readonly constantsFeatureFlag: FeatureFlag) {}
10+
811
@Measure({ name: 'getInformation' })
912
getInformation(context: Context): string | undefined {
13+
if (context.text === String(TopLevelSection.Constants) && !this.constantsFeatureFlag.isEnabled()) {
14+
return undefined;
15+
}
16+
1017
return templateSectionDocsMap.get(context.text as TopLevelSection);
1118
}
1219
}

tst/unit/hover/HoverRouter.test.ts

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ describe('HoverRouter', () => {
3131
let hoverRouter: HoverRouter;
3232
let mockContextManager: StubbedInstance<ContextManager>;
3333
const params = docPosition('file:///test.yaml', 0, 0);
34+
const mockFeatureFlag = { isEnabled: () => true, describe: () => 'Constants feature flag' };
3435

3536
beforeEach(() => {
3637
// Reset mocks
@@ -58,7 +59,11 @@ describe('HoverRouter', () => {
5859
}));
5960

6061
const mockComponents = createMockComponents();
61-
hoverRouter = new HoverRouter(mockComponents.core.contextManager, mockComponents.external.schemaRetriever);
62+
hoverRouter = new HoverRouter(
63+
mockComponents.core.contextManager,
64+
mockComponents.external.schemaRetriever,
65+
mockFeatureFlag,
66+
);
6267
mockContextManager = mockComponents.contextManager;
6368
});
6469

@@ -104,6 +109,7 @@ describe('HoverRouter', () => {
104109
routerWithMockedProvider = new HoverRouter(
105110
mockComponents.core.contextManager,
106111
mockComponents.external.schemaRetriever,
112+
mockFeatureFlag,
107113
);
108114
mockContextManager = mockComponents.contextManager;
109115
});
@@ -116,6 +122,7 @@ describe('HoverRouter', () => {
116122
const routerWithResourceDoc = new HoverRouter(
117123
mockComponents.core.contextManager,
118124
mockComponents.external.schemaRetriever,
125+
mockFeatureFlag,
119126
);
120127
const mockContextManagerWithDoc = mockComponents.contextManager;
121128

@@ -182,6 +189,7 @@ describe('HoverRouter', () => {
182189
const routerWithResourceDoc = new HoverRouter(
183190
mockComponents.core.contextManager,
184191
mockComponents.external.schemaRetriever,
192+
mockFeatureFlag,
185193
);
186194
const mockContextManagerWithDoc = mockComponents.contextManager;
187195

tst/unit/hover/TemplateSectionHoverProvider.test.ts

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,11 @@ import { createTopLevelContext as topLevelContext } from '../../utils/MockContex
66

77
describe('TemplateSectionHoverProvider', () => {
88
let hoverProvider: TemplateSectionHoverProvider;
9+
const mockFeatureFlagEnabled = { isEnabled: () => true, describe: () => 'Constants feature flag' };
10+
const mockFeatureFlagDisabled = { isEnabled: () => false, describe: () => 'Constants feature flag' };
911

1012
beforeEach(() => {
11-
hoverProvider = new TemplateSectionHoverProvider();
13+
hoverProvider = new TemplateSectionHoverProvider(mockFeatureFlagEnabled);
1214
});
1315

1416
function createTopLevelContext(section: string) {
@@ -95,6 +97,26 @@ describe('TemplateSectionHoverProvider', () => {
9597
expect(result).toBe(templateSectionDocsMap.get(TopLevelSection.Description));
9698
});
9799

100+
it('should return documentation for Constants section when feature flag is enabled', () => {
101+
const provider = new TemplateSectionHoverProvider(mockFeatureFlagEnabled);
102+
const mockContext = createTopLevelContext(TopLevelSection.Constants);
103+
104+
const result = provider.getInformation(mockContext);
105+
106+
expect(result).toBe(templateSectionDocsMap.get(TopLevelSection.Constants));
107+
expect(result).toBeDefined();
108+
expect(result).toContain('Constants');
109+
});
110+
111+
it('should return undefined for Constants section when feature flag is disabled', () => {
112+
const provider = new TemplateSectionHoverProvider(mockFeatureFlagDisabled);
113+
const mockContext = createTopLevelContext(TopLevelSection.Constants);
114+
115+
const result = provider.getInformation(mockContext);
116+
117+
expect(result).toBeUndefined();
118+
});
119+
98120
it('should return undefined for Unknown section', () => {
99121
const mockContext = createTopLevelContext('SomeUnknownSection');
100122
const result = hoverProvider.getInformation(mockContext);

tst/utils/TemplateBuilder.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,8 @@ export class TemplateBuilder {
143143
this.schemaRetriever,
144144
undefined,
145145
);
146-
this.hoverRouter = new HoverRouter(this.contextManager, this.schemaRetriever);
146+
const mockFeatureFlag = { isEnabled: () => true, describe: () => 'Constants feature flag' };
147+
this.hoverRouter = new HoverRouter(this.contextManager, this.schemaRetriever, mockFeatureFlag);
147148
this.initialize(startingContent);
148149
}
149150

0 commit comments

Comments
 (0)