|
@@ -30,6 +30,7 @@ describe('fileDownloader', () => {
|
|
|
expect(result).toBeInstanceOf(Blob);
|
|
expect(result).toBeInstanceOf(Blob);
|
|
|
expect(result).toEqual(mockBlob);
|
|
expect(result).toEqual(mockBlob);
|
|
|
expect(mockAxiosInstance.get).toHaveBeenCalledWith(url, {
|
|
expect(mockAxiosInstance.get).toHaveBeenCalledWith(url, {
|
|
|
|
|
+ method: 'GET',
|
|
|
responseType: 'blob',
|
|
responseType: 'blob',
|
|
|
responseReturn: 'body',
|
|
responseReturn: 'body',
|
|
|
});
|
|
});
|
|
@@ -51,6 +52,7 @@ describe('fileDownloader', () => {
|
|
|
expect(result).toEqual(mockBlob);
|
|
expect(result).toEqual(mockBlob);
|
|
|
expect(mockAxiosInstance.get).toHaveBeenCalledWith(url, {
|
|
expect(mockAxiosInstance.get).toHaveBeenCalledWith(url, {
|
|
|
...customConfig,
|
|
...customConfig,
|
|
|
|
|
+ method: 'GET',
|
|
|
responseType: 'blob',
|
|
responseType: 'blob',
|
|
|
responseReturn: 'body',
|
|
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.',
|
|
|
|
|
+ );
|
|
|
|
|
+ });
|
|
|
|
|
+});
|