From b013e73084c7c012527a3d44f215f46d1f8465ae Mon Sep 17 00:00:00 2001 From: Lee Byron Date: Fri, 28 Apr 2017 18:53:25 -0700 Subject: [PATCH] Allow for nullish values when defining enums Fixes #832 --- src/type/__tests__/definition-test.js | 27 +++++++++++++++++++++++++++ src/type/definition.js | 3 +-- 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/src/type/__tests__/definition-test.js b/src/type/__tests__/definition-test.js index b23a2257bb..1eff90137a 100644 --- a/src/type/__tests__/definition-test.js +++ b/src/type/__tests__/definition-test.js @@ -184,6 +184,33 @@ describe('Type System: Example', () => { }); }); + it('defines an enum type with a value of `null` and `undefined`', () => { + const EnumTypeWithNullishValue = new GraphQLEnumType({ + name: 'EnumWithNullishValue', + values: { + NULL: { value: null }, + UNDEFINED: { value: undefined }, + } + }); + + expect(EnumTypeWithNullishValue.getValues()).to.deep.equal([ + { + name: 'NULL', + description: undefined, + isDeprecated: false, + deprecationReason: undefined, + value: null, + }, + { + name: 'UNDEFINED', + description: undefined, + isDeprecated: false, + deprecationReason: undefined, + value: undefined, + }, + ]); + }); + it('defines an object type with deprecated field', () => { const TypeWithDeprecatedField = new GraphQLObjectType({ name: 'foo', diff --git a/src/type/definition.js b/src/type/definition.js index 9fd9a459d1..1e79aeeced 100644 --- a/src/type/definition.js +++ b/src/type/definition.js @@ -9,7 +9,6 @@ */ import invariant from '../jsutils/invariant'; -import isNullish from '../jsutils/isNullish'; import { ENUM } from '../language/kinds'; import { assertValidName } from '../utilities/assertValidName'; import type { @@ -984,7 +983,7 @@ function defineEnumValues( description: value.description, isDeprecated: Boolean(value.deprecationReason), deprecationReason: value.deprecationReason, - value: isNullish(value.value) ? valueName : value.value, + value: value.hasOwnProperty('value') ? value.value : valueName, }; }); }