Refactor cloud code tests (#1837)
* Move cloud code tests * Remove _removeHook calls that are no longer necessary * Use Strict
This commit is contained in:
@@ -164,67 +164,6 @@ describe('miscellaneous', function() {
|
||||
});
|
||||
});
|
||||
|
||||
it('test cloud function', function(done) {
|
||||
Parse.Cloud.run('hello', {}, function(result) {
|
||||
expect(result).toEqual('Hello world!');
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it('basic beforeSave rejection', function(done) {
|
||||
var obj = new Parse.Object('BeforeSaveFail');
|
||||
obj.set('foo', 'bar');
|
||||
obj.save().then(() => {
|
||||
fail('Should not have been able to save BeforeSaveFailure class.');
|
||||
done();
|
||||
}, () => {
|
||||
done();
|
||||
})
|
||||
});
|
||||
|
||||
it('basic beforeSave rejection via promise', function(done) {
|
||||
var obj = new Parse.Object('BeforeSaveFailWithPromise');
|
||||
obj.set('foo', 'bar');
|
||||
obj.save().then(function() {
|
||||
fail('Should not have been able to save BeforeSaveFailure class.');
|
||||
done();
|
||||
}, function(error) {
|
||||
expect(error.code).toEqual(Parse.Error.SCRIPT_FAILED);
|
||||
expect(error.message).toEqual('Nope');
|
||||
|
||||
done();
|
||||
})
|
||||
});
|
||||
|
||||
it('test beforeSave unchanged success', function(done) {
|
||||
var obj = new Parse.Object('BeforeSaveUnchanged');
|
||||
obj.set('foo', 'bar');
|
||||
obj.save().then(function() {
|
||||
done();
|
||||
}, function(error) {
|
||||
fail(error);
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it('test beforeSave changed object success', function(done) {
|
||||
var obj = new Parse.Object('BeforeSaveChanged');
|
||||
obj.set('foo', 'bar');
|
||||
obj.save().then(function() {
|
||||
var query = new Parse.Query('BeforeSaveChanged');
|
||||
query.get(obj.id).then(function(objAgain) {
|
||||
expect(objAgain.get('foo')).toEqual('baz');
|
||||
done();
|
||||
}, function(error) {
|
||||
fail(error);
|
||||
done();
|
||||
});
|
||||
}, function(error) {
|
||||
fail(error);
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it('test beforeSave set object acl success', function(done) {
|
||||
var acl = new Parse.ACL({
|
||||
'*': { read: true, write: false }
|
||||
@@ -237,7 +176,6 @@ describe('miscellaneous', function() {
|
||||
var obj = new Parse.Object('BeforeSaveAddACL');
|
||||
obj.set('lol', true);
|
||||
obj.save().then(function() {
|
||||
Parse.Cloud._removeHook('Triggers', 'beforeSave', 'BeforeSaveAddACL');
|
||||
var query = new Parse.Query('BeforeSaveAddACL');
|
||||
query.get(obj.id).then(function(objAgain) {
|
||||
expect(objAgain.get('lol')).toBeTruthy();
|
||||
@@ -253,185 +191,6 @@ describe('miscellaneous', function() {
|
||||
});
|
||||
});
|
||||
|
||||
it('test beforeSave returns value on create and update', (done) => {
|
||||
var obj = new Parse.Object('BeforeSaveChanged');
|
||||
obj.set('foo', 'bing');
|
||||
obj.save().then(() => {
|
||||
expect(obj.get('foo')).toEqual('baz');
|
||||
obj.set('foo', 'bar');
|
||||
return obj.save().then(() => {
|
||||
expect(obj.get('foo')).toEqual('baz');
|
||||
done();
|
||||
})
|
||||
})
|
||||
});
|
||||
|
||||
it('test afterSave ran and created an object', function(done) {
|
||||
var obj = new Parse.Object('AfterSaveTest');
|
||||
obj.save();
|
||||
|
||||
setTimeout(function() {
|
||||
var query = new Parse.Query('AfterSaveProof');
|
||||
query.equalTo('proof', obj.id);
|
||||
query.find().then(function(results) {
|
||||
expect(results.length).toEqual(1);
|
||||
done();
|
||||
}, function(error) {
|
||||
fail(error);
|
||||
done();
|
||||
});
|
||||
}, 500);
|
||||
});
|
||||
|
||||
it('test beforeSave happens on update', function(done) {
|
||||
var obj = new Parse.Object('BeforeSaveChanged');
|
||||
obj.set('foo', 'bar');
|
||||
obj.save().then(function() {
|
||||
obj.set('foo', 'bar');
|
||||
return obj.save();
|
||||
}).then(function() {
|
||||
var query = new Parse.Query('BeforeSaveChanged');
|
||||
return query.get(obj.id).then(function(objAgain) {
|
||||
expect(objAgain.get('foo')).toEqual('baz');
|
||||
done();
|
||||
});
|
||||
}, function(error) {
|
||||
fail(error);
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it('test beforeDelete failure', function(done) {
|
||||
var obj = new Parse.Object('BeforeDeleteFail');
|
||||
var id;
|
||||
obj.set('foo', 'bar');
|
||||
obj.save().then(() => {
|
||||
id = obj.id;
|
||||
return obj.destroy();
|
||||
}).then(() => {
|
||||
fail('obj.destroy() should have failed, but it succeeded');
|
||||
done();
|
||||
}, (error) => {
|
||||
expect(error.code).toEqual(Parse.Error.SCRIPT_FAILED);
|
||||
expect(error.message).toEqual('Nope');
|
||||
|
||||
var objAgain = new Parse.Object('BeforeDeleteFail', {objectId: id});
|
||||
return objAgain.fetch();
|
||||
}).then((objAgain) => {
|
||||
if (objAgain) {
|
||||
expect(objAgain.get('foo')).toEqual('bar');
|
||||
} else {
|
||||
fail("unable to fetch the object ", id);
|
||||
}
|
||||
done();
|
||||
}, (error) => {
|
||||
// We should have been able to fetch the object again
|
||||
fail(error);
|
||||
});
|
||||
});
|
||||
|
||||
it('basic beforeDelete rejection via promise', function(done) {
|
||||
var obj = new Parse.Object('BeforeDeleteFailWithPromise');
|
||||
obj.set('foo', 'bar');
|
||||
obj.save().then(function() {
|
||||
fail('Should not have been able to save BeforeSaveFailure class.');
|
||||
done();
|
||||
}, function(error) {
|
||||
expect(error.code).toEqual(Parse.Error.SCRIPT_FAILED);
|
||||
expect(error.message).toEqual('Nope');
|
||||
|
||||
done();
|
||||
})
|
||||
});
|
||||
|
||||
it('test beforeDelete success', function(done) {
|
||||
var obj = new Parse.Object('BeforeDeleteTest');
|
||||
obj.set('foo', 'bar');
|
||||
obj.save().then(function() {
|
||||
return obj.destroy();
|
||||
}).then(function() {
|
||||
var objAgain = new Parse.Object('BeforeDeleteTest', obj.id);
|
||||
return objAgain.fetch().then(fail, done);
|
||||
}, function(error) {
|
||||
fail(error);
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it('test afterDelete ran and created an object', function(done) {
|
||||
var obj = new Parse.Object('AfterDeleteTest');
|
||||
obj.save().then(function() {
|
||||
obj.destroy();
|
||||
});
|
||||
|
||||
setTimeout(function() {
|
||||
var query = new Parse.Query('AfterDeleteProof');
|
||||
query.equalTo('proof', obj.id);
|
||||
query.find().then(function(results) {
|
||||
expect(results.length).toEqual(1);
|
||||
done();
|
||||
}, function(error) {
|
||||
fail(error);
|
||||
done();
|
||||
});
|
||||
}, 500);
|
||||
});
|
||||
|
||||
it('test save triggers get user', function(done) {
|
||||
var user = new Parse.User();
|
||||
user.set("password", "asdf");
|
||||
user.set("email", "asdf@example.com");
|
||||
user.set("username", "zxcv");
|
||||
user.signUp(null, {
|
||||
success: function() {
|
||||
var obj = new Parse.Object('SaveTriggerUser');
|
||||
obj.save().then(function() {
|
||||
done();
|
||||
}, function(error) {
|
||||
fail(error);
|
||||
done();
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
it('test cloud function return types', function(done) {
|
||||
Parse.Cloud.run('foo').then((result) => {
|
||||
expect(result.object instanceof Parse.Object).toBeTruthy();
|
||||
if (!result.object) {
|
||||
fail("Unable to run foo");
|
||||
done();
|
||||
return;
|
||||
}
|
||||
expect(result.object.className).toEqual('Foo');
|
||||
expect(result.object.get('x')).toEqual(2);
|
||||
var bar = result.object.get('relation');
|
||||
expect(bar instanceof Parse.Object).toBeTruthy();
|
||||
expect(bar.className).toEqual('Bar');
|
||||
expect(bar.get('x')).toEqual(3);
|
||||
expect(Array.isArray(result.array)).toEqual(true);
|
||||
expect(result.array[0] instanceof Parse.Object).toBeTruthy();
|
||||
expect(result.array[0].get('x')).toEqual(2);
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it('test cloud function should echo keys', function(done) {
|
||||
Parse.Cloud.run('echoKeys').then((result) => {
|
||||
expect(result.applicationId).toEqual(Parse.applicationId);
|
||||
expect(result.masterKey).toEqual(Parse.masterKey);
|
||||
expect(result.javascriptKey).toEqual(Parse.javascriptKey);
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it('should properly create an object in before save', (done) => {
|
||||
Parse.Cloud.run('createBeforeSaveChangedObject').then((res) => {
|
||||
expect(res.get('foo')).toEqual('baz');
|
||||
done();
|
||||
});
|
||||
})
|
||||
|
||||
it('test rest_create_app', function(done) {
|
||||
var appId;
|
||||
Parse._request('POST', 'rest_create_app').then((res) => {
|
||||
@@ -456,17 +215,6 @@ describe('miscellaneous', function() {
|
||||
});
|
||||
|
||||
describe('beforeSave', () => {
|
||||
beforeEach(done => {
|
||||
// Make sure the required mock for all tests is unset.
|
||||
Parse.Cloud._removeHook("Triggers", "beforeSave", "GameScore");
|
||||
done();
|
||||
});
|
||||
afterEach(done => {
|
||||
// Make sure the required mock for all tests is unset.
|
||||
Parse.Cloud._removeHook("Triggers", "beforeSave", "GameScore");
|
||||
done();
|
||||
});
|
||||
|
||||
it('object is set on create and update', done => {
|
||||
let triggerTime = 0;
|
||||
// Register a mock beforeSave hook
|
||||
@@ -511,45 +259,6 @@ describe('miscellaneous', function() {
|
||||
});
|
||||
});
|
||||
|
||||
it('dirtyKeys are set on update', done => {
|
||||
let triggerTime = 0;
|
||||
// Register a mock beforeSave hook
|
||||
Parse.Cloud.beforeSave('GameScore', (req, res) => {
|
||||
var object = req.object;
|
||||
expect(object instanceof Parse.Object).toBeTruthy();
|
||||
expect(object.get('fooAgain')).toEqual('barAgain');
|
||||
if (triggerTime == 0) {
|
||||
// Create
|
||||
expect(object.get('foo')).toEqual('bar');
|
||||
} else if (triggerTime == 1) {
|
||||
// Update
|
||||
expect(object.dirtyKeys()).toEqual(['foo']);
|
||||
expect(object.dirty('foo')).toBeTruthy();
|
||||
expect(object.get('foo')).toEqual('baz');
|
||||
} else {
|
||||
res.error();
|
||||
}
|
||||
triggerTime++;
|
||||
res.success();
|
||||
});
|
||||
|
||||
let obj = new Parse.Object('GameScore');
|
||||
obj.set('foo', 'bar');
|
||||
obj.set('fooAgain', 'barAgain');
|
||||
obj.save().then(() => {
|
||||
// We only update foo
|
||||
obj.set('foo', 'baz');
|
||||
return obj.save();
|
||||
}).then(() => {
|
||||
// Make sure the checking has been triggered
|
||||
expect(triggerTime).toBe(2);
|
||||
done();
|
||||
}, function(error) {
|
||||
fail(error);
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it('original object is set on update', done => {
|
||||
let triggerTime = 0;
|
||||
// Register a mock beforeSave hook
|
||||
@@ -673,7 +382,6 @@ describe('miscellaneous', function() {
|
||||
return obj.save();
|
||||
}).then((obj) => {
|
||||
expect(obj.get('point').id).toEqual(pointId);
|
||||
Parse.Cloud._removeHook("Triggers", "beforeSave", "GameScore");
|
||||
done();
|
||||
})
|
||||
});
|
||||
@@ -711,8 +419,6 @@ describe('miscellaneous', function() {
|
||||
}).then(function() {
|
||||
// Make sure the checking has been triggered
|
||||
expect(triggerTime).toBe(2);
|
||||
// Clear mock beforeSave
|
||||
Parse.Cloud._removeHook("Triggers", "beforeSave", "GameScore");
|
||||
done();
|
||||
}, function(error) {
|
||||
fail(error);
|
||||
@@ -764,8 +470,6 @@ describe('miscellaneous', function() {
|
||||
}).then(function() {
|
||||
// Make sure the checking has been triggered
|
||||
expect(triggerTime).toBe(2);
|
||||
// Clear mock afterSave
|
||||
Parse.Cloud._removeHook("Triggers", "afterSave", "GameScore");
|
||||
done();
|
||||
}, function(error) {
|
||||
console.error(error);
|
||||
@@ -814,8 +518,6 @@ describe('miscellaneous', function() {
|
||||
}).then(function() {
|
||||
// Make sure the checking has been triggered
|
||||
expect(triggerTime).toBe(2);
|
||||
// Clear mock afterSave
|
||||
Parse.Cloud._removeHook("Triggers", "afterSave", "GameScore");
|
||||
done();
|
||||
}, function(error) {
|
||||
console.error(error);
|
||||
@@ -854,8 +556,6 @@ describe('miscellaneous', function() {
|
||||
}).then(() => {
|
||||
// Make sure the checking has been triggered
|
||||
expect(triggerTime).toBe(2);
|
||||
// Clear mock afterSave
|
||||
Parse.Cloud._removeHook("Triggers", "afterSave", "GameScore");
|
||||
done();
|
||||
}, error => {
|
||||
console.error(error);
|
||||
@@ -896,8 +596,6 @@ describe('miscellaneous', function() {
|
||||
}).then(() => {
|
||||
// Make sure the checking has been triggered
|
||||
expect(triggerTime).toBe(2);
|
||||
// Clear mock afterSave
|
||||
Parse.Cloud._removeHook("Triggers", "beforeSave", "GameScore");
|
||||
done();
|
||||
}, error => {
|
||||
console.error(error);
|
||||
@@ -938,8 +636,6 @@ describe('miscellaneous', function() {
|
||||
}).then(() => {
|
||||
// Make sure the checking has been triggered
|
||||
expect(triggerTime).toBe(2);
|
||||
// Clear mock afterSave
|
||||
Parse.Cloud._removeHook("Triggers", "afterSave", "GameScore");
|
||||
done();
|
||||
}, error => {
|
||||
console.error(error);
|
||||
@@ -999,12 +695,10 @@ describe('miscellaneous', function() {
|
||||
});
|
||||
Parse.Cloud.run('willFail').then((s) => {
|
||||
fail('Should not have succeeded.');
|
||||
Parse.Cloud._removeHook("Functions", "willFail");
|
||||
done();
|
||||
}, (e) => {
|
||||
expect(e.code).toEqual(141);
|
||||
expect(e.message).toEqual('noway');
|
||||
Parse.Cloud._removeHook("Functions", "willFail");
|
||||
done();
|
||||
});
|
||||
});
|
||||
@@ -1036,9 +730,6 @@ describe('miscellaneous', function() {
|
||||
}, (error, response, body) => {
|
||||
expect(error).toBe(null);
|
||||
expect(triggerTime).toEqual(2);
|
||||
|
||||
Parse.Cloud._removeHook("Triggers", "beforeSave", "GameScore");
|
||||
Parse.Cloud._removeHook("Triggers", "afterSave", "GameScore");
|
||||
done();
|
||||
});
|
||||
});
|
||||
@@ -1075,9 +766,6 @@ describe('miscellaneous', function() {
|
||||
}, (error, response, body) => {
|
||||
expect(error).toBe(null);
|
||||
expect(triggerTime).toEqual(2);
|
||||
|
||||
Parse.Cloud._removeHook("Triggers", "beforeDelete", "GameScore");
|
||||
Parse.Cloud._removeHook("Triggers", "afterDelete", "GameScore");
|
||||
done();
|
||||
});
|
||||
});
|
||||
@@ -1107,24 +795,6 @@ describe('miscellaneous', function() {
|
||||
// Make sure query string params override body params
|
||||
expect(res.other).toEqual('2');
|
||||
expect(res.foo).toEqual("bar");
|
||||
Parse.Cloud._removeHook("Functions",'echoParams');
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it('test cloud function parameter validation success', (done) => {
|
||||
// Register a function with validation
|
||||
Parse.Cloud.define('functionWithParameterValidation', (req, res) => {
|
||||
res.success('works');
|
||||
}, (request) => {
|
||||
return request.params.success === 100;
|
||||
});
|
||||
|
||||
Parse.Cloud.run('functionWithParameterValidation', {"success":100}).then((s) => {
|
||||
Parse.Cloud._removeHook("Functions", "functionWithParameterValidation");
|
||||
done();
|
||||
}, (e) => {
|
||||
fail('Validation should not have failed.');
|
||||
done();
|
||||
});
|
||||
});
|
||||
@@ -1139,7 +809,6 @@ describe('miscellaneous', function() {
|
||||
|
||||
Parse.Cloud.run('functionWithParameterValidationFailure', {"success":500}).then((s) => {
|
||||
fail('Validation should not have succeeded');
|
||||
Parse.Cloud._removeHook("Functions", "functionWithParameterValidationFailure");
|
||||
done();
|
||||
}, (e) => {
|
||||
expect(e.code).toEqual(141);
|
||||
@@ -1156,7 +825,6 @@ describe('miscellaneous', function() {
|
||||
|
||||
Parse.Cloud.run('func', {nullParam: null})
|
||||
.then(() => {
|
||||
Parse.Cloud._removeHook('Functions', 'func');
|
||||
done()
|
||||
}, e => {
|
||||
fail('cloud code call failed');
|
||||
@@ -1243,23 +911,6 @@ describe('miscellaneous', function() {
|
||||
});
|
||||
});
|
||||
|
||||
it('beforeSave change propagates through the save response', (done) => {
|
||||
Parse.Cloud.beforeSave('ChangingObject', function(request, response) {
|
||||
request.object.set('foo', 'baz');
|
||||
response.success();
|
||||
});
|
||||
let obj = new Parse.Object('ChangingObject');
|
||||
obj.save({ foo: 'bar' }).then((objAgain) => {
|
||||
expect(objAgain.get('foo')).toEqual('baz');
|
||||
Parse.Cloud._removeHook("Triggers", "beforeSave", "ChangingObject");
|
||||
done();
|
||||
}, (e) => {
|
||||
Parse.Cloud._removeHook("Triggers", "beforeSave", "ChangingObject");
|
||||
fail('Should not have failed to save.');
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it('dedupes an installation properly and returns updatedAt', (done) => {
|
||||
let headers = {
|
||||
'Content-Type': 'application/json',
|
||||
|
||||
Reference in New Issue
Block a user