diff --git a/spec/CloudCode.spec.js b/spec/CloudCode.spec.js index 2218a25706..2627e97654 100644 --- a/spec/CloudCode.spec.js +++ b/spec/CloudCode.spec.js @@ -467,4 +467,36 @@ describe('Cloud Code', () => { done(); }); }); + + it('trivial beforeSave should not affect fetched pointers', function(done) { + Parse.Cloud.beforeSave('BeforeSaveUnchanged', function(req, res) { + res.success(); + }); + + var TestObject = Parse.Object.extend("TestObject"); + var NoBeforeSaveObject = Parse.Object.extend("NoBeforeSave"); + var BeforeSaveObject = Parse.Object.extend("BeforeSaveUnchanged"); + + var aTestObject = new TestObject(); + aTestObject.set("foo", "bar"); + aTestObject.save() + .then(function(aTestObject) { + var aNoBeforeSaveObj = new NoBeforeSaveObject(); + aNoBeforeSaveObj.set("aTestObject", aTestObject); + expect(aNoBeforeSaveObj.get("aTestObject").get("foo")).toEqual("bar"); + return aNoBeforeSaveObj.save(); + }) + .then(function(aNoBeforeSaveObj) { + expect(aNoBeforeSaveObj.get("aTestObject").get("foo")).toEqual("bar"); + + var aBeforeSaveObj = new BeforeSaveObject(); + aBeforeSaveObj.set("aTestObject", aTestObject); + expect(aBeforeSaveObj.get("aTestObject").get("foo")).toEqual("bar"); + return aBeforeSaveObj.save(); + }) + .then(function(aBeforeSaveObj) { + expect(aBeforeSaveObj.get("aTestObject").get("foo")).toEqual("bar"); + done(); + }); + }); });