Skip to content

Commit c01b6af

Browse files
committed
fix(FieldConverter): illegal symbols for Enum keys now converted to _ (underscore)
1 parent fc8faea commit c01b6af

File tree

2 files changed

+19
-2
lines changed

2 files changed

+19
-2
lines changed

src/__tests__/fieldConverter-test.js

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
import { EnumTypeComposer, schemaComposer, ListComposer, SchemaComposer } from 'graphql-compose';
55
import { UserModel } from '../__mocks__/userModel';
6+
import { mongoose } from '../__mocks__/mongooseCommon';
67
import {
78
deriveComplexType,
89
getFieldsFromModel,
@@ -199,6 +200,21 @@ describe('fieldConverter', () => {
199200
expect(genderEnum.getFieldNames().length).toBe(fields.gender.enumValues.length);
200201
expect(genderEnum.getField('male').value).toBe(fields.gender.enumValues[0]);
201202
});
203+
204+
it('should work for Enums with keys preparation', () => {
205+
const model = mongoose.model(
206+
'EnumTest',
207+
mongoose.Schema({
208+
oc: {
209+
type: String,
210+
enum: ['ocpp1.6', 'ocpp2.0'],
211+
},
212+
})
213+
);
214+
const flds: any = getFieldsFromModel(model);
215+
const ocEnum = enumToGraphQL(flds.oc, '', schemaComposer);
216+
expect(ocEnum.getFieldNames()).toEqual(['ocpp1_6', 'ocpp2_0']);
217+
});
202218
});
203219

204220
describe('embeddedToGraphQL()', () => {

src/fieldsConverter.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -345,8 +345,9 @@ export function enumToGraphQL(
345345
const desc = _getFieldDescription(field);
346346
if (desc) etc.setDescription(desc);
347347

348-
const fields = valueList.reduce((result, val) => {
349-
result[val] = { value: val }; // eslint-disable-line no-param-reassign
348+
const fields = valueList.reduce((result, value) => {
349+
const key = value.replace(/[^_a-zA-Z0-9]/g, '_');
350+
result[key] = { value }; // eslint-disable-line no-param-reassign
350351
return result;
351352
}, {});
352353
etc.setFields(fields);

0 commit comments

Comments
 (0)