mirror of
https://github.com/bitsocialnet/5chan.git
synced 2026-08-03 07:41:04 +02:00
test: expand honest whole-repo coverage
Adds broad coverage across stores, hooks, and runtime utilities while switching `vitest.config.ts` to an explicit whole-repo include list. This turns the coverage report into a real repo-wide baseline instead of an imported-file subset.
This commit is contained in:
@@ -0,0 +1,92 @@
|
||||
import { beforeEach, describe, expect, it, vi } from 'vitest';
|
||||
import { getAllBoardCodes } from '../../constants/board-codes';
|
||||
|
||||
describe('preference stores', () => {
|
||||
beforeEach(() => {
|
||||
vi.resetModules();
|
||||
localStorage.clear();
|
||||
});
|
||||
|
||||
it('useAllFeedFilterStore loads and persists the selected filter', async () => {
|
||||
localStorage.setItem('5chan-all-feed-filter', 'nsfw');
|
||||
|
||||
const store = (await import('../use-all-feed-filter-store')).default;
|
||||
|
||||
expect(store.getState().filter).toBe('nsfw');
|
||||
|
||||
store.getState().setFilter('sfw');
|
||||
|
||||
expect(store.getState().filter).toBe('sfw');
|
||||
expect(localStorage.getItem('5chan-all-feed-filter')).toBe('sfw');
|
||||
});
|
||||
|
||||
it('useBoardsFilterStore restores board preferences and saves updates', async () => {
|
||||
localStorage.setItem('5chan-boards-use-catalog', 'true');
|
||||
localStorage.setItem('5chan-boards-filter', 'worksafe');
|
||||
|
||||
const store = (await import('../use-boards-filter-store')).default;
|
||||
|
||||
expect(store.getState().useCatalogLinks).toBe(true);
|
||||
expect(store.getState().boardFilter).toBe('worksafe');
|
||||
|
||||
store.getState().setUseCatalogLinks(false);
|
||||
store.getState().setBoardFilter('nsfw');
|
||||
|
||||
expect(store.getState().useCatalogLinks).toBe(false);
|
||||
expect(store.getState().boardFilter).toBe('nsfw');
|
||||
expect(localStorage.getItem('5chan-boards-use-catalog')).toBe('false');
|
||||
expect(localStorage.getItem('5chan-boards-filter')).toBe('nsfw');
|
||||
});
|
||||
|
||||
it('useCatalogStyleStore reads existing preferences and updates both settings', async () => {
|
||||
localStorage.setItem('imageSize', 'Large');
|
||||
localStorage.setItem('showOPComment', 'false');
|
||||
|
||||
const store = (await import('../use-catalog-style-store')).default;
|
||||
|
||||
expect(store.getState().imageSize).toBe('Large');
|
||||
expect(store.getState().showOPComment).toBe(false);
|
||||
|
||||
store.getState().setImageSize('Small');
|
||||
store.getState().setShowOPComment(true);
|
||||
|
||||
expect(store.getState().imageSize).toBe('Small');
|
||||
expect(store.getState().showOPComment).toBe(true);
|
||||
expect(localStorage.getItem('imageSize')).toBe('Small');
|
||||
expect(localStorage.getItem('showOPComment')).toBe('true');
|
||||
});
|
||||
|
||||
it('useBoardsBarVisibilityStore loads legacy keys and updates visibility settings', async () => {
|
||||
const boardCodes = getAllBoardCodes();
|
||||
localStorage.setItem('5chan-topbar-directories-visible', JSON.stringify([boardCodes[0]]));
|
||||
localStorage.setItem('5chan-topbar-subscriptions-visible', JSON.stringify(['sub-1']));
|
||||
|
||||
const store = (await import('../use-boards-bar-visibility-store')).default;
|
||||
|
||||
expect(Array.from(store.getState().visibleDirectories)).toEqual([boardCodes[0]]);
|
||||
expect(store.getState().showSubscriptionsInBoardsBar).toBe(true);
|
||||
|
||||
store.getState().toggleDirectory(boardCodes[1]);
|
||||
expect(store.getState().visibleDirectories.has(boardCodes[1])).toBe(true);
|
||||
|
||||
store.getState().setDirectoryVisibility(boardCodes[0], false);
|
||||
expect(store.getState().visibleDirectories.has(boardCodes[0])).toBe(false);
|
||||
|
||||
store.getState().setShowSubscriptionsInBoardsBar(false);
|
||||
expect(store.getState().showSubscriptionsInBoardsBar).toBe(false);
|
||||
expect(localStorage.getItem('5chan-boardsbar-subscriptions-visible')).toBe('false');
|
||||
});
|
||||
|
||||
it('useBoardsBarVisibilityStore reinitializes from current storage keys', async () => {
|
||||
const boardCodes = getAllBoardCodes();
|
||||
const store = (await import('../use-boards-bar-visibility-store')).default;
|
||||
|
||||
localStorage.setItem('5chan-boardsbar-directories-visible', JSON.stringify([boardCodes[2], boardCodes[3]]));
|
||||
localStorage.setItem('5chan-boardsbar-subscriptions-visible', JSON.stringify(true));
|
||||
|
||||
store.getState().initialize();
|
||||
|
||||
expect(Array.from(store.getState().visibleDirectories)).toEqual([boardCodes[2], boardCodes[3]]);
|
||||
expect(store.getState().showSubscriptionsInBoardsBar).toBe(true);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user