fix(client): lint conformance for the preference services

Replace optional chains on always-present globals with the repo's
typeof guards (store.ts precedent), drop the non-null assertion by
failing loud on an impossible registry miss, and fix two arrow-parens
slips; cover the no-localStorage boot path in both service suites.
This commit is contained in:
imccyu
2026-07-26 01:30:46 +08:00
parent 8cc46e6025
commit 2ee4cda066
6 changed files with 42 additions and 10 deletions

View File

@@ -88,6 +88,18 @@ describe('ThemeService', () => {
expect(events.map(e => e.revision)).toEqual([1, 2, 3, 4])
})
it('runs without localStorage (node boots): defaults on read, no-op on write', () => {
vi.stubGlobal('localStorage', undefined)
try {
const { theme } = make()
expect(theme.getTheme().preference).toBe('system')
theme.setTheme('dark')
expect(theme.getTheme().preference).toBe('dark')
} finally {
vi.unstubAllGlobals()
}
})
describe('prefers-color-scheme resolution (stubbed matchMedia)', () => {
type Listener = () => void
const stubMedia = (initialMatches: boolean) => {