import { describe, expect, it } from "vitest"; import { peerWebSocketUrl, toDiscoveredPeer } from "./sync-bridge"; describe("sync-bridge helpers", () => { const basePeer = { deviceId: "p1", deviceName: "iPhone", host: "192.168.1.10", port: 44100, x25519PublicKey: "abc", pairing: false, }; it("toDiscoveredPeer carries wsPort and alreadyPaired", () => { const peer = toDiscoveredPeer({ ...basePeer, wsPort: 44101 }, true); expect(peer).toEqual({ deviceId: "p1", deviceName: "iPhone", host: "192.168.1.10", port: 44100, wsPort: 44101, x25519PublicKey: "abc", alreadyPaired: true, }); }); it("toDiscoveredPeer omits wsPort when not advertised", () => { const peer = toDiscoveredPeer(basePeer, false); expect(peer.wsPort).toBeUndefined(); expect(peer.alreadyPaired).toBe(false); }); it("peerWebSocketUrl builds ws:// URL using wsPort", () => { expect(peerWebSocketUrl({ ...basePeer, wsPort: 44101 })).toBe( "ws://192.168.1.10:44101/" ); }); it("peerWebSocketUrl throws when wsPort is missing", () => { expect(() => peerWebSocketUrl(basePeer)).toThrow( "peer did not advertise a WebSocket port" ); }); });