From b07fb7dd251684d3771046245a05f89e1bcf442b Mon Sep 17 00:00:00 2001 From: Florent Vilmart Date: Sun, 29 May 2016 11:52:57 -0400 Subject: [PATCH 1/2] Adds ability to interpolate delete operations --- src/ParseObject.js | 3 +++ src/__tests__/ParseObject-test.js | 19 +++++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/src/ParseObject.js b/src/ParseObject.js index 0bc3fcefb..9e6cf0e47 100644 --- a/src/ParseObject.js +++ b/src/ParseObject.js @@ -375,6 +375,9 @@ export default class ParseObject { changes[attr] = new ParseACL(response[attr]); } else if (attr !== 'objectId') { changes[attr] = decode(response[attr]); + if (changes[attr] instanceof UnsetOp) { + changes[attr] = undefined; + } } } if (changes.createdAt && !changes.updatedAt) { diff --git a/src/__tests__/ParseObject-test.js b/src/__tests__/ParseObject-test.js index 0fd8a9a5f..8c62570eb 100644 --- a/src/__tests__/ParseObject-test.js +++ b/src/__tests__/ParseObject-test.js @@ -852,6 +852,25 @@ describe('ParseObject', () => { done(); }); })); + + it('interpolates delete operations', asyncHelper((done) => { + CoreManager.getRESTController()._setXHR( + mockXHR([{ + status: 200, + response: { objectId: 'newattributes', deletedKey: {__op: 'Delete'} } + }]) + ); + var o = new ParseObject('Item'); + o.save({ key: 'value', deletedKey: 'keyToDelete' }).then(() => { + expect(o.get('key')).toBe('value'); + expect(o.get('deletedKey')).toBeUndefined(); + o = new ParseObject('Item'); + return o.save({ ACL: 'not an acl' }); + }).then(null, (error) => { + expect(error.code).toBe(-1); + done(); + }); + })); it('can make changes while in the process of a save', asyncHelper((done) => { var xhr = { From d3ef2567e563d7fb77fb97a7614b67990c23bc37 Mon Sep 17 00:00:00 2001 From: Florent Vilmart Date: Sun, 29 May 2016 11:56:54 -0400 Subject: [PATCH 2/2] small nit --- src/__tests__/ParseObject-test.js | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/__tests__/ParseObject-test.js b/src/__tests__/ParseObject-test.js index 8c62570eb..0407602fd 100644 --- a/src/__tests__/ParseObject-test.js +++ b/src/__tests__/ParseObject-test.js @@ -864,10 +864,6 @@ describe('ParseObject', () => { o.save({ key: 'value', deletedKey: 'keyToDelete' }).then(() => { expect(o.get('key')).toBe('value'); expect(o.get('deletedKey')).toBeUndefined(); - o = new ParseObject('Item'); - return o.save({ ACL: 'not an acl' }); - }).then(null, (error) => { - expect(error.code).toBe(-1); done(); }); }));