Skip to content

Commit 4a305e9

Browse files
committed
✅ test: add more test for migration
1 parent 021bf91 commit 4a305e9

File tree

3 files changed

+109
-4
lines changed

3 files changed

+109
-4
lines changed

.i18nrc.js

+2-3
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,12 @@ module.exports = defineConfig({
2424
],
2525
temperature: 0,
2626
modelName: 'gpt-3.5-turbo-0125',
27-
splitToken: 1024,
27+
splitToken: 2048,
2828
experimental: {
2929
jsonMode: true,
3030
},
31-
reference:
32-
'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.',
3331
markdown: {
32+
// reference: '你需要保持 mdx 的组件格式,输出文本不需要在最外层包裹任何代码块语法',
3433
entry: ['./README.zh-CN.md', './contributing/**/*.zh-CN.md', './docs/**/*.zh-CN.mdx'],
3534
entryLocale: 'zh-CN',
3635
outputLocales: ['en-US'],

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@
8484
"@anthropic-ai/sdk": "^0.18.0",
8585
"@auth/core": "0.28.0",
8686
"@aws-sdk/client-bedrock-runtime": "^3.549.0",
87-
"@azure/openai": "1.0.0-beta.12",
87+
"@azure/openai": "^1.0.0-beta.12",
8888
"@cfworker/json-schema": "^1.12.8",
8989
"@google/generative-ai": "^0.3.1",
9090
"@icons-pack/react-simple-icons": "^9.4.0",

src/migrations/FromV3ToV4/migrations.test.ts

+106
Original file line numberDiff line numberDiff line change
@@ -86,4 +86,110 @@ describe('MigrationV3ToV4', () => {
8686
// expect(migratedData.state.topics).toEqual(outputV3DataFromV1.state.topics);
8787
// expect(migratedData.state.messages).toEqual(outputV3DataFromV1.state.messages);
8888
});
89+
90+
describe('Edge Case', () => {
91+
it('should handle undefined settings or languageModel', () => {
92+
const data: MigrationData = {
93+
version: 3,
94+
state: {
95+
// settings undefined
96+
},
97+
};
98+
99+
const migratedData = versionController.migrate(data);
100+
101+
expect(migratedData.version).toEqual(4);
102+
expect(migratedData.state.settings).toBeUndefined();
103+
});
104+
105+
it('should handle undefined languageModel', () => {
106+
const data: MigrationData = {
107+
version: 3,
108+
state: {
109+
settings: {
110+
// languageModel undefined
111+
},
112+
},
113+
};
114+
115+
const migratedData = versionController.migrate(data);
116+
117+
expect(migratedData.version).toEqual(4);
118+
expect(migratedData.state.settings.languageModel).toBeUndefined();
119+
});
120+
121+
it('should handle missing provider configurations', () => {
122+
const data: MigrationData = {
123+
version: 3,
124+
state: {
125+
settings: {
126+
languageModel: {
127+
// missing togetherai、openrouter 、 ollama
128+
openAI: {
129+
// openAI
130+
},
131+
},
132+
},
133+
},
134+
};
135+
136+
const migratedData = versionController.migrate(data);
137+
138+
expect(migratedData.version).toEqual(4);
139+
expect(migratedData.state.settings.languageModel.togetherai).toBeUndefined();
140+
expect(migratedData.state.settings.languageModel.openrouter).toBeUndefined();
141+
expect(migratedData.state.settings.languageModel.ollama).toBeUndefined();
142+
});
143+
144+
it('should success for invalid data format', () => {
145+
const data: MigrationData = {
146+
version: 3,
147+
state: {
148+
settings: {
149+
languageModel: {
150+
openAI: 'invalid-config', // 错误的配置格式
151+
},
152+
},
153+
},
154+
};
155+
156+
const migratedData = versionController.migrate(data);
157+
158+
expect(migratedData.version).toEqual(4);
159+
expect(migratedData.state.settings.languageModel.openai).toEqual({ enabled: true });
160+
expect(migratedData.state.settings.languageModel.togetherai).toBeUndefined();
161+
expect(migratedData.state.settings.languageModel.openrouter).toBeUndefined();
162+
expect(migratedData.state.settings.languageModel.ollama).toBeUndefined();
163+
});
164+
165+
it('should handle empty strings and empty objects', () => {
166+
const data: MigrationData = {
167+
version: 3,
168+
state: {
169+
settings: {
170+
languageModel: {
171+
openAI: undefined,
172+
togetherai: {
173+
apiKey: '',
174+
endpoint: '',
175+
customModelName: '',
176+
},
177+
},
178+
},
179+
},
180+
};
181+
182+
const migratedData = versionController.migrate(data);
183+
184+
expect(migratedData.version).toEqual(4);
185+
expect(migratedData.state.settings.languageModel.openai).toEqual({
186+
apiKey: '',
187+
enabled: true,
188+
});
189+
190+
expect(migratedData.state.settings.languageModel.togetherai.apiKey).toEqual('');
191+
expect(migratedData.state.settings.languageModel.togetherai.endpoint).toEqual('');
192+
expect(migratedData.state.settings.languageModel.togetherai.customModelCards).toBeUndefined();
193+
});
194+
});
89195
});

0 commit comments

Comments
 (0)