73 lines
2.5 KiB
JavaScript
73 lines
2.5 KiB
JavaScript
const test = require('node:test');
|
|
const assert = require('node:assert/strict');
|
|
const fs = require('node:fs');
|
|
|
|
const source = fs.readFileSync('shared/flow-capabilities.js', 'utf8');
|
|
|
|
function loadApi() {
|
|
const scope = {};
|
|
return new Function('self', `${source}; return self.MultiPageFlowCapabilities;`)(scope);
|
|
}
|
|
|
|
test('flow capability registry keeps OpenAI phone signup available only when runtime locks allow it', () => {
|
|
const api = loadApi();
|
|
const registry = api.createFlowCapabilityRegistry();
|
|
|
|
const enabledState = registry.resolveSidepanelCapabilities({
|
|
state: {
|
|
activeFlowId: 'openai',
|
|
panelMode: 'cpa',
|
|
phoneVerificationEnabled: true,
|
|
plusModeEnabled: false,
|
|
contributionMode: false,
|
|
signupMethod: 'phone',
|
|
},
|
|
});
|
|
|
|
assert.equal(enabledState.canUsePhoneSignup, true);
|
|
assert.equal(enabledState.effectiveSignupMethod, 'phone');
|
|
assert.equal(enabledState.shouldWarnCpaPhoneSignup, true);
|
|
assert.deepEqual(enabledState.effectiveSignupMethods, ['email', 'phone']);
|
|
|
|
const plusLockedState = registry.resolveSidepanelCapabilities({
|
|
state: {
|
|
activeFlowId: 'openai',
|
|
panelMode: 'sub2api',
|
|
phoneVerificationEnabled: true,
|
|
plusModeEnabled: true,
|
|
contributionMode: false,
|
|
signupMethod: 'phone',
|
|
},
|
|
});
|
|
|
|
assert.equal(plusLockedState.canUsePhoneSignup, false);
|
|
assert.equal(plusLockedState.effectiveSignupMethod, 'email');
|
|
assert.equal(plusLockedState.shouldWarnCpaPhoneSignup, false);
|
|
assert.deepEqual(plusLockedState.effectiveSignupMethods, ['email']);
|
|
});
|
|
|
|
test('flow capability registry defaults unknown flows to minimal non-phone capabilities', () => {
|
|
const api = loadApi();
|
|
const registry = api.createFlowCapabilityRegistry();
|
|
|
|
const capabilityState = registry.resolveSidepanelCapabilities({
|
|
state: {
|
|
activeFlowId: 'site-a',
|
|
panelMode: 'codex2api',
|
|
phoneVerificationEnabled: true,
|
|
plusModeEnabled: true,
|
|
contributionMode: true,
|
|
signupMethod: 'phone',
|
|
},
|
|
});
|
|
|
|
assert.equal(capabilityState.activeFlowId, 'site-a');
|
|
assert.equal(capabilityState.canShowPhoneSettings, false);
|
|
assert.equal(capabilityState.canShowPlusSettings, false);
|
|
assert.equal(capabilityState.canShowLuckmail, false);
|
|
assert.equal(capabilityState.canUsePhoneSignup, false);
|
|
assert.equal(capabilityState.effectiveSignupMethod, 'email');
|
|
assert.equal(capabilityState.panelMode, 'codex2api');
|
|
assert.deepEqual(capabilityState.supportedPanelModes, []);
|
|
});
|