Skip to content

Commit 95bd83f

Browse files
authored
fix: enum values update (#120)
Update enum values generation when it contains underscores to match Typescript generator - Will use `transformUnderscore` config for enum type name only - Enum keys underscores are always transformed, whatever the config from `transformUnderscore` Update generation when `enumsAsTypes` is `true`: - We need to keep the value as is because it's the string value to be sent
1 parent 43c8e51 commit 95bd83f

File tree

6 files changed

+85
-56
lines changed

6 files changed

+85
-56
lines changed

src/index.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -273,11 +273,11 @@ const getNamedType = (opts: Options<NamedTypeNode>): string | number | boolean =
273273
opts.typeNamesConvention,
274274
opts.transformUnderscore,
275275
);
276-
const enumConverter = createNameConverter(opts.enumValuesConvention, opts.transformUnderscore);
276+
const enumConverter = createNameConverter(opts.enumValuesConvention, !opts.enumsAsTypes);
277277
const value = foundType.values ? foundType.values[0] : '';
278278
return handleValueGeneration(opts, undefined, () =>
279279
opts.enumsAsTypes
280-
? `'${enumConverter(value)}'`
280+
? `'${value}'`
281281
: `${typenameConverter(foundType.name, opts.enumsPrefix)}.${enumConverter(value)}`,
282282
);
283283
}

tests/__snapshots__/typescript-mock-data.spec.ts.snap

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1980,12 +1980,12 @@ export const aUser = (overrides?: Partial<User>): User => {
19801980
creationDate: overrides && overrides.hasOwnProperty('creationDate') ? overrides.creationDate! : '1970-01-09T16:33:21.532Z',
19811981
login: overrides && overrides.hasOwnProperty('login') ? overrides.login! : 'libero',
19821982
avatar: overrides && overrides.hasOwnProperty('avatar') ? overrides.avatar! : anAvatar(),
1983-
status: overrides && overrides.hasOwnProperty('status') ? overrides.status! : 'Online',
1984-
customStatus: overrides && overrides.hasOwnProperty('customStatus') ? overrides.customStatus! : 'HasXyzStatus',
1983+
status: overrides && overrides.hasOwnProperty('status') ? overrides.status! : 'ONLINE',
1984+
customStatus: overrides && overrides.hasOwnProperty('customStatus') ? overrides.customStatus! : 'hasXYZStatus',
19851985
scalarValue: overrides && overrides.hasOwnProperty('scalarValue') ? overrides.scalarValue! : 'neque',
19861986
camelCaseThing: overrides && overrides.hasOwnProperty('camelCaseThing') ? overrides.camelCaseThing! : aCamelCaseThing(),
19871987
unionThing: overrides && overrides.hasOwnProperty('unionThing') ? overrides.unionThing! : anAvatar(),
1988-
prefixedEnum: overrides && overrides.hasOwnProperty('prefixedEnum') ? overrides.prefixedEnum! : 'PrefixedValue',
1988+
prefixedEnum: overrides && overrides.hasOwnProperty('prefixedEnum') ? overrides.prefixedEnum! : 'PREFIXED_VALUE',
19891989
};
19901990
};
19911991

@@ -2702,7 +2702,7 @@ export const aUser = (overrides?: Partial<User>): User => {
27022702
scalarValue: overrides && overrides.hasOwnProperty('scalarValue') ? overrides.scalarValue! : 'neque',
27032703
camelCaseThing: overrides && overrides.hasOwnProperty('camelCaseThing') ? overrides.camelCaseThing! : aCamelCaseThing(),
27042704
unionThing: overrides && overrides.hasOwnProperty('unionThing') ? overrides.unionThing! : anAvatar(),
2705-
prefixedEnum: overrides && overrides.hasOwnProperty('prefixedEnum') ? overrides.prefixedEnum! : Prefixed_Enum.Prefixed_Value,
2705+
prefixedEnum: overrides && overrides.hasOwnProperty('prefixedEnum') ? overrides.prefixedEnum! : Prefixed_Enum.PrefixedValue,
27062706
};
27072707
};
27082708

