graphql-compose-relay
Version:
Plugin for `graphql-compose` which wraps graphql types with Relay specific logic.
77 lines (69 loc) • 2.88 kB
JavaScript
;
var _composeWithRelay = require("../composeWithRelay");
var _userTC = require("../__mocks__/userTC");
var _globalId = require("../globalId");
describe('wrapMutationResolver', () => {
(0, _composeWithRelay.composeWithRelay)(_userTC.userTC);
const resolverCreateOne = _userTC.userTC.getResolver('createOne');
const resolverWithInput = _userTC.userTC.getResolver('manyArgsWithInput');
const resolverWithoutInput = _userTC.userTC.getResolver('manyArgsWithoutInput');
describe('args', () => {
it('should add `clientMutationId` field to args.input', () => {
const itc = resolverCreateOne.getArgITC('input');
expect(itc.hasField('clientMutationId')).toBe(true);
expect(itc.getFieldTypeName('clientMutationId')).toBe('String');
});
it('should create required args.input! if not exists', () => {
expect(resolverWithoutInput.hasArg('input')).toBeTruthy();
expect(resolverWithoutInput.isArgNonNull('input')).toBeTruthy();
});
it('should create args.input if not exists and move all args into it', () => {
expect(resolverWithoutInput.hasArg('input')).toBeTruthy();
const itc = resolverWithoutInput.getArgITC('input');
expect(itc.hasField('sort')).toBe(true);
expect(itc.hasField('limit')).toBe(true);
expect(itc.hasField('clientMutationId')).toBe(true);
});
it('should leave other arg untouched if args.input exists', () => {
expect(resolverWithInput.getArgNames()).toEqual(expect.arrayContaining(['input', 'sort', 'limit']));
const itc = resolverWithInput.getArgITC('input');
expect(itc.hasField('sort')).toBe(false);
expect(itc.hasField('limit')).toBe(false);
expect(itc.hasField('clientMutationId')).toBe(true);
});
});
describe('outputType', () => {
it('should add `clientMutationId` field to payload', () => {
const tc = resolverCreateOne.getOTC();
expect(tc.hasField('clientMutationId')).toBe(true);
expect(tc.getFieldTypeName('clientMutationId')).toBe('String');
});
it('should add `nodeId` field to payload', () => {
const tc = resolverCreateOne.getOTC();
expect(tc.hasField('nodeId')).toBe(true);
expect(tc.getFieldTypeName('nodeId')).toBe('ID');
});
});
describe('resolve', () => {
it('should passthru `clientMutationId`', async () => {
const result = await resolverCreateOne.resolve({
args: {
input: {
clientMutationId: '333'
}
}
});
expect(result.clientMutationId).toBe('333');
});
it('should return `nodeId` with globalId', async () => {
const result = await resolverCreateOne.resolve({
args: {
input: {
id: 'newRecord'
}
}
});
expect(result.nodeId).toBe((0, _globalId.toGlobalId)('User', 'newRecord'));
});
});
});