Merge pull request #784 from ParsePlatform/nlutsenko.afterSave

Flatten custom operations in request.object in afterSave hooks.
This commit is contained in:
Nikita Lutsenko
2016-03-02 20:15:59 -08:00
3 changed files with 60 additions and 8 deletions

View File

@@ -1,3 +1,4 @@
'use strict';
var OneSignalPushAdapter = require('../src/Adapters/Push/OneSignalPushAdapter');
var classifyInstallations = require('../src/Adapters/Push/PushAdapterUtils').classifyInstallations;
@@ -210,7 +211,7 @@ describe('OneSignalPushAdapter', () => {
expect(write).toHaveBeenCalled();
// iOS
args = write.calls.first().args;
let args = write.calls.first().args;
expect(args[0]).toEqual(JSON.stringify({
'contents': { 'en':'Example content'},
'content_available':true,
@@ -219,7 +220,7 @@ describe('OneSignalPushAdapter', () => {
'app_id':'APP ID'
}));
// Android
// Android
args = write.calls.mostRecent().args;
expect(args[0]).toEqual(JSON.stringify({
'contents': { 'en':'Example content'},

View File

@@ -692,6 +692,46 @@ describe('miscellaneous', function() {
});
});
it('afterSave flattens custom operations', done => {
var triggerTime = 0;
// Register a mock beforeSave hook
Parse.Cloud.afterSave('GameScore', function(req, res) {
let object = req.object;
expect(object instanceof Parse.Object).toBeTruthy();
let originalObject = req.original;
if (triggerTime == 0) {
// Create
expect(object.get('yolo')).toEqual(1);
} else if (triggerTime == 1) {
// Update
expect(object.get('yolo')).toEqual(2);
// Check the originalObject
expect(originalObject.get('yolo')).toEqual(1);
} else {
res.error();
}
triggerTime++;
res.success();
});
var obj = new Parse.Object('GameScore');
obj.increment('yolo', 1);
obj.save().then(() => {
obj.increment('yolo', 1);
return obj.save();
}).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);
fail(error);
done();
});
});
it('test cloud function error handling', (done) => {
// Register a function which will fail
Parse.Cloud.define('willFail', (req, res) => {