fix(beforeSave/afterSave): Return value instead of Parse.Op for nested fields (#7005)

* fix(beforeSave): Return value instead of Parse.Op

* afterSave test

* Improve Tests

* Fixed postgres test by saveArgumentsByValue
This commit is contained in:
Diamond Lewis
2020-11-12 15:14:44 -06:00
committed by GitHub
parent a4c84c09be
commit c1971b2ab1
2 changed files with 37 additions and 9 deletions

View File

@@ -1480,17 +1480,41 @@ describe('Cloud Code', () => {
});
it('beforeSave should not sanitize database', async done => {
const { adapter } = Config.get(Parse.applicationId).database;
const spy = spyOn(adapter, 'findOneAndUpdate').and.callThrough();
spy.calls.saveArgumentsByValue();
let count = 0;
Parse.Cloud.beforeSave('CloudIncrementNested', () => {
Parse.Cloud.beforeSave('CloudIncrementNested', req => {
count += 1;
req.object.set('foo', 'baz');
expect(typeof req.object.get('objectField').number).toBe('number');
});
Parse.Cloud.afterSave('CloudIncrementNested', req => {
expect(typeof req.object.get('objectField').number).toBe('number');
});
const obj = new Parse.Object('CloudIncrementNested');
obj.set('objectField', { number: 5 });
obj.set('foo', 'bar');
await obj.save();
obj.increment('objectField.number', 10);
await obj.save();
const [
,
,
,
/* className */ /* schema */ /* query */ update,
] = adapter.findOneAndUpdate.calls.first().args;
expect(update).toEqual({
'objectField.number': { __op: 'Increment', amount: 10 },
foo: 'baz',
updatedAt: obj.updatedAt.toISOString(),
});
count === 2 ? done() : fail();
});