From 4a305e9960c9be855fb1dcd1aa01407203ff4eb0 Mon Sep 17 00:00:00 2001 From: arvinxx Date: Thu, 11 Apr 2024 00:57:37 +0800 Subject: [PATCH] =?UTF-8?q?=E2=9C=85=20test:=20add=20more=20test=20for=20m?= =?UTF-8?q?igration?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .i18nrc.js | 5 +- package.json | 2 +- src/migrations/FromV3ToV4/migrations.test.ts | 106 +++++++++++++++++++ 3 files changed, 109 insertions(+), 4 deletions(-) diff --git a/.i18nrc.js b/.i18nrc.js index 90aaa5a45ec7..754554b1838d 100644 --- a/.i18nrc.js +++ b/.i18nrc.js @@ -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'], diff --git a/package.json b/package.json index a99dcf9b361b..df886a4d161a 100644 --- a/package.json +++ b/package.json @@ -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", diff --git a/src/migrations/FromV3ToV4/migrations.test.ts b/src/migrations/FromV3ToV4/migrations.test.ts index 0c69aab2183a..339689299e3f 100644 --- a/src/migrations/FromV3ToV4/migrations.test.ts +++ b/src/migrations/FromV3ToV4/migrations.test.ts @@ -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(); + }); + }); });