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:
@@ -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();
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user