mirror of
https://github.com/lobehub/lobe-chat.git
synced 2026-06-13 19:20:04 +00:00
✅ test: add more test for migration
This commit is contained in:
+2
-3
@@ -24,13 +24,12 @@ module.exports = defineConfig({
|
||||
],
|
||||
temperature: 0,
|
||||
modelName: 'gpt-3.5-turbo-0125',
|
||||
splitToken: 1024,
|
||||
splitToken: 2048,
|
||||
experimental: {
|
||||
jsonMode: true,
|
||||
},
|
||||
reference:
|
||||
'You need to maintain the component format of MDX, and the output text does not need to be wrapped in any code block syntax at the outermost level.',
|
||||
markdown: {
|
||||
// reference: '你需要保持 mdx 的组件格式,输出文本不需要在最外层包裹任何代码块语法',
|
||||
entry: ['./README.zh-CN.md', './contributing/**/*.zh-CN.md', './docs/**/*.zh-CN.mdx'],
|
||||
entryLocale: 'zh-CN',
|
||||
outputLocales: ['en-US'],
|
||||
|
||||
+1
-1
@@ -84,7 +84,7 @@
|
||||
"@anthropic-ai/sdk": "^0.18.0",
|
||||
"@auth/core": "0.28.0",
|
||||
"@aws-sdk/client-bedrock-runtime": "^3.549.0",
|
||||
"@azure/openai": "1.0.0-beta.12",
|
||||
"@azure/openai": "^1.0.0-beta.12",
|
||||
"@cfworker/json-schema": "^1.12.8",
|
||||
"@google/generative-ai": "^0.3.1",
|
||||
"@icons-pack/react-simple-icons": "^9.4.0",
|
||||
|
||||
@@ -86,4 +86,110 @@ describe('MigrationV3ToV4', () => {
|
||||
// expect(migratedData.state.topics).toEqual(outputV3DataFromV1.state.topics);
|
||||
// expect(migratedData.state.messages).toEqual(outputV3DataFromV1.state.messages);
|
||||
});
|
||||
|
||||
describe('Edge Case', () => {
|
||||
it('should handle undefined settings or languageModel', () => {
|
||||
const data: MigrationData = {
|
||||
version: 3,
|
||||
state: {
|
||||
// settings undefined
|
||||
},
|
||||
};
|
||||
|
||||
const migratedData = versionController.migrate(data);
|
||||
|
||||
expect(migratedData.version).toEqual(4);
|
||||
expect(migratedData.state.settings).toBeUndefined();
|
||||
});
|
||||
|
||||
it('should handle undefined languageModel', () => {
|
||||
const data: MigrationData = {
|
||||
version: 3,
|
||||
state: {
|
||||
settings: {
|
||||
// languageModel undefined
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
const migratedData = versionController.migrate(data);
|
||||
|
||||
expect(migratedData.version).toEqual(4);
|
||||
expect(migratedData.state.settings.languageModel).toBeUndefined();
|
||||
});
|
||||
|
||||
it('should handle missing provider configurations', () => {
|
||||
const data: MigrationData = {
|
||||
version: 3,
|
||||
state: {
|
||||
settings: {
|
||||
languageModel: {
|
||||
// missing togetherai、openrouter 、 ollama
|
||||
openAI: {
|
||||
// openAI
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
const migratedData = versionController.migrate(data);
|
||||
|
||||
expect(migratedData.version).toEqual(4);
|
||||
expect(migratedData.state.settings.languageModel.togetherai).toBeUndefined();
|
||||
expect(migratedData.state.settings.languageModel.openrouter).toBeUndefined();
|
||||
expect(migratedData.state.settings.languageModel.ollama).toBeUndefined();
|
||||
});
|
||||
|
||||
it('should success for invalid data format', () => {
|
||||
const data: MigrationData = {
|
||||
version: 3,
|
||||
state: {
|
||||
settings: {
|
||||
languageModel: {
|
||||
openAI: 'invalid-config', // 错误的配置格式
|
||||
},
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
const migratedData = versionController.migrate(data);
|
||||
|
||||
expect(migratedData.version).toEqual(4);
|
||||
expect(migratedData.state.settings.languageModel.openai).toEqual({ enabled: true });
|
||||
expect(migratedData.state.settings.languageModel.togetherai).toBeUndefined();
|
||||
expect(migratedData.state.settings.languageModel.openrouter).toBeUndefined();
|
||||
expect(migratedData.state.settings.languageModel.ollama).toBeUndefined();
|
||||
});
|
||||
|
||||
it('should handle empty strings and empty objects', () => {
|
||||
const data: MigrationData = {
|
||||
version: 3,
|
||||
state: {
|
||||
settings: {
|
||||
languageModel: {
|
||||
openAI: undefined,
|
||||
togetherai: {
|
||||
apiKey: '',
|
||||
endpoint: '',
|
||||
customModelName: '',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
const migratedData = versionController.migrate(data);
|
||||
|
||||
expect(migratedData.version).toEqual(4);
|
||||
expect(migratedData.state.settings.languageModel.openai).toEqual({
|
||||
apiKey: '',
|
||||
enabled: true,
|
||||
});
|
||||
|
||||
expect(migratedData.state.settings.languageModel.togetherai.apiKey).toEqual('');
|
||||
expect(migratedData.state.settings.languageModel.togetherai.endpoint).toEqual('');
|
||||
expect(migratedData.state.settings.languageModel.togetherai.customModelCards).toBeUndefined();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user