91 lines
2.6 KiB
JavaScript
91 lines
2.6 KiB
JavaScript
const test = require('node:test');
|
|
const assert = require('node:assert/strict');
|
|
const fs = require('node:fs');
|
|
const vm = require('node:vm');
|
|
|
|
const source = fs.readFileSync('sidepanel/contribution-mode.js', 'utf8');
|
|
|
|
function createElement() {
|
|
return {
|
|
hidden: false,
|
|
disabled: false,
|
|
title: '',
|
|
textContent: '',
|
|
value: '',
|
|
classList: {
|
|
hiddenState: false,
|
|
toggle(_className, hidden) {
|
|
this.hiddenState = Boolean(hidden);
|
|
},
|
|
},
|
|
setAttribute() {},
|
|
addEventListener() {},
|
|
};
|
|
}
|
|
|
|
test('contribution mode manager does not project openai-only ui state into kiro flow', () => {
|
|
const context = {
|
|
window: {},
|
|
document: { activeElement: null },
|
|
console,
|
|
setTimeout,
|
|
clearTimeout,
|
|
};
|
|
vm.runInNewContext(source, context);
|
|
|
|
const createContributionModeManager = context.window.SidepanelContributionMode.createContributionModeManager;
|
|
const rowVpsUrl = createElement();
|
|
const dom = {
|
|
btnContributionMode: createElement(),
|
|
contributionModePanel: createElement(),
|
|
contributionModeText: createElement(),
|
|
contributionModeBadge: createElement(),
|
|
contributionOauthStatus: createElement(),
|
|
contributionCallbackStatus: createElement(),
|
|
contributionModeSummary: createElement(),
|
|
inputContributionNickname: createElement(),
|
|
inputContributionQq: createElement(),
|
|
btnStartContribution: createElement(),
|
|
btnOpenContributionUpload: createElement(),
|
|
btnExitContributionMode: createElement(),
|
|
btnOpenAccountRecords: createElement(),
|
|
selectPanelMode: createElement(),
|
|
rowVpsUrl,
|
|
};
|
|
const manager = createContributionModeManager({
|
|
state: {
|
|
getLatestState: () => ({
|
|
activeFlowId: 'kiro',
|
|
flowId: 'kiro',
|
|
contributionMode: true,
|
|
contributionSource: 'cpa',
|
|
}),
|
|
},
|
|
dom,
|
|
helpers: {
|
|
updatePanelModeUI() {},
|
|
updateAccountRunHistorySettingsUI() {},
|
|
updateConfigMenuControls() {},
|
|
closeConfigMenu() {},
|
|
closeAccountRecordsPanel() {},
|
|
isModeSwitchBlocked() {
|
|
return false;
|
|
},
|
|
},
|
|
runtime: {
|
|
sendMessage: async () => ({}),
|
|
},
|
|
constants: {},
|
|
});
|
|
|
|
manager.render();
|
|
|
|
assert.equal(dom.contributionModePanel.hidden, true);
|
|
assert.equal(dom.selectPanelMode.disabled, false);
|
|
assert.equal(dom.btnContributionMode.disabled, true);
|
|
assert.equal(dom.btnContributionMode.title, '当前 flow 不支持贡献模式');
|
|
assert.equal(dom.btnStartContribution.disabled, true);
|
|
assert.equal(dom.btnOpenContributionUpload.disabled, true);
|
|
assert.equal(rowVpsUrl.classList.hiddenState, false);
|
|
});
|