feat(consignment): 拆分自动/手动匹配口径并优化内部匹配列表
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
import assert from 'node:assert/strict'
|
||||
import { readFileSync } from 'node:fs'
|
||||
import { fileURLToPath } from 'node:url'
|
||||
import test from 'node:test'
|
||||
|
||||
test('打手寄卖页:空规格集合必须用稳定引用,避免 React #185 无限渲染', () => {
|
||||
const source = readFileSync(
|
||||
fileURLToPath(new URL('../src/pages/worker/WorkerConsignmentPage.tsx', import.meta.url)),
|
||||
'utf8',
|
||||
)
|
||||
|
||||
assert.ok(
|
||||
source.includes('const EMPTY_CONSIGNMENT_PROFILES: WorkerConsignmentProfile[] = []'),
|
||||
'必须定义模块级稳定空数组',
|
||||
)
|
||||
assert.ok(
|
||||
source.includes('consignmentProfilesQuery.data?.data.profiles ?? EMPTY_CONSIGNMENT_PROFILES'),
|
||||
'接口未返回时不能每次渲染新建 []',
|
||||
)
|
||||
assert.ok(
|
||||
!source.includes('consignmentProfilesQuery.data?.data.profiles || []'),
|
||||
'禁止使用每次渲染都新建的空数组回退',
|
||||
)
|
||||
})
|
||||
|
||||
test('打手寄卖页:展开节点同步必须先比较内容,相同就不 setState', () => {
|
||||
const source = readFileSync(
|
||||
fileURLToPath(new URL('../src/pages/worker/WorkerConsignmentPage.tsx', import.meta.url)),
|
||||
'utf8',
|
||||
)
|
||||
|
||||
assert.ok(source.includes('function isSameKeyList('), '必须有 key 列表内容比较')
|
||||
assert.ok(
|
||||
source.includes('isSameKeyList(prev, profileGroupKeys) ? prev : profileGroupKeys'),
|
||||
'内容相同必须返回原引用,避免无限更新',
|
||||
)
|
||||
assert.ok(
|
||||
!/setProfileExpandedKeys\(profileGroupKeys\)\s*\r?\n\s*\}, \[profileGroupKeys\]/.test(source),
|
||||
'不能无条件写入新数组',
|
||||
)
|
||||
})
|
||||
Reference in New Issue
Block a user