Skip to content

Commit 4bf7752

Browse files
committed
Adds failing test with other use case
- That test fails on parse.com as well
1 parent 85d011e commit 4bf7752

File tree

2 files changed

+30
-1
lines changed

2 files changed

+30
-1
lines changed

spec/CloudCode.spec.js

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -722,4 +722,33 @@ describe('Cloud Code', () => {
722722
done();
723723
});
724724
});
725+
726+
it('should fully delete objects when using `unset` with beforeSave (regression test for #1840)', done => {
727+
var TestObject = Parse.Object.extend('TestObject');
728+
var BeforeSaveObject = Parse.Object.extend('BeforeSaveChanged');
729+
730+
Parse.Cloud.beforeSave('BeforeSaveChanged', (req, res) => {
731+
var object = req.object;
732+
object.set('before', 'save');
733+
object.unset('remove');
734+
res.success();
735+
});
736+
737+
let object;
738+
let testObject = new TestObject({key: 'value'});
739+
testObject.save().then(() => {
740+
object = new BeforeSaveObject();
741+
return object.save().then(() => {
742+
object.set({remove:testObject})
743+
return object.save();
744+
});
745+
}).then((objectAgain) => {
746+
expect(objectAgain.get('remove')).toBeUndefined();
747+
expect(object.get('remove')).toBeUndefined();
748+
done();
749+
}).fail((err) => {
750+
console.error(err);
751+
done();
752+
})
753+
});
725754
});

src/RestWrite.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -888,7 +888,7 @@ function updateResponseWithData(response, data) {
888888
let dataValue = data[fieldName];
889889
let responseValue = response[fieldName];
890890
if (dataValue && dataValue.__op === 'Delete') {
891-
delete response[fieldName];
891+
response[fieldName] = undefined;
892892
} else {
893893
response[fieldName] = responseValue || dataValue;
894894
}

0 commit comments

Comments
 (0)