UNPKG

postgraphile-plugin-atomic-mutations

Version:

Postgraphile plugin to enable mutation atomicty with GraphQL requests containing multiple mutations

241 lines (236 loc) 9.14 kB
"use strict"; 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'); }); });