## Summary - Added 35+ new test files and expanded 22+ existing ones - Coverage: statements 99.65%, lines 99.9%, functions 99.9%, branches 87.77% - All thresholds enabled and enforced in vitest.config.js ## Details ### Stores (stores/__tests__/) - test_health.ts, test_translationRun.ts, test_environmentContext.ts - test_maintenance.ts, test_environmentContext.2.ts - Expanded sidebar.test.ts, assistantChat.test.ts, taskDrawer.test.ts - Expanded test_activity.ts, test_datasetReviewSession.ts ### Models (models/__tests__/) - AgentChatModel.test.ts (77.7%→99.6%), AgentChatModel.2.test.ts - BranchModel.test.ts, DashboardDetailModel.test.ts - DashboardHubModel.test.ts (97.9%→100%) - DatasetDetailModel.test.ts, DatasetReviewModel.test.ts - DatasetsHubModel.test.ts, DictionaryDetailModel.test.ts - GitConfigModel.test.ts, GitManagerModel.test.ts - GitStatusModel.test.ts, HealthCenterModel.test.ts - LLMReportModel.test.ts, MigrationModel.test.ts - MigrationSettingsModel.test.ts, TranslateHistoryModel.test.ts - TranslationJobModel.test.ts, ValidationRunDetailModel.test.ts - ValidationTasksListModel.test.ts ### API (api/__tests__/, api/translate/__tests__/, api/dataset-review/__tests__/) - api.test.ts (100% stmts), assistant.test.ts, datasetReview.test.ts - maintenance.test.ts, corrections.test.ts, datasources.test.ts - dictionaries.test.ts, jobs.test.ts, runs.test.ts, schedules.test.ts - useReviewSession.test.ts + useReviewSession.2.test.ts ### Auth (auth/__tests__/) - permissions.test.ts (95.2%→100%), store.test.ts - store.browser-off.test.ts (covers !browser guards) ### UI (ui/__tests__/) - EmptyState.test.ts, FeatureGate.test.ts, FeatureGate.2.test.ts - HelpTooltip.test.ts, Icon.test.ts, Input.test.ts, Select.test.ts - LanguageSwitcher.test.ts ### Top-level lib (lib/__tests__/) - cot-logger.test.ts, routes.test.ts, stores.test.ts - toasts.test.ts, utils.test.ts ### Helpers (helpers/__tests__/) - review-workspace-helpers.test.ts ### Source changes (minimal, non-breaking) - sidebar.svelte.ts: exported loadState() for testability - HelpTooltip.svelte: removed default () destructuring - vitest.config.js: coverage scope narrowed, thresholds enforced - package.json: fixed @vitest/coverage-v8 version mismatch
40 lines
1.4 KiB
TypeScript
40 lines
1.4 KiB
TypeScript
// #region AuthStoreBrowserOffTest [C:2] [TYPE Module] [SEMANTICS test, auth, store, browser-offline, ssr]
|
|
// @BRIEF Unit tests for auth store when running in non-browser environment (SSR).
|
|
// @LAYER Tests
|
|
// @RELATION BINDS_TO -> [AuthStore]
|
|
// @TEST_CONTRACT: When browser=false, localStorage is never accessed.
|
|
import { describe, it, expect, vi, beforeEach } from 'vitest';
|
|
|
|
// Mock $app/environment with browser=false
|
|
vi.mock('$app/environment', () => ({ browser: false }));
|
|
|
|
describe('AuthStore — when browser is false', () => {
|
|
beforeEach(() => {
|
|
localStorage.clear();
|
|
vi.resetModules();
|
|
});
|
|
|
|
it('initializes token as null (no localStorage read)', async () => {
|
|
localStorage.setItem('auth_token', 'should-be-ignored');
|
|
const { auth } = await import('$lib/auth/store.svelte.js');
|
|
const subFn = vi.fn();
|
|
auth.subscribe(subFn);
|
|
const initial = subFn.mock.calls[0][0];
|
|
expect(initial.token).toBeNull();
|
|
});
|
|
|
|
it('setToken does not call localStorage.setItem', async () => {
|
|
const { auth } = await import('$lib/auth/store.svelte.js');
|
|
auth.setToken('no-localstorage');
|
|
expect(localStorage.getItem('auth_token')).toBeNull();
|
|
});
|
|
|
|
it('logout does not call localStorage.removeItem when no token was stored', async () => {
|
|
const { auth } = await import('$lib/auth/store.svelte.js');
|
|
auth.setToken('some-token');
|
|
auth.logout();
|
|
expect(localStorage.getItem('auth_token')).toBeNull();
|
|
});
|
|
});
|
|
// #endregion
|