feat: 完善 AI Studio Key 自动化流程
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
'use strict';
|
||||
|
||||
const assert = require('assert');
|
||||
|
||||
const servicePath = require.resolve('../src/services/language_service');
|
||||
const stepPath = require.resolve('../src/pipeline/steps/change_language');
|
||||
const languageService = require(servicePath);
|
||||
const originalChangeLanguage = languageService.changeLanguageFromPage;
|
||||
|
||||
function makeContext(taskType) {
|
||||
const dbWrites = [];
|
||||
const messages = [];
|
||||
const logs = [];
|
||||
return {
|
||||
account: { email: 'language-test@example.com' },
|
||||
page: { url: () => 'https://myaccount.google.com/language' },
|
||||
taskType,
|
||||
results: {},
|
||||
shouldStop: false,
|
||||
failure: null,
|
||||
log: message => logs.push(message),
|
||||
dbWrite: async (...args) => { dbWrites.push(args); },
|
||||
updateMessage: async (...args) => { messages.push(args); },
|
||||
dbWrites,
|
||||
messages,
|
||||
logs,
|
||||
};
|
||||
}
|
||||
|
||||
(async () => {
|
||||
try {
|
||||
languageService.changeLanguageFromPage = async () => [false, '未找到可点击的保存按钮'];
|
||||
delete require.cache[stepPath];
|
||||
const changeLanguageStep = require(stepPath);
|
||||
|
||||
const combo = makeContext('aistudio_combo');
|
||||
await changeLanguageStep(combo);
|
||||
assert.strictEqual(combo.shouldStop, false, 'AI Studio 组合流程不应被语言切换失败中止');
|
||||
assert.strictEqual(combo.failure, null);
|
||||
assert.strictEqual(combo.results.changeLanguage.warning, true);
|
||||
assert.strictEqual(combo.dbWrites.length, 0, '可降级警告不应污染账号失败原因');
|
||||
assert(combo.logs.some(line => line.includes('继续后续流程')));
|
||||
|
||||
const standalone = makeContext('change_language');
|
||||
await changeLanguageStep(standalone);
|
||||
assert.strictEqual(standalone.shouldStop, true, '单独改语言任务失败时仍应停止并报错');
|
||||
assert(standalone.failure && standalone.failure.msg.includes('改语言失败'));
|
||||
assert.strictEqual(standalone.dbWrites.length, 1);
|
||||
|
||||
console.log('change_language_step.test.js: PASS');
|
||||
} finally {
|
||||
languageService.changeLanguageFromPage = originalChangeLanguage;
|
||||
delete require.cache[stepPath];
|
||||
}
|
||||
})().catch(error => {
|
||||
console.error(error && error.stack ? error.stack : error);
|
||||
process.exitCode = 1;
|
||||
});
|
||||
Reference in New Issue
Block a user