@@ -2776,12 +2776,12 @@ export const aUser = (overrides?: Partial<User>): User => {
27762776
creationDate: overrides && overrides.hasOwnProperty('creationDate') ? overrides.creationDate! : '1970-01-09T16:33:21.532Z',
27772777
login: overrides && overrides.hasOwnProperty('login') ? overrides.login! : 'libero',
27782778
avatar: overrides && overrides.hasOwnProperty('avatar') ? overrides.avatar! : anAvatar(),
2779-
status: overrides && overrides.hasOwnProperty('status') ? overrides.status! : 'Online',
2780-
customStatus: overrides && overrides.hasOwnProperty('customStatus') ? overrides.customStatus! : 'HasXyzStatus',
2779+
status: overrides && overrides.hasOwnProperty('status') ? overrides.status! : 'ONLINE',
2780+
customStatus: overrides && overrides.hasOwnProperty('customStatus') ? overrides.customStatus! : 'hasXYZStatus',
27812781
scalarValue: overrides && overrides.hasOwnProperty('scalarValue') ? overrides.scalarValue! : 'neque',
27822782
camelCaseThing: overrides && overrides.hasOwnProperty('camelCaseThing') ? overrides.camelCaseThing! : aCamelCaseThing(),
27832783
unionThing: overrides && overrides.hasOwnProperty('unionThing') ? overrides.unionThing! : anAvatar(),
2784-
prefixedEnum: overrides && overrides.hasOwnProperty('prefixedEnum') ? overrides.prefixedEnum! : 'Prefixed_Value',
2784+
prefixedEnum: overrides && overrides.hasOwnProperty('prefixedEnum') ? overrides.prefixedEnum! : 'PREFIXED_VALUE',
27852785
};
27862786
};
27872787

tests/enumValues/__snapshots__/spec.ts.snap

Lines changed: 33 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
11
// Jest Snapshot v1, https://goo.gl/fbAQLP
22

