import { describe, expect, it } from 'vitest' import type { SurfaceSnapshot } from '../src/contracts' import { mergeSurfacesByRevision, surfaceKey } from '../src/surfaceKey' function snap(id: string, revision: number): SurfaceSnapshot { return { identity: { surfaceId: id, owner: 'o', pluginId: 'p', }, compat: { schemaVersion: 1, catalogVersion: '1' }, revision, activationEpoch: 0, spec: { title: id, nodes: [] }, } } describe('surfaceKey', () => { it('reads nested identity and skips missing', () => { expect(surfaceKey(snap('s1', 1))).toBe('s1') expect(surfaceKey(undefined)).toBeNull() expect(surfaceKey({} as SurfaceSnapshot)).toBeNull() expect(surfaceKey({ identity: {} } as SurfaceSnapshot)).toBeNull() }) }) describe('mergeSurfacesByRevision', () => { it('keeps higher revision and drops dirty entries', () => { const dirty = { revision: 99 } as SurfaceSnapshot const merged = mergeSurfacesByRevision( [snap('a', 1), dirty], [snap('a', 3), snap('b', 1)], ) expect(merged.map(s => [surfaceKey(s), s.revision])).toEqual([ ['a', 3], ['b', 1], ]) }) })