mirror of
https://github.com/labring/FastGPT.git
synced 2025-07-24 22:03:54 +00:00
test: Add unit test for projects/app/src/pages/api/core/dataset/collection/paths.ts (#4350)
* Add unit tests for getDatasetCollectionPaths function and modify paths.ts to export handler. * Update paths.ts --------- Co-authored-by: gru-agent[bot] <185149714+gru-agent[bot]@users.noreply.github.com> Co-authored-by: Archer <545436317@qq.com>
This commit is contained in:
@@ -5,7 +5,7 @@ import { ParentTreePathItemType } from '@fastgpt/global/common/parentFolder/type
|
|||||||
import { MongoDatasetCollection } from '@fastgpt/service/core/dataset/collection/schema';
|
import { MongoDatasetCollection } from '@fastgpt/service/core/dataset/collection/schema';
|
||||||
import { NextAPI } from '@/service/middleware/entry';
|
import { NextAPI } from '@/service/middleware/entry';
|
||||||
|
|
||||||
async function handler(req: NextApiRequest) {
|
export async function handler(req: NextApiRequest) {
|
||||||
const { parentId } = req.query as { parentId: string };
|
const { parentId } = req.query as { parentId: string };
|
||||||
|
|
||||||
if (!parentId) {
|
if (!parentId) {
|
||||||
|
87
test/cases/pages/api/core/dataset/collection/paths.test.ts
Normal file
87
test/cases/pages/api/core/dataset/collection/paths.test.ts
Normal file
@@ -0,0 +1,87 @@
|
|||||||
|
import { describe, it, expect, vi, beforeEach } from 'vitest';
|
||||||
|
import { getDatasetCollectionPaths } from '@/pages/api/core/dataset/collection/paths';
|
||||||
|
import { MongoDatasetCollection } from '@fastgpt/service/core/dataset/collection/schema';
|
||||||
|
|
||||||
|
vi.mock('@fastgpt/service/core/dataset/collection/schema', () => ({
|
||||||
|
MongoDatasetCollection: {
|
||||||
|
findOne: vi.fn()
|
||||||
|
},
|
||||||
|
DatasetColCollectionName: 'dataset_collections'
|
||||||
|
}));
|
||||||
|
|
||||||
|
describe('getDatasetCollectionPaths', () => {
|
||||||
|
beforeEach(() => {
|
||||||
|
vi.clearAllMocks();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should return empty array for empty parentId', async () => {
|
||||||
|
const result = await getDatasetCollectionPaths({});
|
||||||
|
expect(result).toEqual([]);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should return empty array if collection not found', async () => {
|
||||||
|
vi.mocked(MongoDatasetCollection.findOne).mockResolvedValueOnce(null);
|
||||||
|
|
||||||
|
const result = await getDatasetCollectionPaths({ parentId: 'nonexistent-id' });
|
||||||
|
expect(result).toEqual([]);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should return single path for collection without parent', async () => {
|
||||||
|
vi.mocked(MongoDatasetCollection.findOne).mockResolvedValueOnce({
|
||||||
|
_id: 'col1',
|
||||||
|
name: 'Collection 1',
|
||||||
|
parentId: ''
|
||||||
|
});
|
||||||
|
|
||||||
|
const result = await getDatasetCollectionPaths({ parentId: 'col1' });
|
||||||
|
expect(result).toEqual([{ parentId: 'col1', parentName: 'Collection 1' }]);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should return full path for nested collections', async () => {
|
||||||
|
vi.mocked(MongoDatasetCollection.findOne)
|
||||||
|
.mockResolvedValueOnce({
|
||||||
|
_id: 'col3',
|
||||||
|
name: 'Collection 3',
|
||||||
|
parentId: 'col2'
|
||||||
|
})
|
||||||
|
.mockResolvedValueOnce({
|
||||||
|
_id: 'col2',
|
||||||
|
name: 'Collection 2',
|
||||||
|
parentId: 'col1'
|
||||||
|
})
|
||||||
|
.mockResolvedValueOnce({
|
||||||
|
_id: 'col1',
|
||||||
|
name: 'Collection 1',
|
||||||
|
parentId: ''
|
||||||
|
});
|
||||||
|
|
||||||
|
const result = await getDatasetCollectionPaths({ parentId: 'col3' });
|
||||||
|
|
||||||
|
expect(result).toEqual([
|
||||||
|
{ parentId: 'col1', parentName: 'Collection 1' },
|
||||||
|
{ parentId: 'col2', parentName: 'Collection 2' },
|
||||||
|
{ parentId: 'col3', parentName: 'Collection 3' }
|
||||||
|
]);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should handle circular references gracefully', async () => {
|
||||||
|
vi.mocked(MongoDatasetCollection.findOne)
|
||||||
|
.mockResolvedValueOnce({
|
||||||
|
_id: 'col1',
|
||||||
|
name: 'Collection 1',
|
||||||
|
parentId: 'col2'
|
||||||
|
})
|
||||||
|
.mockResolvedValueOnce({
|
||||||
|
_id: 'col2',
|
||||||
|
name: 'Collection 2',
|
||||||
|
parentId: 'col1'
|
||||||
|
});
|
||||||
|
|
||||||
|
const result = await getDatasetCollectionPaths({ parentId: 'col1' });
|
||||||
|
|
||||||
|
expect(result).toEqual([
|
||||||
|
{ parentId: 'col2', parentName: 'Collection 2' },
|
||||||
|
{ parentId: 'col1', parentName: 'Collection 1' }
|
||||||
|
]);
|
||||||
|
});
|
||||||
|
});
|
Reference in New Issue
Block a user