postgraphile-plugin-atomic-mutations
Version:
Postgraphile plugin to enable mutation atomicty with GraphQL requests containing multiple mutations
241 lines (236 loc) • 9.14 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const atomic_mutations_plugin_1 = require("./atomic-mutations-plugin");
const reqUndefinedBodyHeaderOn = {
headers: { [atomic_mutations_plugin_1.MutationAtomicityHeaderName]: atomic_mutations_plugin_1.MutationAtomicityHeaderValue.ON },
body: undefined,
};
const reqSuperSimpleQueryHeaderOn = {
headers: { [atomic_mutations_plugin_1.MutationAtomicityHeaderName]: atomic_mutations_plugin_1.MutationAtomicityHeaderValue.ON },
body: `{
someQuery
}`,
};
const reqSimpleQueryHeaderOn = {
headers: { [atomic_mutations_plugin_1.MutationAtomicityHeaderName]: atomic_mutations_plugin_1.MutationAtomicityHeaderValue.ON },
body: {
query: `{
someQuery
}`,
},
};
const reqSimpleMutationHeaderOn = {
headers: { [atomic_mutations_plugin_1.MutationAtomicityHeaderName]: atomic_mutations_plugin_1.MutationAtomicityHeaderValue.ON },
body: {
query: `mutation {
someMutation
}`,
},
};
const reqSimpleMutationHeaderOff = {
headers: { [atomic_mutations_plugin_1.MutationAtomicityHeaderName]: atomic_mutations_plugin_1.MutationAtomicityHeaderValue.OFF },
body: {
query: `mutation {
someMutation
}`,
},
};
const reqSimpleMutationHeaderUndefined = {
headers: {},
body: {
query: `mutation {
someMutation
}`,
},
};
const reqSingleQueryHeaderOn = {
headers: { [atomic_mutations_plugin_1.MutationAtomicityHeaderName]: atomic_mutations_plugin_1.MutationAtomicityHeaderValue.ON },
body: {
query: `query QueryName {
someQuery
anotherQuery
}`,
operationName: 'QueryName',
},
};
const reqSingleAnonymousQueryHeaderOn = {
headers: { [atomic_mutations_plugin_1.MutationAtomicityHeaderName]: atomic_mutations_plugin_1.MutationAtomicityHeaderValue.ON },
body: {
query: `query {
someQuery
anotherQuery
}`,
operationName: null,
},
};
const reqSingleMutationHeaderOn = {
headers: { [atomic_mutations_plugin_1.MutationAtomicityHeaderName]: atomic_mutations_plugin_1.MutationAtomicityHeaderValue.ON },
body: {
query: `mutation OperationName {
__typename
someMutation
anotherMutation
}`,
operationName: 'OperationName',
totalMutations: 2,
},
};
const reqMixedQueryMutationHeaderOn = {
headers: { [atomic_mutations_plugin_1.MutationAtomicityHeaderName]: atomic_mutations_plugin_1.MutationAtomicityHeaderValue.ON },
body: {
query: `
query QueryName {
someQuery
}
mutation MutationName {
__typename
someMutation
anotherMutation
}`,
operationName: 'MutationName',
totalMutations: 2,
},
};
const reqMixedQueryMutationHeaderOff = {
headers: { [atomic_mutations_plugin_1.MutationAtomicityHeaderName]: atomic_mutations_plugin_1.MutationAtomicityHeaderValue.OFF },
body: {
query: `
query QueryName {
someQuery
}
mutation MutationName {
__typename
someMutation
anotherMutation
}`,
operationName: 'MutationName',
totalMutations: 2,
},
};
const reqMultipleMutationHeaderOn = {
headers: { [atomic_mutations_plugin_1.MutationAtomicityHeaderName]: atomic_mutations_plugin_1.MutationAtomicityHeaderValue.ON },
body: {
query: `
query QueryName {
someQuery
}
mutation MutationName {
__typename
someMutation
anotherMutation
}`,
operationName: 'MutationName',
totalMutations: 2,
},
};
const reqMultipleMutationHeaderOff = {
headers: { [atomic_mutations_plugin_1.MutationAtomicityHeaderName]: atomic_mutations_plugin_1.MutationAtomicityHeaderValue.OFF },
body: {
query: `
query QueryName {
someQuery
}
mutation MutationName {
__typename
someMutation
anotherMutation
}`,
operationName: 'MutationName',
totalMutations: 2,
},
};
const reqUnsupportedQueryBatching = {
headers: { [atomic_mutations_plugin_1.MutationAtomicityHeaderName]: atomic_mutations_plugin_1.MutationAtomicityHeaderValue.ON },
body: [
{
query: `query QueryName {
someQuery
}`,
},
{
query: `query QueryName {
someQuery
}`,
},
],
};
describe('request body', () => {
test('request body undefined - header on', () => {
const mutationAtomicityContext = atomic_mutations_plugin_1.getMutationAtomicityContext(reqUndefinedBodyHeaderOn);
expect(mutationAtomicityContext).toBeFalsy();
});
});
describe('query operations', () => {
test('super simple query - header on', () => {
const mutationAtomicityContext = atomic_mutations_plugin_1.getMutationAtomicityContext(reqSuperSimpleQueryHeaderOn);
expect(mutationAtomicityContext).toBeFalsy();
});
test('simple query - header on', () => {
const mutationAtomicityContext = atomic_mutations_plugin_1.getMutationAtomicityContext(reqSimpleQueryHeaderOn);
expect(mutationAtomicityContext).toBeFalsy();
});
test('single query - header on', () => {
const mutationAtomicityContext = atomic_mutations_plugin_1.getMutationAtomicityContext(reqSingleQueryHeaderOn);
expect(mutationAtomicityContext).toBeFalsy();
});
test('single anonymous query - header on', () => {
const mutationAtomicityContext = atomic_mutations_plugin_1.getMutationAtomicityContext(reqSingleAnonymousQueryHeaderOn);
expect(mutationAtomicityContext).toBeFalsy();
});
});
describe('mutation operations', () => {
test('simple mutation - header on', () => {
const mutationAtomicityContext = atomic_mutations_plugin_1.getMutationAtomicityContext(reqSimpleMutationHeaderOn);
expect(mutationAtomicityContext).toBeTruthy();
});
test('simple mutation - header off', () => {
const mutationAtomicityContext = atomic_mutations_plugin_1.getMutationAtomicityContext(reqSimpleMutationHeaderOff);
expect(mutationAtomicityContext).toBeFalsy();
});
test('simple mutation - header undefined', () => {
const mutationAtomicityContext = atomic_mutations_plugin_1.getMutationAtomicityContext(reqSimpleMutationHeaderUndefined);
expect(mutationAtomicityContext).toBeFalsy();
});
test('single mutation - header on', () => {
const mutationAtomicityContext = atomic_mutations_plugin_1.getMutationAtomicityContext(reqSingleMutationHeaderOn);
expect(mutationAtomicityContext).toBeTruthy();
});
test('multiple mutation - header on', () => {
const mutationAtomicityContext = atomic_mutations_plugin_1.getMutationAtomicityContext(reqMultipleMutationHeaderOn);
expect(mutationAtomicityContext).toBeTruthy();
});
test('multiple mutation - header off', () => {
const mutationAtomicityContext = atomic_mutations_plugin_1.getMutationAtomicityContext(reqMultipleMutationHeaderOff);
expect(mutationAtomicityContext).toBeFalsy();
});
test('mixed query & mutation - header on', () => {
const mutationAtomicityContext = atomic_mutations_plugin_1.getMutationAtomicityContext(reqMixedQueryMutationHeaderOn);
expect(mutationAtomicityContext).toBeTruthy();
});
test('mixed query & mutation - header off', () => {
const mutationAtomicityContext = atomic_mutations_plugin_1.getMutationAtomicityContext(reqMixedQueryMutationHeaderOff);
expect(mutationAtomicityContext).toBeFalsy();
});
});
describe('mutation counts', () => {
test('single mutation - total mutation count', () => {
const mutationAtomicityContext = atomic_mutations_plugin_1.getMutationAtomicityContext(reqSingleMutationHeaderOn);
expect(mutationAtomicityContext.totalMutations).toEqual(reqSingleMutationHeaderOn.body.totalMutations);
});
test('multiple mutation - total mutation count', () => {
const mutationAtomicityContext = atomic_mutations_plugin_1.getMutationAtomicityContext(reqMultipleMutationHeaderOn);
expect(mutationAtomicityContext.totalMutations).toEqual(reqMultipleMutationHeaderOn.body.totalMutations);
});
test('mixed query & mutation - total mutation count', () => {
const mutationAtomicityContext = atomic_mutations_plugin_1.getMutationAtomicityContext(reqMixedQueryMutationHeaderOn);
expect(mutationAtomicityContext.totalMutations).toEqual(reqMixedQueryMutationHeaderOn.body.totalMutations);
});
});
describe('unsupported', () => {
test('query batching exception', () => {
const unsupportedQueryBatching = () => {
atomic_mutations_plugin_1.getMutationAtomicityContext(reqUnsupportedQueryBatching);
};
expect(unsupportedQueryBatching).toThrow('AtomicMutationsPlugin does not support GraphQL query batching');
});
});