Testing improvements (#4863)

* Adds supports-color so spec reporter dont output colors when not supported

* Adds babelrc so breakpoints dont jump around in specs

* Rename test to avoid duplicated name

* Removes unused methods

* Better naming for it_exclude
This commit is contained in:
Florent Vilmart
2018-07-01 00:00:37 -04:00
parent 7319aabf7a
commit 96bc74433b
7 changed files with 2285 additions and 2275 deletions

4512
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
{
"name": "parse-server",
"version": "2.8.3",
"version": "2.8.2",
"description": "An express module providing a Parse-compatible API server",
"main": "lib/index.js",
"repository": {
@@ -62,8 +62,9 @@
"jasmine-spec-reporter": "^4.1.0",
"mongodb-runner": "3.6.1",
"nodemon": "1.17.5",
"nyc": "^11.0.2",
"request-promise": "4.2.2"
"nyc": "^12.0.2",
"request-promise": "4.2.2",
"supports-color": "^5.4.0"
},
"scripts": {
"dev": "npm run build && node bin/dev",

14
spec/.babelrc Normal file
View File

@@ -0,0 +1,14 @@
{
"plugins": [
"transform-object-rest-spread"
],
"presets": [
["env", {
"targets": {
"node": "8"
}
}]
],
"sourceMaps": "inline",
"retainLines": true
}

View File

@@ -70,7 +70,7 @@ describe("AdaptableController", ()=>{
done();
});
it("should accept an object adapter", (done) => {
it("should accept an prototype based object adapter", (done) => {
function AGoodAdapter() {}
AGoodAdapter.prototype.createFile = function() { };
AGoodAdapter.prototype.deleteFile = function() { };

View File

@@ -1,11 +1,11 @@
"use strict"
// Sets up a Parse API server for testing.
const SpecReporter = require('jasmine-spec-reporter').SpecReporter;
const supportsColor = require('supports-color');
jasmine.DEFAULT_TIMEOUT_INTERVAL = process.env.PARSE_SERVER_TEST_TIMEOUT || 5000;
jasmine.getEnv().clearReporters();
jasmine.getEnv().addReporter(new SpecReporter());
jasmine.getEnv().addReporter(new SpecReporter({ colors: { enabled: supportsColor.stdout }}));
global.on_db = (db, callback, elseCallback) => {
if (process.env.PARSE_SERVER_TEST_DB == db) {
@@ -412,11 +412,11 @@ global.jfail = function(err) {
global.it_exclude_dbs = excluded => {
if (excluded.indexOf(process.env.PARSE_SERVER_TEST_DB) >= 0) {
return (name, suite) => {
return xit(`[${excluded}] ${name}`, suite);
return xit(`[not on ${excluded.join(',')}] ${name}`, suite);
};
} else {
return (name, suite) => {
return it(`[${excluded}] ${name}`, suite);
return it(`[not on ${excluded.join(',')}] ${name}`, suite);
};
}
}

View File

@@ -31,22 +31,6 @@ const MongoClient = mongodb.MongoClient;
const ReadPreference = mongodb.ReadPreference;
const MongoSchemaCollectionName = '_SCHEMA';
const storageAdapterAllCollections = mongoAdapter => {
return mongoAdapter.connect()
.then(() => mongoAdapter.database.collections())
.then(collections => {
return collections.filter(collection => {
if (collection.namespace.match(/\.system\./)) {
return false;
}
// TODO: If you have one app with a collection prefix that happens to be a prefix of another
// apps prefix, this will go very very badly. We should fix that somehow.
return (collection.collectionName.indexOf(mongoAdapter._collectionPrefix) == 0);
});
});
}
const convertParseSchemaToMongoSchema = ({...schema}) => {
delete schema.fields._rperm;
delete schema.fields._wperm;

View File

@@ -31,7 +31,6 @@ export interface StorageAdapter {
createClass(className: string, schema: SchemaType): Promise<void>;
addFieldIfNotExists(className: string, fieldName: string, type: any): Promise<void>;
deleteClass(className: string): Promise<void>;
deleteAllClasses(): Promise<void>;
dropDatabase(): Promise<void>;
deleteFields(className: string, schema: SchemaType, fieldNames: Array<string>): Promise<void>;
getAllClasses(): Promise<StorageClass[]>;