feat: add a common upload endpoint (#7806)

Co-authored-by: Sivin Varghese <64252451+iamsivin@users.noreply.github.com>
This commit is contained in:
Shivam Mishra
2023-08-31 10:36:02 +07:00
committed by GitHub
parent 25c3fb3c36
commit deec1d213b
11 changed files with 195 additions and 44 deletions

View File

@@ -1,4 +1,5 @@
import articlesAPI from 'dashboard/api/helpCenter/articles';
import { uploadFile } from 'dashboard/helper/uploadHelper';
import { throwErrorMessage } from 'dashboard/store/utils/api';
import types from '../../mutation-types';
@@ -126,19 +127,9 @@ export const actions = {
}
},
attachImage: async (_, { portalSlug, file }) => {
try {
const {
data: { file_url: fileUrl },
} = await articlesAPI.uploadImage({
portalSlug,
file,
});
return fileUrl;
} catch (error) {
throwErrorMessage(error);
}
return '';
attachImage: async (_, { file }) => {
const { fileUrl } = await uploadFile(file);
return fileUrl;
},
reorder: async (_, { portalSlug, categorySlug, reorderedGroup }) => {

View File

@@ -1,6 +1,10 @@
import axios from 'axios';
import { actions } from '../actions';
import * as types from '../../../mutation-types';
import { uploadFile } from 'dashboard/helper/uploadHelper';
jest.mock('dashboard/helper/uploadHelper');
const articleList = [
{
id: 1,
@@ -180,4 +184,36 @@ describe('#actions', () => {
]);
});
});
describe('attachImage', () => {
it('should upload the file and return the fileUrl', async () => {
// Given
const mockFile = new Blob(['test'], { type: 'image/png' });
mockFile.name = 'test.png';
const mockFileUrl = 'https://test.com/test.png';
uploadFile.mockResolvedValueOnce({ fileUrl: mockFileUrl });
// When
const result = await actions.attachImage({}, { file: mockFile });
// Then
expect(uploadFile).toHaveBeenCalledWith(mockFile);
expect(result).toBe(mockFileUrl);
});
it('should throw an error if the upload fails', async () => {
// Given
const mockFile = new Blob(['test'], { type: 'image/png' });
mockFile.name = 'test.png';
const mockError = new Error('Upload failed');
uploadFile.mockRejectedValueOnce(mockError);
// When & Then
await expect(actions.attachImage({}, { file: mockFile })).rejects.toThrow(
'Upload failed'
);
});
});
});