From e9b6ec7232db646b906d702edd040fda3ade0f01 Mon Sep 17 00:00:00 2001 From: Tommy Goode Date: Fri, 20 May 2016 17:34:43 -0500 Subject: [PATCH] Adding a test to demonstrate #1238 (save call on object with beforeSave trigger removes the data of pointer fields). --- spec/CloudCode.spec.js | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) 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(); + }); + }); });