mirror of
https://github.com/labring/FastGPT.git
synced 2025-12-31 02:42:46 +00:00
148 lines
3.8 KiB
TypeScript
148 lines
3.8 KiB
TypeScript
import { describe, expect, it } from 'vitest';
|
|
import {
|
|
form2AppWorkflow,
|
|
filterSensitiveFormData,
|
|
getAppQGuideCustomURL
|
|
} from '@/web/core/app/utils';
|
|
import { FlowNodeTypeEnum } from '@fastgpt/global/core/workflow/node/constant';
|
|
import { NodeInputKeyEnum } from '@fastgpt/global/core/workflow/constants';
|
|
import { getDefaultAppForm } from '@fastgpt/global/core/app/utils';
|
|
|
|
describe('form2AppWorkflow', () => {
|
|
const mockT = (str: string) => str;
|
|
|
|
it('should generate simple chat workflow when no datasets or tools selected', () => {
|
|
const form = {
|
|
aiSettings: {
|
|
model: 'gpt-3.5',
|
|
temperature: 0.7,
|
|
maxToken: 2000,
|
|
systemPrompt: 'You are a helpful assistant',
|
|
maxHistories: 5,
|
|
aiChatReasoning: true,
|
|
aiChatTopP: 0.8,
|
|
aiChatStopSign: '',
|
|
aiChatResponseFormat: '',
|
|
aiChatJsonSchema: ''
|
|
},
|
|
dataset: {
|
|
datasets: [],
|
|
similarity: 0.8,
|
|
limit: 1500,
|
|
searchMode: 'embedding',
|
|
embeddingWeight: 0.7,
|
|
usingReRank: false,
|
|
rerankModel: '',
|
|
rerankWeight: 0.5,
|
|
datasetSearchUsingExtensionQuery: false,
|
|
datasetSearchExtensionModel: '',
|
|
datasetSearchExtensionBg: ''
|
|
},
|
|
selectedTools: [],
|
|
chatConfig: {}
|
|
};
|
|
|
|
const result = form2AppWorkflow(form, mockT);
|
|
|
|
expect(result.nodes).toHaveLength(3);
|
|
expect(result.edges).toHaveLength(1);
|
|
});
|
|
|
|
it('should generate dataset workflow when datasets are selected', () => {
|
|
const form = {
|
|
aiSettings: {
|
|
model: 'gpt-3.5',
|
|
temperature: 0.7,
|
|
maxToken: 2000,
|
|
systemPrompt: 'You are a helpful assistant',
|
|
maxHistories: 5,
|
|
aiChatReasoning: true,
|
|
aiChatTopP: 0.8,
|
|
aiChatStopSign: '',
|
|
aiChatResponseFormat: '',
|
|
aiChatJsonSchema: ''
|
|
},
|
|
dataset: {
|
|
datasets: ['dataset1'],
|
|
similarity: 0.8,
|
|
limit: 1500,
|
|
searchMode: 'embedding',
|
|
embeddingWeight: 0.7,
|
|
usingReRank: false,
|
|
rerankModel: '',
|
|
rerankWeight: 0.5,
|
|
datasetSearchUsingExtensionQuery: false,
|
|
datasetSearchExtensionModel: '',
|
|
datasetSearchExtensionBg: ''
|
|
},
|
|
selectedTools: [],
|
|
chatConfig: {}
|
|
};
|
|
|
|
const result = form2AppWorkflow(form, mockT);
|
|
|
|
expect(result.nodes).toHaveLength(4);
|
|
expect(result.edges).toHaveLength(2);
|
|
});
|
|
});
|
|
|
|
describe('filterSensitiveFormData', () => {
|
|
it('should filter sensitive data from app form', () => {
|
|
const appForm = {
|
|
aiSettings: {
|
|
model: 'gpt-4',
|
|
temperature: 0.8
|
|
},
|
|
dataset: {
|
|
datasets: ['sensitive-dataset'],
|
|
similarity: 0.9
|
|
},
|
|
selectedTools: [],
|
|
chatConfig: {}
|
|
};
|
|
|
|
const result = filterSensitiveFormData(appForm);
|
|
const defaultForm = getDefaultAppForm();
|
|
|
|
expect(result.dataset).toEqual(defaultForm.dataset);
|
|
expect(result.aiSettings).toEqual(appForm.aiSettings);
|
|
});
|
|
});
|
|
|
|
describe('getAppQGuideCustomURL', () => {
|
|
it('should get custom URL from app detail', () => {
|
|
const appDetail = {
|
|
modules: [
|
|
{
|
|
flowNodeType: FlowNodeTypeEnum.systemConfig,
|
|
inputs: [
|
|
{
|
|
key: NodeInputKeyEnum.chatInputGuide,
|
|
value: {
|
|
customUrl: 'https://example.com'
|
|
}
|
|
}
|
|
]
|
|
}
|
|
]
|
|
};
|
|
|
|
const result = getAppQGuideCustomURL(appDetail);
|
|
expect(result).toBe('https://example.com');
|
|
});
|
|
|
|
it('should return empty string if no custom URL found', () => {
|
|
const appDetail = {
|
|
modules: [
|
|
{
|
|
flowNodeType: FlowNodeTypeEnum.systemConfig,
|
|
inputs: []
|
|
}
|
|
]
|
|
};
|
|
|
|
const result = getAppQGuideCustomURL(appDetail);
|
|
expect(result).toBe('');
|
|
});
|
|
});
|