Files
codexpi/frontend/tests/appearance.test.ts
CodexPi 995b17a6e2
Some checks are pending
Qualité / tests (push) Waiting to run
feat: publish CodexPi contest snapshot
2026-11-14 20:23:59 +01:00

26 lines
1.1 KiB
TypeScript

import assert from 'node:assert/strict'
import test from 'node:test'
import {interfaceLanding,rememberAppearance,storedInterfaceType,storedTheme} from '../src/appearance.ts'
function memory(initial:Record<string,string>={}){
const values=new Map(Object.entries(initial))
return{getItem:(key:string)=>values.get(key)??null,setItem:(key:string,value:string)=>values.set(key,value),values}
}
test('each interface type owns a distinct landing structure',()=>{
assert.deepEqual(interfaceLanding('dashboard'),{view:'activity',tab:'chat'})
assert.deepEqual(interfaceLanding('atelier'),{view:'workspace',tab:'chat'})
assert.deepEqual(interfaceLanding('review'),{view:'workspace',tab:'changes'})
})
test('interface and theme persist independently with safe defaults',()=>{
const storage=memory()
rememberAppearance('review','light',storage)
assert.equal(storedInterfaceType(storage),'review')
assert.equal(storedTheme(storage),'light')
const invalid=memory({'codexpi-interface-type':'palette','codexpi-theme':'neon'})
assert.equal(storedInterfaceType(invalid),'dashboard')
assert.equal(storedTheme(invalid),'system')
})