diff --git a/test/cases/web/core/dataset/api.test.ts b/test/cases/web/core/dataset/api.test.ts new file mode 100644 index 000000000..b22b858a2 --- /dev/null +++ b/test/cases/web/core/dataset/api.test.ts @@ -0,0 +1,195 @@ +import { describe, it, expect, vi, beforeEach } from 'vitest'; +import * as api from '@/web/core/dataset/api'; +import { POST, GET, PUT, DELETE } from '@/web/common/api/request'; + +vi.mock('@/web/common/api/request', () => ({ + POST: vi.fn(() => Promise.resolve()), + GET: vi.fn(), + PUT: vi.fn(), + DELETE: vi.fn() +})); + +describe('dataset api', () => { + beforeEach(() => { + vi.clearAllMocks(); + }); + + it('should get datasets', async () => { + const mockData = { searchText: 'test' }; + await api.getDatasets(mockData); + expect(POST).toHaveBeenCalledWith('/core/dataset/list', mockData); + }); + + it('should get datasets by app id and dataset ids', async () => { + const mockData = { + appId: 'app1', + datasetIdList: ['id1', 'id2'] + }; + await api.getDatasetsByAppIdAndDatasetIds(mockData); + expect(POST).toHaveBeenCalledWith('/core/dataset/listByAppIdAndDatasetIds', mockData); + }); + + it('should get dataset paths', async () => { + const mockData = { + sourceId: 'source1' + }; + await api.getDatasetPaths(mockData); + expect(GET).toHaveBeenCalledWith('/core/dataset/paths', mockData); + }); + + it('should return empty array if no sourceId', async () => { + const result = await api.getDatasetPaths({}); + expect(result).toEqual([]); + expect(GET).not.toHaveBeenCalled(); + }); + + it('should get dataset by id', async () => { + const id = 'dataset1'; + await api.getDatasetById(id); + expect(GET).toHaveBeenCalledWith(`/core/dataset/detail?id=${id}`); + }); + + it('should create dataset', async () => { + const mockData = { + name: 'Test Dataset' + }; + await api.postCreateDataset(mockData); + expect(POST).toHaveBeenCalledWith('/core/dataset/create', mockData); + }); + + it('should update dataset', async () => { + const mockData = { + id: 'dataset1', + name: 'Updated Dataset' + }; + await api.putDatasetById(mockData); + expect(PUT).toHaveBeenCalledWith('/core/dataset/update', mockData); + }); + + it('should delete dataset', async () => { + const id = 'dataset1'; + await api.delDatasetById(id); + expect(DELETE).toHaveBeenCalledWith(`/core/dataset/delete?id=${id}`); + }); + + it('should sync website', async () => { + const mockData = { + url: 'http://test.com' + }; + const mockPostResponse = Promise.resolve(); + vi.mocked(POST).mockReturnValueOnce(mockPostResponse); + + await api.postWebsiteSync(mockData); + expect(POST).toHaveBeenCalledWith('/proApi/core/dataset/websiteSync', mockData, { + timeout: 600000 + }); + }); + + it('should create dataset folder', async () => { + const mockData = { + name: 'Test Folder' + }; + await api.postCreateDatasetFolder(mockData); + expect(POST).toHaveBeenCalledWith('/core/dataset/folder/create', mockData); + }); + + it('should resume inherit permission', async () => { + const datasetId = 'dataset1'; + await api.resumeInheritPer(datasetId); + expect(GET).toHaveBeenCalledWith('/core/dataset/resumeInheritPermission', { datasetId }); + }); + + it('should change owner', async () => { + const mockData = { + ownerId: 'user1', + datasetId: 'dataset1' + }; + await api.postChangeOwner(mockData); + expect(POST).toHaveBeenCalledWith('/proApi/core/dataset/changeOwner', mockData); + }); + + it('should backup dataset collection', async () => { + const file = new File(['test'], 'test.txt'); + const percentListen = vi.fn(); + const datasetId = 'dataset1'; + + const formData = new FormData(); + formData.append('file', file, encodeURIComponent(file.name)); + formData.append('data', JSON.stringify({ datasetId })); + + await api.postBackupDatasetCollection({ + file, + percentListen, + datasetId + }); + + expect(POST).toHaveBeenCalledWith( + '/core/dataset/collection/create/backup', + expect.any(FormData), + { + timeout: 600000, + onUploadProgress: expect.any(Function), + headers: { + 'Content-Type': 'multipart/form-data; charset=utf-8' + } + } + ); + }); + + it('should search text', async () => { + const mockData = { + text: 'test' + }; + await api.postSearchText(mockData); + expect(POST).toHaveBeenCalledWith('/core/dataset/searchTest', mockData); + }); + + it('should get dataset collections', async () => { + const mockData = { + datasetId: 'dataset1' + }; + await api.getDatasetCollections(mockData); + expect(POST).toHaveBeenCalledWith('/core/dataset/collection/listV2', mockData); + }); + + it('should get dataset collection path by id', async () => { + const parentId = 'parent1'; + await api.getDatasetCollectionPathById(parentId); + expect(GET).toHaveBeenCalledWith('/core/dataset/collection/paths', { parentId }); + }); + + it('should get dataset collection by id', async () => { + const id = 'collection1'; + await api.getDatasetCollectionById(id); + expect(GET).toHaveBeenCalledWith('/core/dataset/collection/detail', { id }); + }); + + it('should get dataset collection training detail', async () => { + const collectionId = 'collection1'; + await api.getDatasetCollectionTrainingDetail(collectionId); + expect(GET).toHaveBeenCalledWith('/core/dataset/collection/trainingDetail', { collectionId }); + }); + + it('should create dataset collection', async () => { + const mockData = { + name: 'Test Collection' + }; + await api.postDatasetCollection(mockData); + expect(POST).toHaveBeenCalledWith('/core/dataset/collection/create', mockData); + }); + + it('should update dataset collection', async () => { + const mockData = { + id: 'collection1', + name: 'Updated Collection' + }; + await api.putDatasetCollectionById(mockData); + expect(POST).toHaveBeenCalledWith('/core/dataset/collection/update', mockData); + }); + + it('should delete dataset collection', async () => { + const mockData = { id: 'collection1' }; + await api.delDatasetCollectionById(mockData); + expect(DELETE).toHaveBeenCalledWith('/core/dataset/collection/delete', mockData); + }); +});