import { describe,it,expect } from 'vitest'; import { syncBoardRange, wireBoardSegments, wireBoardTabs } from '../src/board-controls'; describe('范围控件',()=>{ it('视图切换保留原生 radio 且重复接线只创建一个滑块',()=>{ document.body.innerHTML='
'; wireBoardSegments(document);wireBoardSegments(document); expect(document.querySelectorAll('.board-segment-thumb')).toHaveLength(1); const inputs=[...document.querySelectorAll('input')]; inputs[1]!.click(); expect(inputs[0]!.checked).toBe(false);expect(inputs[1]!.checked).toBe(true); expect(document.querySelector('.board-segment-thumb')?.getAttribute('aria-hidden')).toBe('true'); }); it('口味页的证据切换也是分段控件,拿到同一枚滑块',()=>{ document.body.innerHTML='
'; wireBoardSegments(document);wireBoardSegments(document); expect(document.querySelectorAll('.insightswitch .board-segment-thumb')).toHaveLength(1); expect(document.querySelector('.insightswitch')?.getAttribute('data-board-segments')).toBe('true'); }); it('页内下划线导航接上会滑的指示条,复核和配置分类用 Pills',()=>{ document.body.innerHTML='
'; const config=document.createElement('div');config.className='ui-board-local-nav';config.dataset.sectionNav=''; document.body.append(config); wireBoardTabs(document);wireBoardTabs(document); expect([...document.querySelectorAll('[data-board-tabs]')].map(group=>group.getAttribute('aria-label'))).toEqual(['配置分区']); }); it('范围输入把当前值换算成轨道百分比写进样式变量',()=>{ document.body.innerHTML=''; const input=document.querySelector('input')!;syncBoardRange(input); expect(input.style.getPropertyValue('--board-range-value')).toBe('25%'); input.value='180';syncBoardRange(input); expect(input.style.getPropertyValue('--board-range-value')).toBe('100%'); }); });