3-
exports[`enumValues config having 'change-case-all#pascalCase' value should keep underscores if 'transformUnderscore' is false 1`] = `
3+
exports[`enumValues config having 'change-case-all#pascalCase' value should keep underscores for type name only if 'transformUnderscore' is false 1`] = `
44
"
55
export const aMyType = (overrides?: Partial<MyType>): MyType => {
66
return {
7-
underscoreEnum: overrides && overrides.hasOwnProperty('underscoreEnum') ? overrides.underscoreEnum! : UnderscoreEnum._Id,
7+
underscoreEnum: overrides && overrides.hasOwnProperty('underscoreEnum') ? overrides.underscoreEnum! : UnderscoreEnum.Id,
88
pascalCaseEnum: overrides && overrides.hasOwnProperty('pascalCaseEnum') ? overrides.pascalCaseEnum! : PascalCaseEnum.PascalCase,
99
camelCaseEnum: overrides && overrides.hasOwnProperty('camelCaseEnum') ? overrides.camelCaseEnum! : CamelCaseEnum.CamelCase,
10-
snakeCaseEnum: overrides && overrides.hasOwnProperty('snakeCaseEnum') ? overrides.snakeCaseEnum! : SnakeCaseEnum.Snake_Case,
11-
screamingSnakeCaseEnum: overrides && overrides.hasOwnProperty('screamingSnakeCaseEnum') ? overrides.screamingSnakeCaseEnum! : ScreamingSnakeCaseEnum.Screaming_Snake_Case,
10+
snakeCaseEnum: overrides && overrides.hasOwnProperty('snakeCaseEnum') ? overrides.snakeCaseEnum! : SnakeCaseEnum.SnakeCase,
11+
screamingSnakeCaseEnum: overrides && overrides.hasOwnProperty('screamingSnakeCaseEnum') ? overrides.screamingSnakeCaseEnum! : ScreamingSnakeCaseEnum.ScreamingSnakeCase,
12+
pascalCase_withUnderscore: overrides && overrides.hasOwnProperty('pascalCase_withUnderscore') ? overrides.pascalCase_withUnderscore! : PascalCase_WithUnderscore.OtherSnakeCase,
1213
};
1314
};
1415
"
@@ -18,11 +19,12 @@ exports[`enumValues config having 'change-case-all#pascalCase' value should keep
1819
"
1920
export const aMyType = (overrides?: Partial<MyType>): MyType => {
2021
return {
21-
underscoreEnum: overrides && overrides.hasOwnProperty('underscoreEnum') ? overrides.underscoreEnum! : '_Id',
22+
underscoreEnum: overrides && overrides.hasOwnProperty('underscoreEnum') ? overrides.underscoreEnum! : '_id',
2223
pascalCaseEnum: overrides && overrides.hasOwnProperty('pascalCaseEnum') ? overrides.pascalCaseEnum! : 'PascalCase',
23-
camelCaseEnum: overrides && overrides.hasOwnProperty('camelCaseEnum') ? overrides.camelCaseEnum! : 'CamelCase',
24-
snakeCaseEnum: overrides && overrides.hasOwnProperty('snakeCaseEnum') ? overrides.snakeCaseEnum! : 'Snake_Case',
25-
screamingSnakeCaseEnum: overrides && overrides.hasOwnProperty('screamingSnakeCaseEnum') ? overrides.screamingSnakeCaseEnum! : 'Screaming_Snake_Case',
24+
camelCaseEnum: overrides && overrides.hasOwnProperty('camelCaseEnum') ? overrides.camelCaseEnum! : 'camelCase',
25+
snakeCaseEnum: overrides && overrides.hasOwnProperty('snakeCaseEnum') ? overrides.snakeCaseEnum! : 'snake_case',
26+
screamingSnakeCaseEnum: overrides && overrides.hasOwnProperty('screamingSnakeCaseEnum') ? overrides.screamingSnakeCaseEnum! : 'SCREAMING_SNAKE_CASE',
27+
pascalCase_withUnderscore: overrides && overrides.hasOwnProperty('pascalCase_withUnderscore') ? overrides.pascalCase_withUnderscore! : 'other_snake_case',
2628
};
2729
};
2830
"
@@ -37,6 +39,7 @@ export const aMyType = (overrides?: Partial<MyType>): MyType => {
3739
camelCaseEnum: overrides && overrides.hasOwnProperty('camelCaseEnum') ? overrides.camelCaseEnum! : CamelCaseEnum.CamelCase,
3840
snakeCaseEnum: overrides && overrides.hasOwnProperty('snakeCaseEnum') ? overrides.snakeCaseEnum! : SnakeCaseEnum.SnakeCase,
3941
screamingSnakeCaseEnum: overrides && overrides.hasOwnProperty('screamingSnakeCaseEnum') ? overrides.screamingSnakeCaseEnum! : ScreamingSnakeCaseEnum.ScreamingSnakeCase,
42+
pascalCase_withUnderscore: overrides && overrides.hasOwnProperty('pascalCase_withUnderscore') ? overrides.pascalCase_withUnderscore! : PascalCaseWithUnderscore.OtherSnakeCase,
4043
};
4144
};
4245
"
@@ -51,6 +54,7 @@ export const aMyType = (overrides?: Partial<MyType>): MyType => {
5154
camelCaseEnum: overrides && overrides.hasOwnProperty('camelCaseEnum') ? overrides.camelCaseEnum! : CamelCaseEnum.CAMELCASE,
5255
snakeCaseEnum: overrides && overrides.hasOwnProperty('snakeCaseEnum') ? overrides.snakeCaseEnum! : SnakeCaseEnum.SNAKE_CASE,
5356
screamingSnakeCaseEnum: overrides && overrides.hasOwnProperty('screamingSnakeCaseEnum') ? overrides.screamingSnakeCaseEnum! : ScreamingSnakeCaseEnum.SCREAMING_SNAKE_CASE,
57+
pascalCase_withUnderscore: overrides && overrides.hasOwnProperty('pascalCase_withUnderscore') ? overrides.pascalCase_withUnderscore! : PascalCase_WithUnderscore.OTHER_SNAKE_CASE,
5458
};
5559
};
5660
"
@@ -60,11 +64,12 @@ exports[`enumValues config having 'change-case-all#upperCase' value should keep
6064
"
6165
export const aMyType = (overrides?: Partial<MyType>): MyType => {
6266
return {
63-
underscoreEnum: overrides && overrides.hasOwnProperty('underscoreEnum') ? overrides.underscoreEnum! : '_ID',
64-
pascalCaseEnum: overrides && overrides.hasOwnProperty('pascalCaseEnum') ? overrides.pascalCaseEnum! : 'PASCALCASE',
65-
camelCaseEnum: overrides && overrides.hasOwnProperty('camelCaseEnum') ? overrides.camelCaseEnum! : 'CAMELCASE',
66-
snakeCaseEnum: overrides && overrides.hasOwnProperty('snakeCaseEnum') ? overrides.snakeCaseEnum! : 'SNAKE_CASE',
67+
underscoreEnum: overrides && overrides.hasOwnProperty('underscoreEnum') ? overrides.underscoreEnum! : '_id',
68+
pascalCaseEnum: overrides && overrides.hasOwnProperty('pascalCaseEnum') ? overrides.pascalCaseEnum! : 'PascalCase',
69+
camelCaseEnum: overrides && overrides.hasOwnProperty('camelCaseEnum') ? overrides.camelCaseEnum! : 'camelCase',
70+
snakeCaseEnum: overrides && overrides.hasOwnProperty('snakeCaseEnum') ? overrides.snakeCaseEnum! : 'snake_case',
6771
screamingSnakeCaseEnum: overrides && overrides.hasOwnProperty('screamingSnakeCaseEnum') ? overrides.screamingSnakeCaseEnum! : 'SCREAMING_SNAKE_CASE',
72+
pascalCase_withUnderscore: overrides && overrides.hasOwnProperty('pascalCase_withUnderscore') ? overrides.pascalCase_withUnderscore! : 'other_snake_case',
6873
};
6974
};
7075
"
@@ -79,12 +84,13 @@ export const aMyType = (overrides?: Partial<MyType>): MyType => {
7984
camelCaseEnum: overrides && overrides.hasOwnProperty('camelCaseEnum') ? overrides.camelCaseEnum! : CamelCaseEnum.CAMELCASE,
8085
snakeCaseEnum: overrides && overrides.hasOwnProperty('snakeCaseEnum') ? overrides.snakeCaseEnum! : SnakeCaseEnum.SNAKE_CASE,
8186
screamingSnakeCaseEnum: overrides && overrides.hasOwnProperty('screamingSnakeCaseEnum') ? overrides.screamingSnakeCaseEnum! : ScreamingSnakeCaseEnum.SCREAMING_SNAKE_CASE,
87+
pascalCase_withUnderscore: overrides && overrides.hasOwnProperty('pascalCase_withUnderscore') ? overrides.pascalCase_withUnderscore! : PascalCaseWithUnderscore.OTHER_SNAKE_CASE,
8288
};
8389
};
8490
"
8591
`;
8692
87-
exports[`enumValues config having 'keep' value should have no effect if 'transformUnderscore' is false 1`] = `
93+
exports[`enumValues config having 'keep' value should have effect on enum type only if 'transformUnderscore' is false 1`] = `
8894
"
8995
export const aMyType = (overrides?: Partial<MyType>): MyType => {
9096
return {
@@ -93,6 +99,7 @@ export const aMyType = (overrides?: Partial<MyType>): MyType => {
9399
camelCaseEnum: overrides && overrides.hasOwnProperty('camelCaseEnum') ? overrides.camelCaseEnum! : CamelCaseEnum.camelCase,
94100
snakeCaseEnum: overrides && overrides.hasOwnProperty('snakeCaseEnum') ? overrides.snakeCaseEnum! : SnakeCaseEnum.snake_case,
95101
screamingSnakeCaseEnum: overrides && overrides.hasOwnProperty('screamingSnakeCaseEnum') ? overrides.screamingSnakeCaseEnum! : ScreamingSnakeCaseEnum.SCREAMING_SNAKE_CASE,
102+
pascalCase_withUnderscore: overrides && overrides.hasOwnProperty('pascalCase_withUnderscore') ? overrides.pascalCase_withUnderscore! : PascalCase_WithUnderscore.other_snake_case,
96103
};
97104
};
98105
"
@@ -107,6 +114,7 @@ export const aMyType = (overrides?: Partial<MyType>): MyType => {
107114
camelCaseEnum: overrides && overrides.hasOwnProperty('camelCaseEnum') ? overrides.camelCaseEnum! : 'camelCase',
108115
snakeCaseEnum: overrides && overrides.hasOwnProperty('snakeCaseEnum') ? overrides.snakeCaseEnum! : 'snake_case',
109116
screamingSnakeCaseEnum: overrides && overrides.hasOwnProperty('screamingSnakeCaseEnum') ? overrides.screamingSnakeCaseEnum! : 'SCREAMING_SNAKE_CASE',
117+
pascalCase_withUnderscore: overrides && overrides.hasOwnProperty('pascalCase_withUnderscore') ? overrides.pascalCase_withUnderscore! : 'other_snake_case',
110118
};
111119
};
112120
"
@@ -121,20 +129,22 @@ export const aMyType = (overrides?: Partial<MyType>): MyType => {
121129
camelCaseEnum: overrides && overrides.hasOwnProperty('camelCaseEnum') ? overrides.camelCaseEnum! : CamelCaseEnum.camelCase,
122130
snakeCaseEnum: overrides && overrides.hasOwnProperty('snakeCaseEnum') ? overrides.snakeCaseEnum! : SnakeCaseEnum.snake_case,
123131
screamingSnakeCaseEnum: overrides && overrides.hasOwnProperty('screamingSnakeCaseEnum') ? overrides.screamingSnakeCaseEnum! : ScreamingSnakeCaseEnum.SCREAMING_SNAKE_CASE,
132+
pascalCase_withUnderscore: overrides && overrides.hasOwnProperty('pascalCase_withUnderscore') ? overrides.pascalCase_withUnderscore! : PascalCaseWithUnderscore.other_snake_case,
124133
};
125134
};
126135
"
127136
`;
128137
129-
exports[`enumValues config having default value should keep underscores if 'transformUnderscore' is false 1`] = `
138+
exports[`enumValues config having default value should keep underscores for enum type only if 'transformUnderscore' is false 1`] = `
130139
"
131140
export const aMyType = (overrides?: Partial<MyType>): MyType => {
132141
return {
133-
underscoreEnum: overrides && overrides.hasOwnProperty('underscoreEnum') ? overrides.underscoreEnum! : UnderscoreEnum._Id,
142+
underscoreEnum: overrides && overrides.hasOwnProperty('underscoreEnum') ? overrides.underscoreEnum! : UnderscoreEnum.Id,
134143
pascalCaseEnum: overrides && overrides.hasOwnProperty('pascalCaseEnum') ? overrides.pascalCaseEnum! : PascalCaseEnum.PascalCase,
135144
camelCaseEnum: overrides && overrides.hasOwnProperty('camelCaseEnum') ? overrides.camelCaseEnum! : CamelCaseEnum.CamelCase,
136-
snakeCaseEnum: overrides && overrides.hasOwnProperty('snakeCaseEnum') ? overrides.snakeCaseEnum! : SnakeCaseEnum.Snake_Case,
137-
screamingSnakeCaseEnum: overrides && overrides.hasOwnProperty('screamingSnakeCaseEnum') ? overrides.screamingSnakeCaseEnum! : ScreamingSnakeCaseEnum.Screaming_Snake_Case,
145+
snakeCaseEnum: overrides && overrides.hasOwnProperty('snakeCaseEnum') ? overrides.snakeCaseEnum! : SnakeCaseEnum.SnakeCase,
146+
screamingSnakeCaseEnum: overrides && overrides.hasOwnProperty('screamingSnakeCaseEnum') ? overrides.screamingSnakeCaseEnum! : ScreamingSnakeCaseEnum.ScreamingSnakeCase,
147+
pascalCase_withUnderscore: overrides && overrides.hasOwnProperty('pascalCase_withUnderscore') ? overrides.pascalCase_withUnderscore! : PascalCase_WithUnderscore.OtherSnakeCase,
138148
};
139149
};
140150
"
@@ -144,11 +154,12 @@ exports[`enumValues config having default value should keep underscores if 'tran
144154
"
145155
export const aMyType = (overrides?: Partial<MyType>): MyType => {
146156
return {
147-
underscoreEnum: overrides && overrides.hasOwnProperty('underscoreEnum') ? overrides.underscoreEnum! : '_Id',
157+
underscoreEnum: overrides && overrides.hasOwnProperty('underscoreEnum') ? overrides.underscoreEnum! : '_id',
148158
pascalCaseEnum: overrides && overrides.hasOwnProperty('pascalCaseEnum') ? overrides.pascalCaseEnum! : 'PascalCase',
149-
camelCaseEnum: overrides && overrides.hasOwnProperty('camelCaseEnum') ? overrides.camelCaseEnum! : 'CamelCase',
150-
snakeCaseEnum: overrides && overrides.hasOwnProperty('snakeCaseEnum') ? overrides.snakeCaseEnum! : 'Snake_Case',
151-
screamingSnakeCaseEnum: overrides && overrides.hasOwnProperty('screamingSnakeCaseEnum') ? overrides.screamingSnakeCaseEnum! : 'Screaming_Snake_Case',
159+
camelCaseEnum: overrides && overrides.hasOwnProperty('camelCaseEnum') ? overrides.camelCaseEnum! : 'camelCase',
160+
snakeCaseEnum: overrides && overrides.hasOwnProperty('snakeCaseEnum') ? overrides.snakeCaseEnum! : 'snake_case',
161+
screamingSnakeCaseEnum: overrides && overrides.hasOwnProperty('screamingSnakeCaseEnum') ? overrides.screamingSnakeCaseEnum! : 'SCREAMING_SNAKE_CASE',
162+
pascalCase_withUnderscore: overrides && overrides.hasOwnProperty('pascalCase_withUnderscore') ? overrides.pascalCase_withUnderscore! : 'other_snake_case',
152163
};
153164
};
154165
"
@@ -163,6 +174,7 @@ export const aMyType = (overrides?: Partial<MyType>): MyType => {
163174
camelCaseEnum: overrides && overrides.hasOwnProperty('camelCaseEnum') ? overrides.camelCaseEnum! : CamelCaseEnum.CamelCase,
164175
snakeCaseEnum: overrides && overrides.hasOwnProperty('snakeCaseEnum') ? overrides.snakeCaseEnum! : SnakeCaseEnum.SnakeCase,
165176
screamingSnakeCaseEnum: overrides && overrides.hasOwnProperty('screamingSnakeCaseEnum') ? overrides.screamingSnakeCaseEnum! : ScreamingSnakeCaseEnum.ScreamingSnakeCase,
177+
pascalCase_withUnderscore: overrides && overrides.hasOwnProperty('pascalCase_withUnderscore') ? overrides.pascalCase_withUnderscore! : PascalCaseWithUnderscore.OtherSnakeCase,
166178
};
167179
};
168180
"

tests/enumValues/schema.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,16 @@ export default buildSchema(/* GraphQL */ `
2121
SCREAMING_SNAKE_CASE
2222
}
2323
24+
enum PascalCase_WithUnderscore {
25+
other_snake_case
26+
}
27+
2428
type MyType {
2529
underscoreEnum: UnderscoreEnum!
2630
pascalCaseEnum: PascalCaseEnum!
2731
camelCaseEnum: CamelCaseEnum!
2832
snakeCaseEnum: SnakeCaseEnum!
2933
screamingSnakeCaseEnum: ScreamingSnakeCaseEnum!
34+
pascalCase_withUnderscore: PascalCase_WithUnderscore!
3035
}
3136
`);

0 commit comments

Comments
 (0)