|
|
|
@ -30,6 +30,7 @@ describe('fileDownloader', () => { |
|
|
|
expect(result).toBeInstanceOf(Blob); |
|
|
|
expect(result).toEqual(mockBlob); |
|
|
|
expect(mockAxiosInstance.get).toHaveBeenCalledWith(url, { |
|
|
|
method: 'GET', |
|
|
|
responseType: 'blob', |
|
|
|
responseReturn: 'body', |
|
|
|
}); |
|
|
|
@ -51,6 +52,7 @@ describe('fileDownloader', () => { |
|
|
|
expect(result).toEqual(mockBlob); |
|
|
|
expect(mockAxiosInstance.get).toHaveBeenCalledWith(url, { |
|
|
|
...customConfig, |
|
|
|
method: 'GET', |
|
|
|
responseType: 'blob', |
|
|
|
responseReturn: 'body', |
|
|
|
}); |
|
|
|
@ -84,3 +86,72 @@ describe('fileDownloader', () => { |
|
|
|
); |
|
|
|
}); |
|
|
|
}); |
|
|
|
|
|
|
|
describe('fileDownloader use other method', () => { |
|
|
|
let fileDownloader: FileDownloader; |
|
|
|
|
|
|
|
it('should call request using get', async () => { |
|
|
|
const url = 'https://example.com/file'; |
|
|
|
const mockBlob = new Blob(['file content'], { type: 'text/plain' }); |
|
|
|
const mockResponse: Blob = mockBlob; |
|
|
|
|
|
|
|
const mockAxiosInstance = { |
|
|
|
request: vi.fn(), |
|
|
|
} as any; |
|
|
|
|
|
|
|
fileDownloader = new FileDownloader(mockAxiosInstance); |
|
|
|
|
|
|
|
mockAxiosInstance.request.mockResolvedValueOnce(mockResponse); |
|
|
|
|
|
|
|
const result = await fileDownloader.download(url); |
|
|
|
|
|
|
|
expect(result).toBeInstanceOf(Blob); |
|
|
|
expect(result).toEqual(mockBlob); |
|
|
|
expect(mockAxiosInstance.request).toHaveBeenCalledWith(url, { |
|
|
|
method: 'GET', |
|
|
|
responseType: 'blob', |
|
|
|
responseReturn: 'body', |
|
|
|
}); |
|
|
|
}); |
|
|
|
|
|
|
|
it('should call post', async () => { |
|
|
|
const url = 'https://example.com/file'; |
|
|
|
|
|
|
|
const mockAxiosInstance = { |
|
|
|
post: vi.fn(), |
|
|
|
} as any; |
|
|
|
|
|
|
|
fileDownloader = new FileDownloader(mockAxiosInstance); |
|
|
|
|
|
|
|
const customConfig: AxiosRequestConfig = { |
|
|
|
method: 'POST', |
|
|
|
data: { name: 'aa' }, |
|
|
|
}; |
|
|
|
|
|
|
|
await fileDownloader.download(url, customConfig); |
|
|
|
|
|
|
|
expect(mockAxiosInstance.post).toHaveBeenCalledWith( |
|
|
|
url, |
|
|
|
{ name: 'aa' }, |
|
|
|
{ |
|
|
|
method: 'POST', |
|
|
|
responseType: 'blob', |
|
|
|
responseReturn: 'body', |
|
|
|
}, |
|
|
|
); |
|
|
|
}); |
|
|
|
|
|
|
|
it('should handle errors gracefully', async () => { |
|
|
|
const url = 'https://example.com/file'; |
|
|
|
const mockAxiosInstance = { |
|
|
|
post: vi.fn(), |
|
|
|
} as any; |
|
|
|
|
|
|
|
fileDownloader = new FileDownloader(mockAxiosInstance); |
|
|
|
await expect(() => |
|
|
|
fileDownloader.download(url, { method: 'postt' }), |
|
|
|
).rejects.toThrow( |
|
|
|
'RequestClient does not support method "POSTT". Please ensure the method is properly implemented in your RequestClient instance.', |
|
|
|
); |
|
|
|
}); |
|
|
|
}); |
|
|
|
|