Skip to content

Commit 90dc1da

Browse files
committed
test: stabilize localStorage in useAppLogic tests
1 parent ee363f2 commit 90dc1da

1 file changed

Lines changed: 31 additions & 2 deletions

File tree

structure-insight/hooks/useAppLogic.test.tsx

Lines changed: 31 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -95,11 +95,40 @@ vi.mock('./useSearch', () => ({
9595
}),
9696
}));
9797

98+
function createLocalStorageMock(): Storage {
99+
const store = new Map<string, string>();
100+
101+
return {
102+
get length() {
103+
return store.size;
104+
},
105+
clear: vi.fn(() => {
106+
store.clear();
107+
}),
108+
getItem: vi.fn((key: string) => {
109+
return store.has(key) ? store.get(key)! : null;
110+
}),
111+
key: vi.fn((index: number) => {
112+
return Array.from(store.keys())[index] ?? null;
113+
}),
114+
removeItem: vi.fn((key: string) => {
115+
store.delete(key);
116+
}),
117+
setItem: vi.fn((key: string, value: string) => {
118+
store.set(key, String(value));
119+
}),
120+
} as Storage;
121+
}
122+
98123
describe('useAppLogic', () => {
99124
beforeEach(() => {
100-
window.localStorage.clear();
101-
generateRepomixPlainOutputMock.mockClear();
102125
vi.restoreAllMocks();
126+
generateRepomixPlainOutputMock.mockClear();
127+
128+
Object.defineProperty(window, 'localStorage', {
129+
configurable: true,
130+
value: createLocalStorageMock(),
131+
});
103132

104133
Object.defineProperty(navigator, 'clipboard', {
105134
configurable: true,

0 commit comments

Comments
 (0)