From c88ce6cbfb1e7a5e418313b73ec381a5ae225963 Mon Sep 17 00:00:00 2001 From: yaacovCR Date: Sun, 14 Apr 2019 07:33:06 -0400 Subject: [PATCH 1/3] Fix tests graphql 1.1.0 only adds listeners after first call to next(), see https://github.com/apollographql/graphql-subscriptions/pull/148 --- src/test/testMakeRemoteExecutableSchema.ts | 36 ++++++++++++---------- src/test/testMergeSchemas.ts | 14 ++++----- src/test/testResolution.ts | 6 ++-- 3 files changed, 28 insertions(+), 28 deletions(-) diff --git a/src/test/testMakeRemoteExecutableSchema.ts b/src/test/testMakeRemoteExecutableSchema.ts index 3ad4cf3cc2c..7c5372b3743 100644 --- a/src/test/testMakeRemoteExecutableSchema.ts +++ b/src/test/testMakeRemoteExecutableSchema.ts @@ -32,15 +32,15 @@ describe('remote subscriptions', () => { `); let notificationCnt = 0; - subscribe(schema, subscription).then(results => + subscribe(schema, subscription).then(results => { forAwaitEach(results as AsyncIterable, (result: ExecutionResult) => { expect(result).to.have.property('data'); expect(result.data).to.deep.equal(mockNotification); !notificationCnt++ ? done() : null; - }), - ); - - subscriptionPubSub.publish(subscriptionPubSubTrigger, mockNotification); + }); + }).then(() => { + subscriptionPubSub.publish(subscriptionPubSubTrigger, mockNotification); + }); }); it('should work without triggering multiple times per notification', done => { @@ -59,27 +59,29 @@ describe('remote subscriptions', () => { `); let notificationCnt = 0; - subscribe(schema, subscription).then(results => + const sub1 = subscribe(schema, subscription).then(results => { forAwaitEach(results as AsyncIterable, (result: ExecutionResult) => { expect(result).to.have.property('data'); expect(result.data).to.deep.equal(mockNotification); notificationCnt++; - }), - ); + }) + }); - subscribe(schema, subscription).then(results => + const sub2 = subscribe(schema, subscription).then(results => { forAwaitEach(results as AsyncIterable, (result: ExecutionResult) => { expect(result).to.have.property('data'); expect(result.data).to.deep.equal(mockNotification); - }), - ); + }); + }); - subscriptionPubSub.publish(subscriptionPubSubTrigger, mockNotification); - subscriptionPubSub.publish(subscriptionPubSubTrigger, mockNotification); + Promise.all([sub1, sub2]).then(() => { + subscriptionPubSub.publish(subscriptionPubSubTrigger, mockNotification); + subscriptionPubSub.publish(subscriptionPubSubTrigger, mockNotification); - setTimeout(() => { - expect(notificationCnt).to.eq(2); - done(); - }, 0); + setTimeout(() => { + expect(notificationCnt).to.eq(2); + done(); + }, 0); + }); }); }); diff --git a/src/test/testMergeSchemas.ts b/src/test/testMergeSchemas.ts index 184f57cfca8..d1d24f56873 100644 --- a/src/test/testMergeSchemas.ts +++ b/src/test/testMergeSchemas.ts @@ -736,10 +736,9 @@ bookingById(id: "b1") { !notificationCnt++ ? done() : null; }, ).catch(done); - }) - .catch(done); - - subscriptionPubSub.publish(subscriptionPubSubTrigger, mockNotification); + }).then(() => { + subscriptionPubSub.publish(subscriptionPubSubTrigger, mockNotification); + }).catch(done); }); it('subscription errors are working correctly in merged schema', done => { @@ -793,10 +792,9 @@ bookingById(id: "b1") { !notificationCnt++ ? done() : null; }, ).catch(done); - }) - .catch(done); - - subscriptionPubSub.publish(subscriptionPubSubTrigger, mockNotification); + }).then(() => { + subscriptionPubSub.publish(subscriptionPubSubTrigger, mockNotification); + }).catch(done); }); it('links in queries', async () => { diff --git a/src/test/testResolution.ts b/src/test/testResolution.ts index 0768c622084..501c5214856 100644 --- a/src/test/testResolution.ts +++ b/src/test/testResolution.ts @@ -119,11 +119,11 @@ describe('Resolve', () => { done(new Error('Too many subscription fired')); }, ).catch(done); - }) - .catch(done); + }).then(() => { + pubsub.publish('printRootChannel', { printRoot: subscriptionRoot }); + }).catch(done); }); - pubsub.publish('printRootChannel', { printRoot: subscriptionRoot }); firstSubsTriggered .then(() => From e49f58d841c0bf547f05be90b557a3e09fd1e65c Mon Sep 17 00:00:00 2001 From: yaacovCR Date: Sun, 14 Apr 2019 07:39:18 -0400 Subject: [PATCH 2/3] lint file! fix ; --- src/test/testMakeRemoteExecutableSchema.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/testMakeRemoteExecutableSchema.ts b/src/test/testMakeRemoteExecutableSchema.ts index 7c5372b3743..30cd42553db 100644 --- a/src/test/testMakeRemoteExecutableSchema.ts +++ b/src/test/testMakeRemoteExecutableSchema.ts @@ -64,7 +64,7 @@ describe('remote subscriptions', () => { expect(result).to.have.property('data'); expect(result.data).to.deep.equal(mockNotification); notificationCnt++; - }) + }); }); const sub2 = subscribe(schema, subscription).then(results => { From a078ebe5cc2be1b7fd1f474afc8f9ccd7c6b0fd8 Mon Sep 17 00:00:00 2001 From: Gabe Rudy Date: Wed, 23 Jan 2019 14:20:37 -0700 Subject: [PATCH 3/3] Remove '.' imports that break rollup (#924) --- src/generate/addResolveFunctionsToSchema.ts | 5 +++-- src/generate/assertResolveFunctionsPresent.ts | 3 ++- src/generate/attachConnectorsToContext.ts | 2 +- src/generate/buildSchemaFromTypeDefinitions.ts | 8 +++----- src/generate/checkForResolveTypeResolver.ts | 2 +- src/generate/concatenateTypeDefs.ts | 2 +- 6 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/generate/addResolveFunctionsToSchema.ts b/src/generate/addResolveFunctionsToSchema.ts index 5e9741017af..58542c300c8 100644 --- a/src/generate/addResolveFunctionsToSchema.ts +++ b/src/generate/addResolveFunctionsToSchema.ts @@ -1,4 +1,4 @@ -import { SchemaError } from '.'; +import SchemaError from './SchemaError'; import { GraphQLField, @@ -17,7 +17,8 @@ import { IAddResolveFunctionsToSchemaOptions, } from '../Interfaces'; import { applySchemaTransforms } from '../transforms/transforms'; -import { checkForResolveTypeResolver, extendResolversFromInterfaces } from '.'; +import checkForResolveTypeResolver from './checkForResolveTypeResolver'; +import extendResolversFromInterfaces from './extendResolversFromInterfaces'; import ConvertEnumValues from '../transforms/ConvertEnumValues'; function addResolveFunctionsToSchema( diff --git a/src/generate/assertResolveFunctionsPresent.ts b/src/generate/assertResolveFunctionsPresent.ts index 013a2187790..213cfbbe7af 100644 --- a/src/generate/assertResolveFunctionsPresent.ts +++ b/src/generate/assertResolveFunctionsPresent.ts @@ -6,7 +6,8 @@ import { } from 'graphql'; import { IResolverValidationOptions } from '../Interfaces'; -import { forEachField, SchemaError } from '.'; +import SchemaError from './SchemaError'; +import forEachField from './forEachField'; function assertResolveFunctionsPresent( schema: GraphQLSchema, diff --git a/src/generate/attachConnectorsToContext.ts b/src/generate/attachConnectorsToContext.ts index a6274cff3c6..56a6ce74249 100644 --- a/src/generate/attachConnectorsToContext.ts +++ b/src/generate/attachConnectorsToContext.ts @@ -4,7 +4,7 @@ import { deprecated } from 'deprecated-decorator'; import { IConnectors, IConnector, IConnectorCls } from '../Interfaces'; -import { addSchemaLevelResolveFunction } from '.'; +import addSchemaLevelResolveFunction from './addSchemaLevelResolveFunction'; // takes a GraphQL-JS schema and an object of connectors, then attaches // the connectors to the context by wrapping each query or mutation resolve diff --git a/src/generate/buildSchemaFromTypeDefinitions.ts b/src/generate/buildSchemaFromTypeDefinitions.ts index 7f8481b84d2..d838e4b855d 100644 --- a/src/generate/buildSchemaFromTypeDefinitions.ts +++ b/src/generate/buildSchemaFromTypeDefinitions.ts @@ -7,11 +7,9 @@ import { } from 'graphql'; import { ITypeDefinitions, GraphQLParseOptions } from '../Interfaces'; -import { - extractExtensionDefinitions, - concatenateTypeDefs, - SchemaError, -} from '.'; +import SchemaError from './SchemaError'; +import extractExtensionDefinitions from './extractExtensionDefinitions'; +import concatenateTypeDefs from './concatenateTypeDefs'; function buildSchemaFromTypeDefinitions( typeDefinitions: ITypeDefinitions, diff --git a/src/generate/checkForResolveTypeResolver.ts b/src/generate/checkForResolveTypeResolver.ts index 139cbde349d..8b50f99455c 100644 --- a/src/generate/checkForResolveTypeResolver.ts +++ b/src/generate/checkForResolveTypeResolver.ts @@ -1,6 +1,6 @@ import { GraphQLInterfaceType, GraphQLUnionType, GraphQLSchema } from 'graphql'; -import { SchemaError } from '.'; +import SchemaError from './SchemaError'; // If we have any union or interface types throw if no there is no resolveType or isTypeOf resolvers function checkForResolveTypeResolver( diff --git a/src/generate/concatenateTypeDefs.ts b/src/generate/concatenateTypeDefs.ts index bc5f34e2cae..c854c41f6c7 100644 --- a/src/generate/concatenateTypeDefs.ts +++ b/src/generate/concatenateTypeDefs.ts @@ -1,7 +1,7 @@ import { print, DocumentNode } from 'graphql'; import { ITypedef } from '../Interfaces'; -import { SchemaError } from '.'; +import SchemaError from './SchemaError'; function concatenateTypeDefs( typeDefinitionsAry: ITypedef[],