Skip to content

Commit ee89233

Browse files
Copilotabraham
andcommitted
Fix entity names to use PascalCase instead of underscores
Co-authored-by: abraham <3341+abraham@users.noreply.github.com>
1 parent 73a6400 commit ee89233

11 files changed

+161
-105
lines changed

dist/schema.json

Lines changed: 72 additions & 72 deletions
Large diffs are not rendered by default.

src/__tests__/generators/EntityConverter.enum-dedup.test.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ describe('EntityConverter enum deduplication', () => {
2929
],
3030
},
3131
{
32-
name: 'V1_Filter',
32+
name: 'V1Filter',
3333
description: 'A V1 filter',
3434
attributes: [
3535
{
@@ -52,7 +52,7 @@ describe('EntityConverter enum deduplication', () => {
5252

5353
// Check that both entities exist
5454
expect(spec.components?.schemas?.Filter).toBeDefined();
55-
expect(spec.components?.schemas?.V1_Filter).toBeDefined();
55+
expect(spec.components?.schemas?.V1Filter).toBeDefined();
5656

5757
// Check that FilterContextEnum component is created (named after first entity)
5858
expect(spec.components?.schemas?.FilterContextEnum).toBeDefined();
@@ -68,7 +68,7 @@ describe('EntityConverter enum deduplication', () => {
6868

6969
// Check that both entities reference the shared component
7070
const filterSchema = spec.components!.schemas!.Filter;
71-
const v1FilterSchema = spec.components!.schemas!.V1_Filter;
71+
const v1FilterSchema = spec.components!.schemas!.V1Filter;
7272

7373
// Both should have context property as array with items referencing FilterContext
7474
expect(filterSchema.properties?.context).toBeDefined();
@@ -173,7 +173,7 @@ describe('EntityConverter enum deduplication', () => {
173173
],
174174
},
175175
{
176-
name: 'V1_Filter',
176+
name: 'V1Filter',
177177
description: 'A V1 filter',
178178
attributes: [
179179
{
@@ -190,7 +190,7 @@ describe('EntityConverter enum deduplication', () => {
190190

191191
// Should create separate context components for different enums
192192
const filterSchema = spec.components!.schemas!.Filter;
193-
const v1FilterSchema = spec.components!.schemas!.V1_Filter;
193+
const v1FilterSchema = spec.components!.schemas!.V1Filter;
194194

195195
const filterContext1 = filterSchema.properties!.context;
196196
const filterContext2 = v1FilterSchema.properties!.context;

src/__tests__/generators/EntityConverter.trends-link-inheritance.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ describe('TrendsLink Entity Inheritance', () => {
124124
entityConverter.convertEntities(entities, spec);
125125

126126
// Verify Trends::Link has all PreviewCard properties plus its own
127-
const trendsLinkSchema = spec.components?.schemas?.Trends_Link;
127+
const trendsLinkSchema = spec.components?.schemas?.TrendsLink;
128128
expect(trendsLinkSchema).toBeDefined();
129129
expect(trendsLinkSchema?.properties).toBeDefined();
130130

src/__tests__/generators/OpenAPIGenerator.enum-refactor.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ describe('OpenAPIGenerator enum refactoring', () => {
8989
spec.components?.schemas?.AccountSettingPrivacyLevelEnum
9090
).toBeDefined();
9191

92-
const settingSchema = spec.components!.schemas!['Account_Setting'];
92+
const settingSchema = spec.components!.schemas!['AccountSetting'];
9393
expect(settingSchema.properties!.privacy_level.$ref).toBe(
9494
'#/components/schemas/AccountSettingPrivacyLevelEnum'
9595
);

src/__tests__/generators/OpenAPIGenerator.externalDocs.test.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,7 @@ describe('OpenAPIGenerator ExternalDocs Generation', () => {
196196

197197
const spec = generator.generateSchema(entities, []);
198198

199-
const trendsLinkSchema = spec.components?.schemas?.Trends_Link;
199+
const trendsLinkSchema = spec.components?.schemas?.TrendsLink;
200200
expect(trendsLinkSchema).toBeDefined();
201201
expect(trendsLinkSchema?.externalDocs).toBeDefined();
202202
expect(trendsLinkSchema?.externalDocs?.url).toBe(
@@ -225,7 +225,7 @@ describe('OpenAPIGenerator ExternalDocs Generation', () => {
225225

226226
const spec = generator.generateSchema(entities, []);
227227

228-
const dimensionSchema = spec.components?.schemas?.Admin_Dimension;
228+
const dimensionSchema = spec.components?.schemas?.AdminDimension;
229229
expect(dimensionSchema).toBeDefined();
230230
expect(dimensionSchema?.externalDocs).toBeDefined();
231231
expect(dimensionSchema?.externalDocs?.url).toBe(
@@ -254,7 +254,7 @@ describe('OpenAPIGenerator ExternalDocs Generation', () => {
254254

255255
const spec = generator.generateSchema(entities, []);
256256

257-
const dimensionDataSchema = spec.components?.schemas?.Admin_DimensionData;
257+
const dimensionDataSchema = spec.components?.schemas?.AdminDimensionData;
258258
expect(dimensionDataSchema).toBeDefined();
259259
expect(dimensionDataSchema?.externalDocs).toBeDefined();
260260
expect(dimensionDataSchema?.externalDocs?.url).toBe(
@@ -282,7 +282,7 @@ describe('OpenAPIGenerator ExternalDocs Generation', () => {
282282

283283
const spec = generator.generateSchema(entities, []);
284284

285-
const adminSchema = spec.components?.schemas?.Admin_CanonicalEmailBlock;
285+
const adminSchema = spec.components?.schemas?.AdminCanonicalEmailBlock;
286286
expect(adminSchema).toBeDefined();
287287
expect(adminSchema?.externalDocs).toBeDefined();
288288
expect(adminSchema?.externalDocs?.url).toBe(

src/__tests__/generators/OpenAPIGenerator.test.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -188,20 +188,20 @@ describe('OpenAPIGenerator', () => {
188188

189189
const spec = generator.generateSchema(entities, []);
190190

191-
// Check that schema names are sanitized (:: replaced with _, spaces replaced with _)
192-
expect(spec.components?.schemas?.['Admin_DomainAllow']).toBeDefined();
193-
expect(spec.components?.schemas?.['Status_Mention']).toBeDefined();
194-
expect(spec.components?.schemas?.['Field_entity']).toBeDefined();
191+
// Check that schema names are sanitized (:: and spaces converted to PascalCase)
192+
expect(spec.components?.schemas?.['AdminDomainAllow']).toBeDefined();
193+
expect(spec.components?.schemas?.['StatusMention']).toBeDefined();
194+
expect(spec.components?.schemas?.['FieldEntity']).toBeDefined();
195195

196196
// Check that original names with :: and spaces are not present
197197
expect(spec.components?.schemas?.['Admin::DomainAllow']).toBeUndefined();
198198
expect(spec.components?.schemas?.['Status::Mention']).toBeUndefined();
199199
expect(spec.components?.schemas?.['Field entity']).toBeUndefined();
200200

201201
// Check that references are also sanitized
202-
const statusMentionSchema = spec.components!.schemas!['Status_Mention'];
202+
const statusMentionSchema = spec.components!.schemas!['StatusMention'];
203203
expect(statusMentionSchema.properties?.['user']?.$ref).toBe(
204-
'#/components/schemas/Admin_DomainAllow'
204+
'#/components/schemas/AdminDomainAllow'
205205
);
206206

207207
// Verify all schema names match OpenAPI regex ^[a-zA-Z0-9\.\-_]+$

src/__tests__/generators/OpenAPIGenerator.type-enum-separation.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -136,8 +136,8 @@ describe('OpenAPIGenerator type enum separation', () => {
136136
'#/components/schemas/PreviewCardTypeEnum'
137137
);
138138

139-
// Check that Trends_Link also uses PreviewCardTypeEnum
140-
const trendsLinkSchema = schema.components!.schemas!.Trends_Link;
139+
// Check that TrendsLink also uses PreviewCardTypeEnum
140+
const trendsLinkSchema = schema.components!.schemas!.TrendsLink;
141141
const trendsLinkTypeProp = trendsLinkSchema.properties!.type;
142142
expect(trendsLinkTypeProp.$ref).toBe(
143143
'#/components/schemas/PreviewCardTypeEnum'

src/__tests__/generators/UtilityHelpers.test.ts

Lines changed: 34 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -86,13 +86,44 @@ describe('UtilityHelpers', () => {
8686
describe('sanitizeSchemaName', () => {
8787
it('should replace :: with _ and spaces with _', () => {
8888
expect(utilityHelpers.sanitizeSchemaName('Test::Entity')).toBe(
89-
'Test_Entity'
89+
'TestEntity'
9090
);
9191
expect(utilityHelpers.sanitizeSchemaName('Test Entity')).toBe(
92-
'Test_Entity'
92+
'TestEntity'
9393
);
9494
expect(utilityHelpers.sanitizeSchemaName('Test::Entity Name')).toBe(
95-
'Test_Entity_Name'
95+
'TestEntityName'
96+
);
97+
});
98+
99+
it('should convert underscores to PascalCase', () => {
100+
expect(utilityHelpers.sanitizeSchemaName('Status_Tag')).toBe('StatusTag');
101+
expect(utilityHelpers.sanitizeSchemaName('Admin_Account')).toBe(
102+
'AdminAccount'
103+
);
104+
expect(utilityHelpers.sanitizeSchemaName('Poll_Option')).toBe('PollOption');
105+
expect(utilityHelpers.sanitizeSchemaName('Status_Mention')).toBe(
106+
'StatusMention'
107+
);
108+
});
109+
110+
it('should handle mixed separators', () => {
111+
expect(utilityHelpers.sanitizeSchemaName('Test::Entity_Name')).toBe(
112+
'TestEntityName'
113+
);
114+
expect(utilityHelpers.sanitizeSchemaName('Admin::Account_Setting')).toBe(
115+
'AdminAccountSetting'
116+
);
117+
expect(utilityHelpers.sanitizeSchemaName('Admin::CanonicalEmailBlock')).toBe(
118+
'AdminCanonicalEmailBlock'
119+
);
120+
});
121+
122+
it('should preserve already PascalCase names', () => {
123+
expect(utilityHelpers.sanitizeSchemaName('Account')).toBe('Account');
124+
expect(utilityHelpers.sanitizeSchemaName('StatusTag')).toBe('StatusTag');
125+
expect(utilityHelpers.sanitizeSchemaName('AdminAccount')).toBe(
126+
'AdminAccount'
96127
);
97128
});
98129
});

src/__tests__/integration/filter-context-dedup.test.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,13 +33,13 @@ describe('Integration: Filter context deduplication', () => {
3333
'thread',
3434
]);
3535

36-
// Check that both Filter and V1_Filter exist
36+
// Check that both Filter and V1Filter exist
3737
expect(schema.components?.schemas?.Filter).toBeDefined();
38-
expect(schema.components?.schemas?.V1_Filter).toBeDefined();
38+
expect(schema.components?.schemas?.V1Filter).toBeDefined();
3939

4040
// Check that both entities reference the shared FilterContext component
4141
const filterSchema = schema.components!.schemas!.Filter;
42-
const v1FilterSchema = schema.components!.schemas!.V1_Filter;
42+
const v1FilterSchema = schema.components!.schemas!.V1Filter;
4343

4444
expect(filterSchema.properties?.context).toBeDefined();
4545
expect(v1FilterSchema.properties?.context).toBeDefined();
@@ -48,12 +48,12 @@ describe('Integration: Filter context deduplication', () => {
4848
const v1FilterContextProp = v1FilterSchema.properties!.context;
4949

5050
// Filter should not be nullable (added in v4.0.0, before supported v4.3.0),
51-
// but V1_Filter should not be nullable (added in v2.4.3, different major)
51+
// but V1Filter should not be nullable (added in v2.4.3, different major)
5252
expect(filterContextProp.type).toEqual('array');
5353
expect(v1FilterContextProp.type).toBe('array');
5454

5555
// Check that both use the FilterContextEnum schema or have the expected enum values
56-
// V1_Filter uses $ref (non-nullable), Filter has inline enum (nullable)
56+
// V1Filter uses $ref (non-nullable), Filter has inline enum (nullable)
5757
expect(v1FilterContextProp.items?.$ref).toBe(
5858
'#/components/schemas/FilterContextEnum'
5959
);
@@ -79,7 +79,7 @@ describe('Integration: Filter context deduplication', () => {
7979
expect(filterContextProp.enum).toBeUndefined();
8080
expect(v1FilterContextProp.enum).toBeUndefined();
8181

82-
// V1_Filter (non-nullable) should use shared schema
82+
// V1Filter (non-nullable) should use shared schema
8383
expect(v1FilterContextProp.items?.enum).toBeUndefined();
8484

8585
// Filter (nullable) may have inline enum values instead of shared schema

src/__tests__/integration/trends-link-inheritance.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ describe('TrendsLink Entity Integration Test', () => {
4949

5050
// Verify both schemas exist
5151
const previewCardSchema = spec.components?.schemas?.PreviewCard;
52-
const trendsLinkSchema = spec.components?.schemas?.Trends_Link;
52+
const trendsLinkSchema = spec.components?.schemas?.TrendsLink;
5353

5454
expect(previewCardSchema).toBeDefined();
5555
expect(trendsLinkSchema).toBeDefined();
@@ -89,7 +89,7 @@ describe('TrendsLink Entity Integration Test', () => {
8989

9090
entityConverter.convertEntities(entities, spec);
9191

92-
const trendsLinkSchema = spec.components?.schemas?.Trends_Link;
92+
const trendsLinkSchema = spec.components?.schemas?.TrendsLink;
9393
expect(trendsLinkSchema?.properties).toBeDefined();
9494

9595
const properties = Object.keys(trendsLinkSchema!.properties!);

0 commit comments

Comments
 (0)