UNPKG

graphql-compose-mongoose

Version:

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

60 lines 2.51 kB
import { schemaComposer, NonNullComposer, InputTypeComposer } from 'graphql-compose'; 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(InputTypeComposer); }); it('should reuse existed inputType', () => { const existedType = schemaComposer.createInputTC({ name: 'RecordUserType', fields: {} }); schemaComposer.set('RecordUserType', existedType); const args = recordHelperArgs(UserTC, { recordTypeName: 'RecordUserType' }); expect(args.record.type).toBe(existedType); }); it('should for opts.isRequired=true return NonNullComposer', () => { const args = recordHelperArgs(UserTC, { recordTypeName: 'RecordUserType', isRequired: true }); expect(args.record.type).toBeInstanceOf(NonNullComposer); }); it('should remove fields via opts.removeFields', () => { const args = recordHelperArgs(UserTC, { recordTypeName: 'RecordUserType', removeFields: ['name', 'age'] }); const 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 = args.record.type; expect(inputTypeComposer.getField('name').type).toBeInstanceOf(NonNullComposer); expect(inputTypeComposer.getField('age').type).toBeInstanceOf(NonNullComposer); expect(inputTypeComposer.getField('gender').type).not.toBeInstanceOf(NonNullComposer); }); }); });