Update parse SDK to 2.0.0 (#4925)

* WIP: Integrate JS SDK v2

- Removes backbone style callbacks
- Use Promise instead of Parse.Promise

* Fixes ParseObject and ParseRelation

* Updates Parse.Query with promises

* Alls tests should pass

* Ensure a fresh user is used for each test

* Use REST implementation to avoid side effects for username/email duplicates

* Uses js sdk v2
This commit is contained in:
Florent Vilmart
2018-08-05 13:58:07 -04:00
committed by GitHub
parent a61ef7ee2f
commit ff25ae254d
30 changed files with 3217 additions and 4783 deletions

View File

@@ -7,17 +7,17 @@ describe('Cloud Code', () => {
it('can load absolute cloud code file', done => {
reconfigureServer({ cloud: __dirname + '/cloud/cloudCodeRelativeFile.js' })
.then(() => {
Parse.Cloud.run('cloudCodeInFile', {}, result => {
Parse.Cloud.run('cloudCodeInFile', {}).then(result => {
expect(result).toEqual('It is possible to define cloud code in a file.');
done();
});
})
});
});
it('can load relative cloud code file', done => {
reconfigureServer({ cloud: './spec/cloud/cloudCodeAbsoluteFile.js' })
.then(() => {
Parse.Cloud.run('cloudCodeInFile', {}, result => {
Parse.Cloud.run('cloudCodeInFile', {}).then(result => {
expect(result).toEqual('It is possible to define cloud code in a file.');
done();
});
@@ -29,7 +29,7 @@ describe('Cloud Code', () => {
res.success('Hello world!');
});
Parse.Cloud.run('hello', {}, result => {
Parse.Cloud.run('hello', {}).then(result => {
expect(result).toEqual('Hello world!');
done();
});
@@ -183,15 +183,14 @@ describe('Cloud Code', () => {
const obj = req.object;
if(!obj.existed())
{
const promise = new Parse.Promise();
setTimeout(function(){
obj.set('proof', obj.id);
obj.save().then(function(){
promise.resolve();
});
}, 1000);
return promise;
return new Promise((resolve) => {
setTimeout(function(){
obj.set('proof', obj.id);
obj.save().then(function(){
resolve();
});
}, 1000);
});
}
});
@@ -218,15 +217,14 @@ describe('Cloud Code', () => {
const obj = req.object;
if(!obj.existed())
{
const promise = new Parse.Promise();
setTimeout(function(){
obj.set('proof', obj.id);
obj.save().then(function(){
promise.resolve();
});
}, 1000);
return promise;
return new Promise((resolve) => {
setTimeout(function(){
obj.set('proof', obj.id);
obj.save().then(function(){
resolve();
});
}, 1000);
});
}
});
@@ -247,12 +245,11 @@ describe('Cloud Code', () => {
it('test afterSave rejecting promise', function(done) {
Parse.Cloud.afterSave('AfterSaveTest2', function() {
const promise = new Parse.Promise();
setTimeout(function(){
promise.reject("THIS SHOULD BE IGNORED");
}, 1000);
return promise;
return new Promise((resolve, reject) => {
setTimeout(function(){
reject("THIS SHOULD BE IGNORED");
}, 1000);
});
});
const obj = new Parse.Object('AfterSaveTest2');
@@ -266,18 +263,15 @@ describe('Cloud Code', () => {
it('test afterDelete returning promise, object is deleted when destroy resolves', function(done) {
Parse.Cloud.afterDelete('AfterDeleteTest2', function(req) {
const promise = new Parse.Promise();
setTimeout(function(){
const obj = new Parse.Object('AfterDeleteTestProof');
obj.set('proof', req.object.id);
obj.save().then(function(){
promise.resolve();
});
}, 1000);
return promise;
return new Promise((resolve) => {
setTimeout(function(){
const obj = new Parse.Object('AfterDeleteTestProof');
obj.set('proof', req.object.id);
obj.save().then(function(){
resolve();
});
}, 1000);
});
});
const errorHandler = function(error) {
@@ -302,18 +296,15 @@ describe('Cloud Code', () => {
it('test afterDelete ignoring promise, object is not yet deleted', function(done) {
Parse.Cloud.afterDelete('AfterDeleteTest2', function(req) {
const promise = new Parse.Promise();
setTimeout(function(){
const obj = new Parse.Object('AfterDeleteTestProof');
obj.set('proof', req.object.id);
obj.save().then(function(){
promise.resolve();
});
}, 1000);
return promise;
return new Promise((resolve) => {
setTimeout(function(){
const obj = new Parse.Object('AfterDeleteTestProof');
obj.set('proof', req.object.id);
obj.save().then(function(){
resolve();
});
}, 1000);
});
});
const errorHandler = function(error) {
@@ -666,7 +657,7 @@ describe('Cloud Code', () => {
});
});
it('test save triggers get user', function(done) {
it('test save triggers get user', async (done) => {
Parse.Cloud.beforeSave('SaveTriggerUser', function(req, res) {
if (req.user && req.user.id) {
res.success();
@@ -685,16 +676,13 @@ describe('Cloud Code', () => {
user.set("password", "asdf");
user.set("email", "asdf@example.com");
user.set("username", "zxcv");
user.signUp(null, {
success: function() {
const obj = new Parse.Object('SaveTriggerUser');
obj.save().then(function() {
done();
}, function(error) {
fail(error);
done();
});
}
await user.signUp();
const obj = new Parse.Object('SaveTriggerUser');
obj.save().then(function() {
done();
}, function(error) {
fail(error);
done();
});
});
@@ -821,7 +809,7 @@ describe('Cloud Code', () => {
'X-Parse-Session-Token': session2,
}
}))
.then(() => Parse.Promise.all([cacheAdapter.get('test:user:' + session1), cacheAdapter.get('test:user:' + session2)]))
.then(() => Promise.all([cacheAdapter.get('test:user:' + session1), cacheAdapter.get('test:user:' + session2)]))
.then(cachedVals => {
expect(cachedVals[0].objectId).toEqual(user.id);
expect(cachedVals[1].objectId).toEqual(user.id);
@@ -1006,7 +994,7 @@ describe('Cloud Code', () => {
expect(objectAgain.get('remove')).toBeUndefined();
expect(object.get('remove')).toBeUndefined();
done();
}).fail((err) => {
}).catch((err) => {
jfail(err);
done();
});
@@ -1031,7 +1019,7 @@ describe('Cloud Code', () => {
// Originally it would throw as it would be a non-relation
expect(() => { objectAgain.relation('testsRelation') }).not.toThrow();
done();
}).fail((err) => {
}).catch((err) => {
jfail(err);
done();
})
@@ -1669,14 +1657,14 @@ describe('afterFind hooks', () => {
it('should also work with promise',(done) => {
Parse.Cloud.afterFind('MyObject', (req) => {
const promise = new Parse.Promise();
setTimeout(function(){
for(let i = 0 ; i < req.objects.length ; i++){
req.objects[i].set("secretField","###");
}
promise.resolve(req.objects);
}, 1000);
return promise;
return new Promise((resolve) => {
setTimeout(function(){
for(let i = 0 ; i < req.objects.length ; i++){
req.objects[i].set("secretField","###");
}
resolve(req.objects);
}, 1000);
});
});
const obj = new Parse.Object('MyObject');
obj.set('secretField', 'SSID');