fix: final refactoring pass
This commit is contained in:
50
tests/renderer/utils/tabPersistence.test.ts
Normal file
50
tests/renderer/utils/tabPersistence.test.ts
Normal file
@@ -0,0 +1,50 @@
|
||||
import { describe, it, expect, beforeEach, vi } from 'vitest';
|
||||
import type { TabState } from '../../../src/renderer/store';
|
||||
import { loadTabsForProject, saveTabsForProject } from '../../../src/renderer/utils/tabPersistence';
|
||||
|
||||
const projectId = 'project-1';
|
||||
|
||||
const sampleTabState: TabState = {
|
||||
tabs: [
|
||||
{
|
||||
id: 'post-1',
|
||||
type: 'post',
|
||||
title: 'Hello World',
|
||||
dirty: false,
|
||||
},
|
||||
],
|
||||
activeTabId: 'post-1',
|
||||
};
|
||||
|
||||
describe('tabPersistence', () => {
|
||||
beforeEach(() => {
|
||||
localStorage.clear();
|
||||
vi.restoreAllMocks();
|
||||
});
|
||||
|
||||
it('saves and loads tab state for a project', () => {
|
||||
saveTabsForProject(projectId, sampleTabState);
|
||||
|
||||
const loaded = loadTabsForProject(projectId);
|
||||
|
||||
expect(loaded).toEqual(sampleTabState);
|
||||
});
|
||||
|
||||
it('returns null when no tab state is stored', () => {
|
||||
expect(loadTabsForProject(projectId)).toBeNull();
|
||||
});
|
||||
|
||||
it('returns null when stored tab state is invalid JSON', () => {
|
||||
localStorage.setItem('bds-tabs-project-1', '{invalid-json');
|
||||
|
||||
expect(loadTabsForProject(projectId)).toBeNull();
|
||||
});
|
||||
|
||||
it('does not throw when localStorage.setItem fails', () => {
|
||||
vi.spyOn(Storage.prototype, 'setItem').mockImplementation(() => {
|
||||
throw new Error('quota exceeded');
|
||||
});
|
||||
|
||||
expect(() => saveTabsForProject(projectId, sampleTabState)).not.toThrow();
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user