From 308ab55ff7a1d2e40e675c8ca96dc11fd1d7aa99 Mon Sep 17 00:00:00 2001 From: steven-supersolid Date: Mon, 21 Mar 2016 12:36:51 +0000 Subject: [PATCH 1/5] Move helper.clearData to DatabaseAdapter. Expose DatabaseAdapter in index --- spec/helper.js | 10 +--------- src/DatabaseAdapter.js | 10 ++++++++++ src/index.js | 3 ++- 3 files changed, 13 insertions(+), 10 deletions(-) diff --git a/spec/helper.js b/spec/helper.js index e8cabbb4ea..dba6f55da4 100644 --- a/spec/helper.js +++ b/spec/helper.js @@ -88,7 +88,7 @@ beforeEach(function(done) { afterEach(function(done) { Parse.User.logOut().then(() => { - return clearData(); + return DatabaseAdapter.clearData(); }).then(() => { done(); }, (error) => { @@ -232,14 +232,6 @@ function mockFacebook() { return facebook; } -function clearData() { - var promises = []; - for (var conn in DatabaseAdapter.dbConnections) { - promises.push(DatabaseAdapter.dbConnections[conn].deleteEverything()); - } - return Promise.all(promises); -} - // This is polluting, but, it makes it way easier to directly port old tests. global.Parse = Parse; global.TestObject = TestObject; diff --git a/src/DatabaseAdapter.js b/src/DatabaseAdapter.js index 51403ba3cf..86587ce0cb 100644 --- a/src/DatabaseAdapter.js +++ b/src/DatabaseAdapter.js @@ -49,6 +49,15 @@ function clearDatabaseSettings() { appDatabaseOptions = {}; } +//Used by tests +function clearData() { + var promises = []; + for (var conn in dbConnections) { + promises.push(dbConnections[conn].deleteEverything()); + } + return Promise.all(promises); +} + function getDatabaseConnection(appId: string, collectionPrefix: string) { if (dbConnections[appId]) { return dbConnections[appId]; @@ -71,5 +80,6 @@ module.exports = { setAppDatabaseOptions: setAppDatabaseOptions, setAppDatabaseURI: setAppDatabaseURI, clearDatabaseSettings: clearDatabaseSettings, + clearData: clearData, defaultDatabaseURI: databaseURI }; diff --git a/src/index.js b/src/index.js index 01a1d48ab4..ca9877061b 100644 --- a/src/index.js +++ b/src/index.js @@ -274,5 +274,6 @@ ParseServer.createLiveQueryServer = function(httpServer, config) { module.exports = { ParseServer: ParseServer, S3Adapter: S3Adapter, - GCSAdapter: GCSAdapter + GCSAdapter: GCSAdapter, + DatabaseAdapter: DatabaseAdapter }; From c7d8f89c54278c2dd08a825a31f2b7b9aaaeb557 Mon Sep 17 00:00:00 2001 From: steven-supersolid Date: Mon, 21 Mar 2016 12:42:52 +0000 Subject: [PATCH 2/5] fix indentation --- src/DatabaseAdapter.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/DatabaseAdapter.js b/src/DatabaseAdapter.js index 86587ce0cb..9076b32f1c 100644 --- a/src/DatabaseAdapter.js +++ b/src/DatabaseAdapter.js @@ -80,6 +80,6 @@ module.exports = { setAppDatabaseOptions: setAppDatabaseOptions, setAppDatabaseURI: setAppDatabaseURI, clearDatabaseSettings: clearDatabaseSettings, - clearData: clearData, + clearData: clearData, defaultDatabaseURI: databaseURI }; From 9ae423b6b55103b71a1c9ec2374c37cb8a6f5877 Mon Sep 17 00:00:00 2001 From: steven-supersolid Date: Mon, 4 Apr 2016 15:35:01 +0100 Subject: [PATCH 3/5] Export DatabaseAdapter in index.js --- src/index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/index.js b/src/index.js index bdf6b34231..263a2f7f77 100644 --- a/src/index.js +++ b/src/index.js @@ -3,6 +3,7 @@ import ParseServer from './ParseServer'; import GCSAdapter from 'parse-server-gcs-adapter'; import S3Adapter from 'parse-server-s3-adapter'; import FileSystemAdapter from 'parse-server-fs-adapter'; +import DatabaseAdapter from './DatabaseAdapter'; if (process.env.VERBOSE || process.env.VERBOSE_PARSE_SERVER) { winston.level = 'silly'; @@ -21,4 +22,4 @@ let _ParseServer = function(options) { _ParseServer.createLiveQueryServer = ParseServer.createLiveQueryServer; export default ParseServer; -export { S3Adapter, GCSAdapter, FileSystemAdapter, _ParseServer as ParseServer }; +export { S3Adapter, GCSAdapter, FileSystemAdapter, DatabaseAdapter, _ParseServer as ParseServer }; From fb95114dbbdb655f04007d8ee4356e43f06c1fb3 Mon Sep 17 00:00:00 2001 From: steven-supersolid Date: Mon, 4 Apr 2016 17:56:45 +0100 Subject: [PATCH 4/5] Rename clearData to destroyAllDataPermanently. Only export destroyAllDataPermanently from DatabaseAdapter. Update helper --- spec/helper.js | 3 ++- src/DatabaseAdapter.js | 15 +++++++++------ src/index.js | 14 +++++++------- 3 files changed, 18 insertions(+), 14 deletions(-) diff --git a/spec/helper.js b/spec/helper.js index cc82ed2e0d..68ff52f98a 100644 --- a/spec/helper.js +++ b/spec/helper.js @@ -8,6 +8,7 @@ var express = require('express'); var facebook = require('../src/authDataManager/facebook'); var ParseServer = require('../src/index').ParseServer; var path = require('path'); +var destroyAllDataPermanently = require('../src/index').destroyAllDataPermanently; var databaseURI = process.env.DATABASE_URI; var cloudMain = process.env.CLOUD_CODE_MAIN || './spec/cloud/main.js'; @@ -88,7 +89,7 @@ beforeEach(function(done) { afterEach(function(done) { Parse.User.logOut().then(() => { - return DatabaseAdapter.clearData(); + return destroyAllDataPermanently(); }).then(() => { done(); }, (error) => { diff --git a/src/DatabaseAdapter.js b/src/DatabaseAdapter.js index 9076b32f1c..3afdf1364e 100644 --- a/src/DatabaseAdapter.js +++ b/src/DatabaseAdapter.js @@ -50,12 +50,15 @@ function clearDatabaseSettings() { } //Used by tests -function clearData() { - var promises = []; - for (var conn in dbConnections) { - promises.push(dbConnections[conn].deleteEverything()); +function destroyAllDataPermanently() { + if (process.env.TESTING) { + var promises = []; + for (var conn in dbConnections) { + promises.push(dbConnections[conn].deleteEverything()); + } + return Promise.all(promises); } - return Promise.all(promises); + throw 'Only supported in test environment'; } function getDatabaseConnection(appId: string, collectionPrefix: string) { @@ -80,6 +83,6 @@ module.exports = { setAppDatabaseOptions: setAppDatabaseOptions, setAppDatabaseURI: setAppDatabaseURI, clearDatabaseSettings: clearDatabaseSettings, - clearData: clearData, + destroyAllDataPermanently: destroyAllDataPermanently, defaultDatabaseURI: databaseURI }; diff --git a/src/index.js b/src/index.js index 263a2f7f77..66472a4a07 100644 --- a/src/index.js +++ b/src/index.js @@ -1,9 +1,9 @@ -import winston from 'winston'; -import ParseServer from './ParseServer'; -import GCSAdapter from 'parse-server-gcs-adapter'; -import S3Adapter from 'parse-server-s3-adapter'; -import FileSystemAdapter from 'parse-server-fs-adapter'; -import DatabaseAdapter from './DatabaseAdapter'; +import winston from 'winston'; +import ParseServer from './ParseServer'; +import GCSAdapter from 'parse-server-gcs-adapter'; +import S3Adapter from 'parse-server-s3-adapter'; +import FileSystemAdapter from 'parse-server-fs-adapter'; +import {destroyAllDataPermanently} from './DatabaseAdapter'; if (process.env.VERBOSE || process.env.VERBOSE_PARSE_SERVER) { winston.level = 'silly'; @@ -22,4 +22,4 @@ let _ParseServer = function(options) { _ParseServer.createLiveQueryServer = ParseServer.createLiveQueryServer; export default ParseServer; -export { S3Adapter, GCSAdapter, FileSystemAdapter, DatabaseAdapter, _ParseServer as ParseServer }; +export { S3Adapter, GCSAdapter, FileSystemAdapter, destroyAllDataPermanently, _ParseServer as ParseServer }; From 9f4ba7e25e019192aa85f898dcfcfcf9d49a72eb Mon Sep 17 00:00:00 2001 From: steven-supersolid Date: Fri, 8 Apr 2016 14:40:43 +0100 Subject: [PATCH 5/5] Expose wrapped TestUtils from index.js. TestUtils exposed select functions from other modules, only in test environment --- spec/helper.js | 4 ++-- src/TestUtils.js | 15 +++++++++++++++ src/index.js | 4 ++-- 3 files changed, 19 insertions(+), 4 deletions(-) create mode 100644 src/TestUtils.js diff --git a/spec/helper.js b/spec/helper.js index 68ff52f98a..03ddff9743 100644 --- a/spec/helper.js +++ b/spec/helper.js @@ -8,7 +8,7 @@ var express = require('express'); var facebook = require('../src/authDataManager/facebook'); var ParseServer = require('../src/index').ParseServer; var path = require('path'); -var destroyAllDataPermanently = require('../src/index').destroyAllDataPermanently; +var TestUtils = require('../src/index').TestUtils; var databaseURI = process.env.DATABASE_URI; var cloudMain = process.env.CLOUD_CODE_MAIN || './spec/cloud/main.js'; @@ -89,7 +89,7 @@ beforeEach(function(done) { afterEach(function(done) { Parse.User.logOut().then(() => { - return destroyAllDataPermanently(); + return TestUtils.destroyAllDataPermanently(); }).then(() => { done(); }, (error) => { diff --git a/src/TestUtils.js b/src/TestUtils.js new file mode 100644 index 0000000000..ebdb9f9914 --- /dev/null +++ b/src/TestUtils.js @@ -0,0 +1,15 @@ +import { destroyAllDataPermanently } from './DatabaseAdapter'; + +let unsupported = function() { + throw 'Only supported in test environment'; +}; + +let _destroyAllDataPermanently; +if (process.env.TESTING) { + _destroyAllDataPermanently = destroyAllDataPermanently; +} else { + _destroyAllDataPermanently = unsupported; +} + +export default { + destroyAllDataPermanently: _destroyAllDataPermanently}; diff --git a/src/index.js b/src/index.js index 66472a4a07..d338a190f7 100644 --- a/src/index.js +++ b/src/index.js @@ -3,7 +3,7 @@ import ParseServer from './ParseServer'; import GCSAdapter from 'parse-server-gcs-adapter'; import S3Adapter from 'parse-server-s3-adapter'; import FileSystemAdapter from 'parse-server-fs-adapter'; -import {destroyAllDataPermanently} from './DatabaseAdapter'; +import TestUtils from './TestUtils'; if (process.env.VERBOSE || process.env.VERBOSE_PARSE_SERVER) { winston.level = 'silly'; @@ -22,4 +22,4 @@ let _ParseServer = function(options) { _ParseServer.createLiveQueryServer = ParseServer.createLiveQueryServer; export default ParseServer; -export { S3Adapter, GCSAdapter, FileSystemAdapter, destroyAllDataPermanently, _ParseServer as ParseServer }; +export { S3Adapter, GCSAdapter, FileSystemAdapter, TestUtils, _ParseServer as ParseServer };