Skip to content

Commit

Permalink
Expose DatabaseAdapter to simplify application tests (parse-community…
Browse files Browse the repository at this point in the history
…#1121)

* Move helper.clearData to DatabaseAdapter. Expose DatabaseAdapter in index

* fix indentation

* Export DatabaseAdapter in index.js

* Rename clearData to destroyAllDataPermanently. Only export destroyAllDataPermanently from DatabaseAdapter. Update helper

* Expose wrapped TestUtils from index.js. TestUtils exposed select functions from other modules, only in test environment
  • Loading branch information
steven-supersolid authored and drew-gross committed Apr 8, 2016
1 parent ab6925a commit 30197a7
Show file tree
Hide file tree
Showing 4 changed files with 32 additions and 10 deletions.
11 changes: 2 additions & 9 deletions spec/helper.js
Original file line number Diff line number Diff line change
Expand Up @@ -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 TestUtils = require('../src/index').TestUtils;

var databaseURI = process.env.DATABASE_URI;
var cloudMain = process.env.CLOUD_CODE_MAIN || './spec/cloud/main.js';
Expand Down Expand Up @@ -88,7 +89,7 @@ beforeEach(function(done) {

afterEach(function(done) {
Parse.User.logOut().then(() => {
return clearData();
return TestUtils.destroyAllDataPermanently();
}).then(() => {
done();
}, (error) => {
Expand Down Expand Up @@ -232,14 +233,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;
Expand Down
13 changes: 13 additions & 0 deletions src/DatabaseAdapter.js
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,18 @@ function clearDatabaseSettings() {
appDatabaseOptions = {};
}

//Used by tests
function destroyAllDataPermanently() {
if (process.env.TESTING) {
var promises = [];
for (var conn in dbConnections) {
promises.push(dbConnections[conn].deleteEverything());
}
return Promise.all(promises);
}
throw 'Only supported in test environment';
}

function getDatabaseConnection(appId: string, collectionPrefix: string) {
if (dbConnections[appId]) {
return dbConnections[appId];
Expand All @@ -71,5 +83,6 @@ module.exports = {
setAppDatabaseOptions: setAppDatabaseOptions,
setAppDatabaseURI: setAppDatabaseURI,
clearDatabaseSettings: clearDatabaseSettings,
destroyAllDataPermanently: destroyAllDataPermanently,
defaultDatabaseURI: databaseURI
};
15 changes: 15 additions & 0 deletions src/TestUtils.js
Original file line number Diff line number Diff line change
@@ -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};
3 changes: 2 additions & 1 deletion src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import winston from 'winston';
import ParseServer from './ParseServer';
import S3Adapter from 'parse-server-s3-adapter'
import FileSystemAdapter from 'parse-server-fs-adapter'
import TestUtils from './TestUtils';
import { useExternal } from './deprecated'

// Factory function
Expand All @@ -15,4 +16,4 @@ _ParseServer.createLiveQueryServer = ParseServer.createLiveQueryServer;
let GCSAdapter = useExternal('GCSAdapter', 'parse-server-gcs-adapter');

export default ParseServer;
export { S3Adapter, GCSAdapter, FileSystemAdapter, _ParseServer as ParseServer };
export { S3Adapter, GCSAdapter, FileSystemAdapter, TestUtils, _ParseServer as ParseServer };

0 comments on commit 30197a7

Please sign in to comment.