import { describe, it, expect, beforeEach } from 'vitest' import { useSession } from './session' describe('session store ยท teamId', () => { beforeEach(() => { sessionStorage.clear() }) it('has a non-empty stable team id', () => { const id = useSession.getState().teamId expect(id).toBeTruthy() expect(typeof id).toBe('string') }) it('defaults device.nodeUrl to null and lets a claim set it', () => { expect(useSession.getState().device.nodeUrl).toBeNull() useSession.getState().setDevice({ connected: true, nodeUrl: 'http://192.168.1.7:8080' }) expect(useSession.getState().device.nodeUrl).toBe('http://192.168.1.7:8080') useSession.getState().reset() expect(useSession.getState().device.nodeUrl).toBeNull() }) it('preserves the team id across reset()', () => { const before = useSession.getState().teamId useSession.getState().setTeam({ name: 'x' }) useSession.getState().reset() expect(useSession.getState().teamId).toBe(before) expect(useSession.getState().team.name).toBe('') }) it('resumeTeam adopts the canonical identity + restores progress (lost-browser re-claim)', () => { // a fresh browser: random id, empty team expect(useSession.getState().team.name).toBe('') useSession.getState().resumeTeam({ id: 'team-07', name: 'team_resonance', kit: 'KIT-07', members: ['ada', 'linus'], phases: { reg: true, setup: true, m1: false, m2: false, add: false }, stats: { calls: 9, nominal: 5, anomalous: 3, critical: 1 }, }) const s = useSession.getState() expect(s.teamId).toBe('team-07') // adopted the board's canonical team, not the fresh id expect(s.team).toEqual({ name: 'team_resonance', agentName: '', kit: 'KIT-07', members: ['ada', 'linus'] }) expect(s.phases.reg).toBe(true) expect(s.phases.setup).toBe(true) expect(s.stats.calls).toBe(9) expect(s.device.connected).toBe(true) // back on the board }) })