UNPKG

graphql-compose-mongoose

Version:

Plugin for `graphql-compose` which derive a graphql types from a mongoose model.

61 lines 2.63 kB
import { InputTypeComposer, schemaComposer } from 'graphql-compose'; import { GraphQLInputObjectType, GraphQLNonNull } from 'graphql-compose/lib/graphql'; import { recordHelperArgs } from '../record'; import { UserModel } from '../../../__mocks__/userModel'; import { convertModelToGraphQL } from '../../../fieldsConverter'; describe('Resolver helper `record` ->', () => { let UserTC; beforeEach(() => { schemaComposer.clear(); UserTC = convertModelToGraphQL(UserModel, 'User', schemaComposer); }); describe('recordHelperArgs()', () => { it('should throw error if `recordTypeName` not provided in opts', () => { expect(() => recordHelperArgs(UserTC)).toThrowError('provide non-empty `recordTypeName`'); }); it('should return input field', () => { const args = recordHelperArgs(UserTC, { recordTypeName: 'RecordUserType' }); expect(args.record.type).toBeInstanceOf(GraphQLInputObjectType); }); it('should reuse existed inputType', () => { const existedType = InputTypeComposer.create({ name: 'RecordUserType', fields: {} }); schemaComposer.set('RecordUserType', existedType); const args = recordHelperArgs(UserTC, { recordTypeName: 'RecordUserType' }); expect(args.record.type).toBe(existedType.getType()); }); it('should for opts.isRequired=true return GraphQLNonNull', () => { const args = recordHelperArgs(UserTC, { recordTypeName: 'RecordUserType', isRequired: true }); expect(args.record.type).toBeInstanceOf(GraphQLNonNull); }); it('should remove fields via opts.removeFields', () => { const args = recordHelperArgs(UserTC, { recordTypeName: 'RecordUserType', removeFields: ['name', 'age'] }); const inputTypeComposer = new InputTypeComposer(args.record.type); expect(inputTypeComposer.hasField('name')).toBe(false); expect(inputTypeComposer.hasField('age')).toBe(false); expect(inputTypeComposer.hasField('gender')).toBe(true); }); it('should set required fields via opts.requiredFields', () => { const args = recordHelperArgs(UserTC, { recordTypeName: 'RecordUserType', requiredFields: ['name', 'age'] }); const inputTypeComposer = new InputTypeComposer(args.record.type); expect(inputTypeComposer.getFieldType('name')).toBeInstanceOf(GraphQLNonNull); expect(inputTypeComposer.getFieldType('age')).toBeInstanceOf(GraphQLNonNull); expect(inputTypeComposer.getFieldType('gender')).not.toBeInstanceOf(GraphQLNonNull); }); }); });