diff --git a/spec/ParseAPI.spec.js b/spec/ParseAPI.spec.js index cceb818f..688569e6 100644 --- a/spec/ParseAPI.spec.js +++ b/spec/ParseAPI.spec.js @@ -258,6 +258,27 @@ describe('miscellaneous', function() { done(); }); }); + it('works when object is passed to success', done => { + let triggerTime = 0; + // Register a mock beforeSave hook + Parse.Cloud.beforeSave('GameScore', (req, res) => { + let object = req.object; + object.set('foo', 'bar'); + triggerTime++; + res.success(object); + }); + + let obj = new Parse.Object('GameScore'); + obj.set('foo', 'baz'); + obj.save().then(() => { + expect(triggerTime).toBe(1); + expect(obj.get('foo')).toEqual('bar'); + done(); + }, error => { + fail(error); + done(); + }); + }); it('original object is set on update', done => { let triggerTime = 0; diff --git a/src/triggers.js b/src/triggers.js index 0827de7a..7988530a 100644 --- a/src/triggers.js +++ b/src/triggers.js @@ -131,7 +131,8 @@ export function getResponseObject(request, resolve, reject) { return { success: function(response) { // Use the JSON response - if (response && request.triggerName === Types.beforeSave) { + if (response && !request.object.equals(response) + && request.triggerName === Types.beforeSave) { return resolve(response); } response = {};