Skip to content

Commit f2d7680

Browse files
authored
Pass SaveAll options to Files (#1107)
1 parent 675fa0a commit f2d7680

File tree

2 files changed

+33
-1
lines changed

2 files changed

+33
-1
lines changed

src/ParseObject.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2264,7 +2264,7 @@ const DefaultController = {
22642264
let pending: Array<ParseObject> = [];
22652265
unsaved.forEach((el) => {
22662266
if (el instanceof ParseFile) {
2267-
filesSaved.push(el.save());
2267+
filesSaved.push(el.save(options));
22682268
} else if (el instanceof ParseObject) {
22692269
pending.push(el);
22702270
}

src/__tests__/ParseFile-test.js

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,23 @@
1010
jest.autoMockOff();
1111
jest.mock('http');
1212
jest.mock('https');
13+
jest.mock('../ParseACL');
1314

1415
const ParseError = require('../ParseError').default;
1516
const ParseFile = require('../ParseFile').default;
17+
const ParseObject = require('../ParseObject').default;
1618
const CoreManager = require('../CoreManager');
1719
const EventEmitter = require('../EventEmitter');
1820

1921
const mockHttp = require('http');
2022
const mockHttps = require('https');
2123

24+
const mockLocalDatastore = {
25+
_updateLocalIdForObject: jest.fn(),
26+
_updateObjectIfPinned: jest.fn(),
27+
};
28+
jest.setMock('../LocalDatastore', mockLocalDatastore);
29+
2230
function generateSaveMock(prefix) {
2331
return function(name, payload, options) {
2432
if (options && typeof options.progress === 'function') {
@@ -687,6 +695,30 @@ describe('FileController', () => {
687695
});
688696
});
689697

698+
it('saves files via object saveAll options', async () => {
699+
const ajax = jest.fn().mockResolvedValueOnce({
700+
response: {
701+
name: 'parse.txt',
702+
url: 'http://files.parsetfss.com/a/parse.txt'
703+
}
704+
});
705+
CoreManager.setRESTController({ ajax, request: () => {
706+
return [ { success: { objectId: 'child' } } ];
707+
} });
708+
CoreManager.setLocalDatastore(mockLocalDatastore);
709+
710+
const file = new ParseFile('parse.txt', [61, 170, 236, 120]);
711+
file._source.format = 'file';
712+
const object = ParseObject.fromJSON({ className: 'TestObject' });
713+
object.set('file', file);
714+
await ParseObject.saveAll([object], { sessionToken: 'testToken' });
715+
716+
const request = ajax.mock.calls[0];
717+
expect(request[1]).toBe('https://api.parse.com/1/files/parse.txt')
718+
expect(request[3]['X-Parse-Session-Token']).toBe('testToken');
719+
expect(request[4].sessionToken).toBe('testToken');
720+
});
721+
690722
it('should throw error if file deleted without name', async (done) => {
691723
const file = new ParseFile('', [1, 2, 3]);
692724
try {

0 commit comments

Comments
 (0)