graphql-compose-mongoose
Version:
Plugin for `graphql-compose` which derive a graphql types from a mongoose model.
46 lines (41 loc) • 1.86 kB
JavaScript
;
var _graphqlCompose = require("graphql-compose");
var _characterModels = require("../__mocks__/characterModels");
var _composeWithMongooseDiscriminators = require("../../composeWithMongooseDiscriminators");
const {
CharacterModel,
PersonModel,
DroidModel
} = (0, _characterModels.getCharacterModels)('type');
beforeAll(() => _graphqlCompose.schemaComposer.clear());
describe('composeChildTC ->', () => {
const CharacterDTC = (0, _composeWithMongooseDiscriminators.composeWithMongooseDiscriminators)(CharacterModel);
const PersonTC = CharacterDTC.discriminator(PersonModel);
const DroidTC = CharacterDTC.discriminator(DroidModel);
it('should set DInterface to childTC', () => {
expect(DroidTC.hasInterface(CharacterDTC.getDInterface())).toBeTruthy();
expect(PersonTC.hasInterface(CharacterDTC.getDInterface())).toBeTruthy();
});
it('should copy all baseFields from BaseDTC to ChildTCs', () => {
expect(DroidTC.getFieldNames()).toEqual(expect.arrayContaining(CharacterDTC.getFieldNames()));
expect(PersonTC.getFieldNames()).toEqual(expect.arrayContaining(CharacterDTC.getFieldNames()));
});
it('should make childTC have same fieldTypes as baseTC', () => {
const characterFields = CharacterDTC.getFieldNames();
for (const field of characterFields) {
expect(DroidTC.getFieldType(field)).toEqual(CharacterDTC.getFieldType(field));
expect(PersonTC.getFieldType(field)).toEqual(CharacterDTC.getFieldType(field));
}
});
it('should operate normally like any other ObjectTypeComposer', () => {
const fields = PersonTC.getFieldNames();
PersonTC.addFields({
field: {
type: 'String'
}
});
expect(PersonTC.getFieldNames()).toEqual(fields.concat(['field']));
PersonTC.removeField('field');
expect(PersonTC.getFieldNames()).toEqual(fields);
});
});