Skip to content

Commit b07fb7d

Browse files
committed
Adds ability to interpolate delete operations
1 parent ef2b483 commit b07fb7d

File tree

2 files changed

+22
-0
lines changed

2 files changed

+22
-0
lines changed

src/ParseObject.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -375,6 +375,9 @@ export default class ParseObject {
375375
changes[attr] = new ParseACL(response[attr]);
376376
} else if (attr !== 'objectId') {
377377
changes[attr] = decode(response[attr]);
378+
if (changes[attr] instanceof UnsetOp) {
379+
changes[attr] = undefined;
380+
}
378381
}
379382
}
380383
if (changes.createdAt && !changes.updatedAt) {

src/__tests__/ParseObject-test.js

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -852,6 +852,25 @@ describe('ParseObject', () => {
852852
done();
853853
});
854854
}));
855+
856+
it('interpolates delete operations', asyncHelper((done) => {
857+
CoreManager.getRESTController()._setXHR(
858+
mockXHR([{
859+
status: 200,
860+
response: { objectId: 'newattributes', deletedKey: {__op: 'Delete'} }
861+
}])
862+
);
863+
var o = new ParseObject('Item');
864+
o.save({ key: 'value', deletedKey: 'keyToDelete' }).then(() => {
865+
expect(o.get('key')).toBe('value');
866+
expect(o.get('deletedKey')).toBeUndefined();
867+
o = new ParseObject('Item');
868+
return o.save({ ACL: 'not an acl' });
869+
}).then(null, (error) => {
870+
expect(error.code).toBe(-1);
871+
done();
872+
});
873+
}));
855874

856875
it('can make changes while in the process of a save', asyncHelper((done) => {
857876
var xhr = {

0 commit comments

Comments
 (0)