M0-M11 狩夜人笔记初始实现:11里程碑+86测试
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
/** @vitest-environment jsdom */
|
||||
import { describe, it, expect, beforeEach } from 'vitest';
|
||||
import { useTabs } from '../../apps/desktop/src/renderer/features/tabs/tab-store';
|
||||
|
||||
beforeEach(() => { localStorage.clear(); useTabs.setState({ tabs: [], activeId: null }); });
|
||||
|
||||
describe('M8 多标签与会话恢复 (FR-T)', () => {
|
||||
it('openTab 新建标签,重复路径激活已有', () => {
|
||||
useTabs.getState().openTab('a.md');
|
||||
useTabs.getState().openTab('b.md');
|
||||
expect(useTabs.getState().tabs.length).toBe(2);
|
||||
const aId = useTabs.getState().tabs[0].id;
|
||||
useTabs.getState().openTab('a.md');
|
||||
expect(useTabs.getState().tabs.length).toBe(2); // 不重复
|
||||
expect(useTabs.getState().activeId).toBe(aId);
|
||||
});
|
||||
|
||||
it('togglePin 固定标签排前', () => {
|
||||
useTabs.getState().openTab('a.md');
|
||||
useTabs.getState().openTab('b.md');
|
||||
useTabs.getState().togglePin(useTabs.getState().tabs[1].id); // 固定 b
|
||||
expect(useTabs.getState().tabs[0].path).toBe('b.md');
|
||||
expect(useTabs.getState().tabs[0].pinned).toBe(true);
|
||||
});
|
||||
|
||||
it('closeTab 切到相邻', () => {
|
||||
useTabs.getState().openTab('a.md');
|
||||
useTabs.getState().openTab('b.md');
|
||||
useTabs.getState().openTab('c.md');
|
||||
const bId = useTabs.getState().tabs[1].id;
|
||||
useTabs.getState().setActive(bId);
|
||||
useTabs.getState().closeTab(bId);
|
||||
expect(useTabs.getState().tabs.length).toBe(2);
|
||||
expect(useTabs.getState().activeId).not.toBe(bId);
|
||||
});
|
||||
|
||||
it('会话恢复:persist 后 restore 恢复标签列表与激活页', () => {
|
||||
useTabs.getState().openTab('x.md');
|
||||
useTabs.getState().openTab('y.md');
|
||||
useTabs.getState().persist();
|
||||
// 模拟重启:清空后 restore
|
||||
useTabs.setState({ tabs: [], activeId: null });
|
||||
useTabs.getState().restore();
|
||||
expect(useTabs.getState().tabs.length).toBe(2);
|
||||
expect(useTabs.getState().tabs.some(t => t.path === 'x.md')).toBe(true);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user