UNPKG

graphql-compose-mongoose

Version:

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

139 lines (128 loc) 6.7 kB
"use strict"; var _graphqlCompose = require("graphql-compose"); var _composeWithMongooseDiscriminators = require("../../composeWithMongooseDiscriminators"); var _characterModels = require("../__mocks__/characterModels"); const _getCharacterModels = (0, _characterModels.getCharacterModels)('type'), CharacterModel = _getCharacterModels.CharacterModel; const CharacterDTC = (0, _composeWithMongooseDiscriminators.composeWithMongooseDiscriminators)(CharacterModel); const DKeyFieldName = CharacterDTC.getDKey(); const DKeyETC = CharacterDTC.getDKeyETC(); const DInterfaceTC = CharacterDTC.getDInterface(); describe('prepareBaseResolvers()', () => { describe('setDKeyEnumOnITCArgs()', () => { const resolversWithFilterArgs = []; const resolversWithRecordArgs = []; const resolversWithRecordsArgs = []; const interestArgs = ['filter', 'record', 'records']; beforeAll(() => { const resolvers = CharacterDTC.getResolvers(); // map resolvers.forEach(resolver => { const argNames = resolver.getArgNames(); var _iteratorNormalCompletion = true; var _didIteratorError = false; var _iteratorError = undefined; try { for (var _iterator = argNames[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { const argName = _step.value; if (argName === interestArgs[0]) { resolversWithFilterArgs.push(resolver); } if (argName === interestArgs[1]) { resolversWithRecordArgs.push(resolver); } if (argName === interestArgs[2]) { resolversWithRecordsArgs.push(resolver); } } } catch (err) { _didIteratorError = true; _iteratorError = err; } finally { try { if (!_iteratorNormalCompletion && _iterator.return != null) { _iterator.return(); } } finally { if (_didIteratorError) { throw _iteratorError; } } } }); }); it('should set DKey field type to DKeyETC on filter args', () => { for (var _i = 0; _i < resolversWithFilterArgs.length; _i++) { const resolver = resolversWithFilterArgs[_i]; expect(interestArgs[0]).toEqual('filter'); expect(resolver.getArgTC(interestArgs[0]).getFieldConfig(DKeyFieldName).type).toEqual(CharacterDTC.getDKeyETC().getType()); } }); it('should set DKey field type to DKeyETC on record args', () => { for (var _i2 = 0; _i2 < resolversWithRecordArgs.length; _i2++) { const resolver = resolversWithRecordArgs[_i2]; expect(interestArgs[1]).toEqual('record'); if (resolver.name === 'createOne') { expect(resolver.getArgTC(interestArgs[1]).getFieldConfig(DKeyFieldName).type).toEqual(_graphqlCompose.graphql.GraphQLNonNull(DKeyETC.getType())); } else { expect(resolver.getArgTC(interestArgs[1]).getFieldConfig(DKeyFieldName).type).toEqual(DKeyETC.getType()); } } }); it('should set DKey field type to DKeyETC on records args', () => { for (var _i3 = 0; _i3 < resolversWithRecordsArgs.length; _i3++) { const resolver = resolversWithRecordsArgs[_i3]; expect(interestArgs[2]).toEqual('records'); expect(resolver.getArgTC(interestArgs[2]).getFieldConfig(DKeyFieldName).type).toEqual(_graphqlCompose.graphql.GraphQLNonNull(DKeyETC.getType())); } }); }); describe('createOne: Resolver', () => { const resolver = CharacterDTC.getResolver('createOne'); it('should set resolver record field type to DInterface', () => { expect(resolver.getTypeComposer().getFieldType('record')).toEqual(DInterfaceTC.getType()); }); }); describe('createMany: Resolver', () => { const resolver = CharacterDTC.getResolver('createMany'); it('should set resolver records field type to NonNull Plural DInterface', () => { expect(resolver.getTypeComposer().getFieldType('records')).toEqual(new _graphqlCompose.graphql.GraphQLNonNull(_graphqlCompose.graphql.GraphQLList(DInterfaceTC.getType()))); }); }); describe('findById: Resolver', () => { const resolver = CharacterDTC.getResolver('findByIds'); it('should set resolver type to DInterface List', () => { expect(resolver.getType()).toEqual(_graphqlCompose.graphql.GraphQLList(CharacterDTC.getDInterface().getType())); }); }); describe('findMany: Resolver', () => { it('should set resolver type to DInterface List', () => { expect(CharacterDTC.getResolver('findMany').getType()).toEqual(_graphqlCompose.graphql.GraphQLList(DInterfaceTC.getType())); }); }); it('should set resolver type to DInterface, findOne', () => { expect(CharacterDTC.getResolver('findOne').getType()).toEqual(CharacterDTC.getDInterface().getType()); }); it('should set resolver type to DInterface, findById', () => { expect(CharacterDTC.getResolver('findById').getType()).toEqual(CharacterDTC.getDInterface().getType()); }); it('should set resolver record field type to DInterface, updateOne', () => { expect(CharacterDTC.getResolver('updateOne').getTypeComposer().getFieldType('record')).toEqual(CharacterDTC.getDInterface().getType()); }); it('should set resolver record field type to DInterface, updateById', () => { expect(CharacterDTC.getResolver('updateById').getTypeComposer().getFieldType('record')).toEqual(CharacterDTC.getDInterface().getType()); }); it('should set resolver record field type to DInterface, ', () => { expect(CharacterDTC.getResolver('removeById').getTypeComposer().getFieldType('record')).toEqual(CharacterDTC.getDInterface().getType()); }); it('should set DKey field type to NonNull(DKeyETC) on record arg, createOne', () => { expect(CharacterDTC.getResolver('createOne').getArgTC('record').getFieldType(CharacterDTC.getDKey())).toEqual(_graphqlCompose.graphql.GraphQLNonNull(CharacterDTC.getDKeyETC().getType())); }); it('should set type on items in pagination resolver to DInterface List, pagination', () => { expect(CharacterDTC.getResolver('pagination').getTypeComposer().getFieldType('items')).toEqual(_graphqlCompose.graphql.GraphQLList(CharacterDTC.getDInterface().getType())); }); it('should clone, rename edges field on connection resolver, connection', () => { const newName = `${CharacterDTC.getTypeName()}Edge`; const connectionRS = CharacterDTC.getResolver('connection'); expect(connectionRS.getTypeComposer().getFieldTC('edges').getTypeName()).toEqual(newName); }); });