Skip to content

Commit a777243

Browse files
committed
Fixes tests, improves flow typing
1 parent 1d7dc40 commit a777243

9 files changed

+34
-25
lines changed

spec/MongoStorageAdapter.spec.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
'use strict';
22

3-
const { MongoStorageAdapter } = require('../src/Adapters/Storage/Mongo/MongoStorageAdapter');
3+
import MongoStorageAdapter from '../src/Adapters/Storage/Mongo/MongoStorageAdapter';
44
const { MongoClient } = require('mongodb');
55
const databaseURI = 'mongodb://localhost:27017/parseServerMongoAdapterTestDatabase';
66

spec/ParsePolygon.spec.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
const TestObject = Parse.Object.extend('TestObject');
2-
const MongoStorageAdapter = require('../src/Adapters/Storage/Mongo/MongoStorageAdapter').MongoStorageAdapter;
2+
import MongoStorageAdapter from '../src/Adapters/Storage/Mongo/MongoStorageAdapter';
33
const mongoURI = 'mongodb://localhost:27017/parseServerMongoAdapterTestDatabase';
44
const rp = require('request-promise');
55
const defaultHeaders = {

spec/ParseQuery.FullTextSearch.spec.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
'use strict';
22

3-
const MongoStorageAdapter = require('../src/Adapters/Storage/Mongo/MongoStorageAdapter').MongoStorageAdapter;
3+
import MongoStorageAdapter from '../src/Adapters/Storage/Mongo/MongoStorageAdapter';
44
const mongoURI = 'mongodb://localhost:27017/parseServerMongoAdapterTestDatabase';
5-
const PostgresStorageAdapter = require('../src/Adapters/Storage/Postgres/PostgresStorageAdapter').PostgresStorageAdapter;
5+
import PostgresStorageAdapter from '../src/Adapters/Storage/Postgres/PostgresStorageAdapter';
66
const postgresURI = 'postgres://localhost:5432/parse_server_postgres_adapter_test_database';
77
const Parse = require('parse/node');
88
const rp = require('request-promise');

spec/PostgresInitOptions.spec.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
const Parse = require('parse/node').Parse;
2-
const PostgresStorageAdapter = require('../src/Adapters/Storage/Postgres/PostgresStorageAdapter').PostgresStorageAdapter;
2+
import PostgresStorageAdapter from '../src/Adapters/Storage/Postgres/PostgresStorageAdapter';
33
const postgresURI = 'postgres://localhost:5432/parse_server_postgres_adapter_test_database';
44
const ParseServer = require("../src/index");
55
const express = require('express');

spec/PostgresStorageAdapter.spec.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
const PostgresStorageAdapter = require('../src/Adapters/Storage/Postgres/PostgresStorageAdapter');
1+
import PostgresStorageAdapter from '../src/Adapters/Storage/Postgres/PostgresStorageAdapter';
22
const databaseURI = 'postgres://localhost:5432/parse_server_postgres_adapter_test_database';
33

44
describe_only_db('postgres')('PostgresStorageAdapter', () => {

spec/helper.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,10 @@ var cache = require('../src/cache').default;
2727
var ParseServer = require('../src/index').ParseServer;
2828
var path = require('path');
2929
var TestUtils = require('../src/TestUtils');
30-
var MongoStorageAdapter = require('../src/Adapters/Storage/Mongo/MongoStorageAdapter').MongoStorageAdapter;
3130
const GridStoreAdapter = require('../src/Adapters/Files/GridStoreAdapter').GridStoreAdapter;
3231
const FSAdapter = require('@parse/fs-files-adapter');
33-
const PostgresStorageAdapter = require('../src/Adapters/Storage/Postgres/PostgresStorageAdapter').PostgresStorageAdapter;
32+
import PostgresStorageAdapter from '../src/Adapters/Storage/Postgres/PostgresStorageAdapter';
33+
import MongoStorageAdapter from '../src/Adapters/Storage/Mongo/MongoStorageAdapter';
3434
const RedisCacheAdapter = require('../src/Adapters/Cache/RedisCacheAdapter').default;
3535

3636
const mongoURI = 'mongodb://localhost:27017/parseServerMongoAdapterTestDatabase';

spec/index.spec.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ var ParseServer = require("../src/index");
66
var Config = require('../src/Config');
77
var express = require('express');
88

9-
const MongoStorageAdapter = require('../src/Adapters/Storage/Mongo/MongoStorageAdapter').MongoStorageAdapter;
9+
import MongoStorageAdapter from '../src/Adapters/Storage/Mongo/MongoStorageAdapter';
1010

1111
describe('server', () => {
1212
it('requires a master key and app id', done => {

src/Adapters/Storage/Mongo/MongoSchemaCollection.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,18 @@ class MongoSchemaCollection {
137137
return this._collection._mongoCollection.findAndRemove(_mongoSchemaQueryFromNameQuery(name), []);
138138
}
139139

140+
insertSchema(schema: any) {
141+
return this._collection.insertOne(schema)
142+
.then(result => mongoSchemaToParseSchema(result.ops[0]))
143+
.catch(error => {
144+
if (error.code === 11000) { //Mongo's duplicate key error
145+
throw new Parse.Error(Parse.Error.DUPLICATE_VALUE, 'Class already exists.');
146+
} else {
147+
throw error;
148+
}
149+
})
150+
}
151+
140152
updateSchema(name: string, update) {
141153
return this._collection.updateOne(_mongoSchemaQueryFromNameQuery(name), update);
142154
}

src/Adapters/Storage/Mongo/MongoStorageAdapter.js

Lines changed: 13 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import MongoSchemaCollection from './MongoSchemaCollection';
44
import { StorageAdapter } from '../StorageAdapter';
55
import type { SchemaType,
66
QueryType,
7+
StorageClass,
78
QueryOptions } from '../StorageAdapter';
89
import {
910
parse as parseUrl,
@@ -88,6 +89,10 @@ const mongoSchemaFromFieldsAndClassNameAndCLP = (fields, className, classLevelPe
8889
mongoObject._metadata.indexes = indexes;
8990
}
9091

92+
if (!mongoObject._metadata) { // cleanup the unused _metadata
93+
delete mongoObject._metadata;
94+
}
95+
9196
return mongoObject;
9297
}
9398

@@ -160,7 +165,7 @@ export class MongoStorageAdapter implements StorageAdapter {
160165
.then(rawCollection => new MongoCollection(rawCollection));
161166
}
162167

163-
_schemaCollection() {
168+
_schemaCollection(): Promise<MongoSchemaCollection> {
164169
return this.connect()
165170
.then(() => this._adaptiveCollection(MongoSchemaCollectionName))
166171
.then(collection => new MongoSchemaCollection(collection));
@@ -174,7 +179,7 @@ export class MongoStorageAdapter implements StorageAdapter {
174179
});
175180
}
176181

177-
setClassLevelPermissions(className: string, CLPs: any) {
182+
setClassLevelPermissions(className: string, CLPs: any): Promise<void> {
178183
return this._schemaCollection()
179184
.then(schemaCollection => schemaCollection.updateSchema(className, {
180185
$set: { '_metadata.class_permissions': CLPs }
@@ -250,24 +255,16 @@ export class MongoStorageAdapter implements StorageAdapter {
250255
});
251256
}
252257

253-
createClass(className: string, schema: SchemaType) {
258+
createClass(className: string, schema: SchemaType): Promise<void> {
254259
schema = convertParseSchemaToMongoSchema(schema);
255260
const mongoObject = mongoSchemaFromFieldsAndClassNameAndCLP(schema.fields, className, schema.classLevelPermissions, schema.indexes);
256261
mongoObject._id = className;
257262
return this.setIndexesWithSchemaFormat(className, schema.indexes, {}, schema.fields)
258263
.then(() => this._schemaCollection())
259-
.then(schemaCollection => schemaCollection._collection.insertOne(mongoObject))
260-
.then(result => MongoSchemaCollection._TESTmongoSchemaToParseSchema(result.ops[0]))
261-
.catch(error => {
262-
if (error.code === 11000) { //Mongo's duplicate key error
263-
throw new Parse.Error(Parse.Error.DUPLICATE_VALUE, 'Class already exists.');
264-
} else {
265-
throw error;
266-
}
267-
})
264+
.then(schemaCollection => schemaCollection.insertSchema(mongoObject));
268265
}
269266

270-
addFieldIfNotExists(className: string, fieldName: string, type: any) {
267+
addFieldIfNotExists(className: string, fieldName: string, type: any): Promise<void> {
271268
return this._schemaCollection()
272269
.then(schemaCollection => schemaCollection.addFieldIfNotExists(className, fieldName, type))
273270
.then(() => this.createIndexesIfNeeded(className, fieldName, type));
@@ -343,14 +340,14 @@ export class MongoStorageAdapter implements StorageAdapter {
343340
// Return a promise for all schemas known to this adapter, in Parse format. In case the
344341
// schemas cannot be retrieved, returns a promise that rejects. Requirements for the
345342
// rejection reason are TBD.
346-
getAllClasses() {
343+
getAllClasses(): Promise<StorageClass[]> {
347344
return this._schemaCollection().then(schemasCollection => schemasCollection._fetchAllSchemasFrom_SCHEMA());
348345
}
349346

350347
// Return a promise for the schema with the given name, in Parse format. If
351348
// this adapter doesn't know about the schema, return a promise that rejects with
352349
// undefined as the reason.
353-
getClass(className: string) {
350+
getClass(className: string): Promise<StorageClass> {
354351
return this._schemaCollection()
355352
.then(schemasCollection => schemasCollection._fetchOneSchemaFrom_SCHEMA(className))
356353
}
@@ -606,7 +603,7 @@ export class MongoStorageAdapter implements StorageAdapter {
606603
.then(collection => collection._mongoCollection.dropIndexes());
607604
}
608605

609-
updateSchemaWithIndexes() {
606+
updateSchemaWithIndexes(): Promise<any> {
610607
return this.getAllClasses()
611608
.then((classes) => {
612609
const promises = classes.map((schema) => {

0 commit comments

Comments
 (0)