Skip to content

Commit c639080

Browse files
EmilyyyLiu刘欢
andauthored
feat: Add defaultRequest to customRequest (#660)
* feat: Add defaultRequest to customRequest * test: change test * feat: change info.defaultRequest * feat: simplify * feat: simplify function * teat: verify defaultRequest path --------- Co-authored-by: 刘欢 <lh01217311@antgroup.com>
1 parent 4958954 commit c639080

File tree

3 files changed

+35
-2
lines changed

3 files changed

+35
-2
lines changed

src/AjaxUploader.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -245,6 +245,7 @@ class AjaxUploader extends Component<UploadProps> {
245245
const { onStart, customRequest, name, headers, withCredentials, method } = this.props;
246246

247247
const { uid } = origin;
248+
248249
const request = customRequest || defaultRequest;
249250

250251
const requestOption = {
@@ -274,7 +275,7 @@ class AjaxUploader extends Component<UploadProps> {
274275
};
275276

276277
onStart(origin);
277-
this.reqs[uid] = request(requestOption);
278+
this.reqs[uid] = request(requestOption, { defaultRequest });
278279
}
279280

280281
reset() {

src/interface.tsx

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ export interface UploadProps
3131
file: RcFile,
3232
FileList: RcFile[],
3333
) => BeforeUploadFileType | Promise<void | BeforeUploadFileType> | void;
34-
customRequest?: (option: UploadRequestOption) => void | { abort: () => void };
34+
customRequest?: CustomUploadRequestOption;
3535
withCredentials?: boolean;
3636
openFileDialogOnClick?: boolean;
3737
prefixCls?: string;
@@ -78,6 +78,10 @@ export interface UploadRequestOption<T = any> {
7878
method: UploadRequestMethod;
7979
}
8080

81+
export type CustomUploadRequestOption = (
82+
option: UploadRequestOption,
83+
info: { defaultRequest: (option: UploadRequestOption) => { abort: () => void } | void },
84+
) => void | { abort: () => void };
8185
export interface RcFile extends File {
8286
uid: string;
8387
}

tests/uploader.spec.tsx

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1266,4 +1266,32 @@ describe('uploader', () => {
12661266
expect(container.querySelector('span')!.tabIndex).not.toBe(0);
12671267
expect(container.querySelector('span')!).not.toHaveAttribute('role', 'button');
12681268
});
1269+
1270+
it('should receive same defaultRequest as src', done => {
1271+
const { default: srcRequest } = require('../src/request');
1272+
let receivedDefaultRequest: any;
1273+
const customRequest = jest.fn((option, { defaultRequest }) => {
1274+
if (option.file.name === 'test.png') {
1275+
defaultRequest(option);
1276+
receivedDefaultRequest = defaultRequest;
1277+
} else {
1278+
option.onError(new Error('custom error'));
1279+
}
1280+
});
1281+
const { container } = render(<Upload customRequest={customRequest} />);
1282+
1283+
const input = container.querySelector('input')!;
1284+
const files = [new File([''], 'test.png')];
1285+
Object.defineProperty(files, 'item', {
1286+
value: i => files[i],
1287+
});
1288+
1289+
fireEvent.change(input, { target: { files } });
1290+
setTimeout(() => {
1291+
requests[0].respond(200, {}, `["","${files[0].name}"]`);
1292+
expect(customRequest).toHaveBeenCalled();
1293+
expect(receivedDefaultRequest).toBe(srcRequest);
1294+
done();
1295+
}, 100);
1296+
});
12691297
});

0 commit comments

Comments
 (0)