Skip to content

Commit e4abe61

Browse files
committed
Adds failing test with other use case
- That test fails on parse.com as well
1 parent 9b5761c commit e4abe61

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
@@ -645,4 +645,33 @@ describe('Cloud Code', () => {
645645
done();
646646
});
647647
});
648+
649+
it('should fully delete objects when using `unset` with beforeSave (regression test for #1840)', done => {
650+
var TestObject = Parse.Object.extend('TestObject');
651+
var BeforeSaveObject = Parse.Object.extend('BeforeSaveChanged');
652+
653+
Parse.Cloud.beforeSave('BeforeSaveChanged', (req, res) => {
654+
var object = req.object;
655+
object.set('before', 'save');
656+
object.unset('remove');
657+
res.success();
658+
});
659+
660+
let object;
661+
let testObject = new TestObject({key: 'value'});
662+
testObject.save().then(() => {
663+
object = new BeforeSaveObject();
664+
return object.save().then(() => {
665+
object.set({remove:testObject})
666+
return object.save();
667+
});
668+
}).then((objectAgain) => {
669+
expect(objectAgain.get('remove')).toBeUndefined();
670+
expect(object.get('remove')).toBeUndefined();
671+
done();
672+
}).fail((err) => {
673+
console.error(err);
674+
done();
675+
})
676+
});
648677
});

src/RestWrite.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -858,7 +858,7 @@ function updateResponseWithData(response, data) {
858858
let dataValue = data[fieldName];
859859
let responseValue = response[fieldName];
860860
if (dataValue && dataValue.__op === 'Delete') {
861-
delete response[fieldName];
861+
response[fieldName] = undefined;
862862
} else {
863863
response[fieldName] = responseValue || dataValue;
864864
}

0 commit comments

Comments
 (0)