♻️ refactor(vscode): 卡片里的子块只留挂在子行上、点了才展开的一种,测试假数据换掉旧 React 卡片的名字
This commit is contained in:
1 parent
f6bc217e91
commit
5e994cd90e
16 files changed
+121
-130
No files matched your search
@@ -194,30 +194,33 @@ describe('库规则:认领', () => {
|
||||
expect(reports).toEqual(['库规则 omit 给第 3 行的 class 块的替身不合约定,这块照常显示:要略去的块还有子块'])
|
||||
})
|
||||
|
||||
it('放进卡片属性表里的子块:照常转成块,记下画在哪一行(哪个子行);不是留下的子块、没有那一行 / 子行、放了两处的不合约定', async () => {
|
||||
const rows = [{ label: '字段', value: [], items: [{ cells: [[{ text: 'name', role: 'variable' as const }]] }], columns: ['名称'] }, { label: '方法', value: [] }]
|
||||
it('挂在卡片子行上的子块:照常转成块,记下挂在哪一行的哪个子行;不是留下的子块、没有那一行 / 子行、放了两处的不合约定', async () => {
|
||||
const rows = [
|
||||
{ label: '字段', value: [], items: [{ cells: [[{ text: 'name', role: 'variable' as const }]] }], columns: ['名称'] },
|
||||
{ label: '方法', value: [], items: [{ cells: [[{ text: 'greet', role: 'function' as const }]] }], columns: ['名称'] },
|
||||
]
|
||||
const slotting = (slots: (block: CodeBlock) => RuleSlot[], id = 'slot'): LibraryRule => ({
|
||||
...cardRule(id),
|
||||
claim: block => block.kind === 'class'
|
||||
? { kind: `${id}.card`, badge: { label: '卡片', color: { dark: '#fff', light: '#000' }, icon: 'box' }, rows, absorbs: block.children.slice(0, 1), slots: slots(block) }
|
||||
: undefined,
|
||||
})
|
||||
const [, card] = await views(MODEL, [slotting(block => [{ block: block.children[2], row: 0, item: 0 }, { block: block.children[3], row: 1 }])])
|
||||
expect(card.children.map(child => [child.kind, child.slot])).toEqual([['comment', undefined], ['variable', { row: 0, item: 0 }], ['function', { row: 1 }]])
|
||||
const [, card] = await views(MODEL, [slotting(block => [{ block: block.children[2], row: 0, item: 0 }, { block: block.children[3], row: 1, item: 0 }])])
|
||||
expect(card.children.map(child => [child.kind, child.slot])).toEqual([['comment', undefined], ['variable', { row: 0, item: 0 }], ['function', { row: 1, item: 0 }]])
|
||||
|
||||
const reports: string[] = []
|
||||
const bad = await views(MODEL, [
|
||||
slotting(block => [{ block: block.children[0], row: 1 }], 'absorbed'),
|
||||
slotting(block => [{ block: block.children[3], row: 5 }], 'row'),
|
||||
slotting(block => [{ block: block.children[3], row: 1, item: 0 }], 'item'),
|
||||
slotting(block => [{ block: block.children[3], row: 1 }, { block: block.children[3], row: 0 }], 'twice'),
|
||||
slotting(block => [{ block: block.children[0], row: 1, item: 0 }], 'absorbed'),
|
||||
slotting(block => [{ block: block.children[3], row: 5, item: 0 }], 'row'),
|
||||
slotting(block => [{ block: block.children[3], row: 1, item: 1 }], 'item'),
|
||||
slotting(block => [{ block: block.children[3], row: 1, item: 0 }, { block: block.children[3], row: 0, item: 0 }], 'twice'),
|
||||
], reports)
|
||||
expect(bad[1].kind).toBe('class')
|
||||
expect(reports.map(report => report.replace(/^.*照常显示:/, ''))).toEqual([
|
||||
'放进卡片里的块不是留下的子块',
|
||||
'放进卡片第 5 行下面的块,卡片没有这一行',
|
||||
'放进卡片第 1 行第 0 个子行的块,这一行没有这个子行',
|
||||
'同一块放进了卡片里的几处',
|
||||
'挂在子行上的块不是留下的子块',
|
||||
'挂在卡片第 5 行的块,卡片没有这一行',
|
||||
'挂在卡片第 1 行第 1 个子行的块,这一行没有这个子行',
|
||||
'同一块挂在了卡片里的几处',
|
||||
])
|
||||
})
|
||||
|
||||
|
||||
Reference in new issue
Block a user