diff --git a/package-lock.json b/package-lock.json index 1ecdf16e5a..f8691ded2e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6003,19 +6003,19 @@ } }, "jasmine": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/jasmine/-/jasmine-3.1.0.tgz", - "integrity": "sha1-K9Wf1+xuwOistk4J9Fpo7SrRlSo=", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/jasmine/-/jasmine-3.4.0.tgz", + "integrity": "sha512-sR9b4n+fnBFDEd7VS2el2DeHgKcPiMVn44rtKFumq9q7P/t8WrxsVIZPob4UDdgcDNCwyDqwxCt4k9TDRmjPoQ==", "dev": true, "requires": { - "glob": "^7.0.6", - "jasmine-core": "~3.1.0" + "glob": "^7.1.3", + "jasmine-core": "~3.4.0" } }, "jasmine-core": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-3.1.0.tgz", - "integrity": "sha1-pHheE11d9lAk38kiSVPfWFvSdmw=", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-3.4.0.tgz", + "integrity": "sha512-HU/YxV4i6GcmiH4duATwAbJQMlE0MsDIR5XmSVxURxKHn3aGAdbY1/ZJFmVRbKtnLwIxxMJD7gYaPsypcbYimg==", "dev": true }, "jasmine-spec-reporter": { diff --git a/package.json b/package.json index d123501df3..05551550c3 100644 --- a/package.json +++ b/package.json @@ -60,7 +60,7 @@ "flow-bin": "0.98.1", "gaze": "1.1.3", "husky": "2.2.0", - "jasmine": "3.1.0", + "jasmine": "3.4.0", "jasmine-spec-reporter": "4.2.1", "jsdoc": "3.6.1", "jsdoc-babel": "0.5.0", diff --git a/spec/ParseLiveQueryServer.spec.js b/spec/ParseLiveQueryServer.spec.js index 15ba12a0f7..bda04e814c 100644 --- a/spec/ParseLiveQueryServer.spec.js +++ b/spec/ParseLiveQueryServer.spec.js @@ -158,11 +158,14 @@ describe('ParseLiveQueryServer', function() { classNames: ['Yolo'], }, startLiveQueryServer: true, + __indexBuildCompletionCallbackForTests: promise => { + promise.then(() => { + expect(parseServer.liveQueryServer).not.toBeUndefined(); + expect(parseServer.liveQueryServer.server).toBe(parseServer.server); + parseServer.server.close(() => done()); + }); + }, }); - - expect(parseServer.liveQueryServer).not.toBeUndefined(); - expect(parseServer.liveQueryServer.server).toBe(parseServer.server); - parseServer.server.close(() => done()); }); it('can be initialized through ParseServer with liveQueryServerOptions', function(done) { @@ -178,12 +181,18 @@ describe('ParseLiveQueryServer', function() { liveQueryServerOptions: { port: 22347, }, + __indexBuildCompletionCallbackForTests: promise => { + promise.then(() => { + expect(parseServer.liveQueryServer).not.toBeUndefined(); + expect(parseServer.liveQueryServer.server).not.toBe( + parseServer.server + ); + parseServer.liveQueryServer.server.close(() => { + parseServer.server.close(() => done()); + }); + }); + }, }); - - expect(parseServer.liveQueryServer).not.toBeUndefined(); - expect(parseServer.liveQueryServer.server).not.toBe(parseServer.server); - parseServer.liveQueryServer.server.close(); - parseServer.server.close(() => done()); }); }); diff --git a/spec/ParseServer.spec.js b/spec/ParseServer.spec.js index 8ecd5a6534..e747e810ce 100644 --- a/spec/ParseServer.spec.js +++ b/spec/ParseServer.spec.js @@ -62,17 +62,20 @@ describe('Server Url Checks', () => { } const newConfiguration = Object.assign({}, defaultConfiguration, { databaseAdapter, - }); - const parseServer = ParseServer.start(newConfiguration, () => { - parseServer.handleShutdown(); - parseServer.server.close(err => { - if (err) { - done.fail('Close Server Error'); - } - reconfigureServer({}).then(() => { - done(); + __indexBuildCompletionCallbackForTests: promise => { + promise.then(() => { + parseServer.handleShutdown(); + parseServer.server.close(err => { + if (err) { + done.fail('Close Server Error'); + } + reconfigureServer({}).then(() => { + done(); + }); + }); }); - }); + }, }); + const parseServer = ParseServer.start(newConfiguration); }); }); diff --git a/spec/Schema.spec.js b/spec/Schema.spec.js index 6de696c557..b95783023e 100644 --- a/spec/Schema.spec.js +++ b/spec/Schema.spec.js @@ -440,13 +440,20 @@ describe('SchemaController', () => { // If two callers race to create the same schema, the response to the // race loser should be the same as if they hadn't been racing. config.database.loadSchema().then(schema => { - const p1 = schema.addClassIfNotExists('NewClass', { - foo: { type: 'String' }, - }); - const p2 = schema.addClassIfNotExists('NewClass', { - foo: { type: 'String' }, - }); - Promise.race([p1, p2]).then(actualSchema => { + const p1 = schema + .addClassIfNotExists('NewClass', { + foo: { type: 'String' }, + }) + .then(validateSchema) + .catch(validateError); + const p2 = schema + .addClassIfNotExists('NewClass', { + foo: { type: 'String' }, + }) + .then(validateSchema) + .catch(validateError); + let schemaValidated = false; + function validateSchema(actualSchema) { const expectedSchema = { className: 'NewClass', fields: { @@ -467,10 +474,17 @@ describe('SchemaController', () => { }, }; expect(dd(actualSchema, expectedSchema)).toEqual(undefined); - }); - Promise.all([p1, p2]).catch(error => { + schemaValidated = true; + } + let errorValidated = false; + function validateError(error) { expect(error.code).toEqual(Parse.Error.INVALID_CLASS_NAME); expect(error.message).toEqual('Class NewClass already exists.'); + errorValidated = true; + } + Promise.all([p1, p2]).then(() => { + expect(schemaValidated).toEqual(true); + expect(errorValidated).toEqual(true); done(); }); }); diff --git a/src/ParseServer.js b/src/ParseServer.js index 02621ff75d..63e43ab1f3 100644 --- a/src/ParseServer.js +++ b/src/ParseServer.js @@ -97,11 +97,13 @@ class ParseServer { logging.setLogger(loggerController); const dbInitPromise = databaseController.performInitialization(); - hooksController.load(); + const hooksLoadPromise = hooksController.load(); // Note: Tests will start to fail if any validation happens after this is called. if (process.env.TESTING) { - __indexBuildCompletionCallbackForTests(dbInitPromise); + __indexBuildCompletionCallbackForTests( + Promise.all([dbInitPromise, hooksLoadPromise]) + ); } if (cloud) {