fix(accounts): match network exit select to profile field size

This commit is contained in:
2026-10-06 10:36:51 +08:00
parent 67bbd199b2
commit c213013a27
2 changed files with 34 additions and 1 deletions
@@ -74,7 +74,6 @@ export default function RebindEnvironment({ binding, disabled, onRebound, onErro
placeholder={exitsError ? '出口列表不可用' : '选择目标出口'}
disabled={disabled || exitsError || busy}
aria-label="目标网络出口"
size="small"
/>
<Button size="small" type="primary" disabled={disabled || exitsError || unchanged || busy} loading={busy} onClick={rebind}>
保存网络出口
@@ -0,0 +1,34 @@
const assert = require('node:assert/strict');
const { readFileSync } = require('node:fs');
const { test } = require('node:test');
const ts = require('typescript');
function source(path) {
return ts.createSourceFile(path, readFileSync(`${__dirname}/../src/${path}`, 'utf8'), ts.ScriptTarget.Latest, true, ts.ScriptKind.TSX);
}
function find(ast, predicate) {
let result;
function visit(node) {
if (!result && predicate(node)) result = node;
ts.forEachChild(node, visit);
}
visit(ast);
assert.ok(result, '目标控件必须存在');
return result;
}
function size(element) {
return element.attributes.properties.find(prop => prop.name?.getText() === 'size')?.initializer?.getText();
}
test('网络出口下拉框与业务状态使用同一默认大小,保存按钮保持 small', () => {
const edit = source('pages/accounts/$id/edit.tsx');
const status = find(edit, node => ts.isJsxElement(node) && node.openingElement.tagName.getText() === 'Form.Item' &&
node.openingElement.attributes.properties.some(prop => prop.name?.getText() === 'name' && prop.initializer?.text === 'business_status'));
const statusSelect = find(status, node => ts.isJsxSelfClosingElement(node) && node.tagName.getText() === 'Select');
const exit = source('components/accounts/RebindEnvironment.tsx');
const exitSelect = find(exit, node => ts.isJsxSelfClosingElement(node) && node.tagName.getText() === 'Select');
assert.equal(size(statusSelect), undefined);
assert.equal(size(exitSelect), size(statusSelect));
const save = find(exit, node => ts.isJsxOpeningElement(node) && node.tagName.getText() === 'Button');
assert.equal(size(save), '"small"');
});