File
Blob: tests/client/components/canvas/tiebreak.test.ts
| 1 | import { describe, expect, it } from "vitest"; |
| 2 | import { localWinsVersionTiebreak } from "@/client/components/canvas/tiebreak"; |
| 3 | |
| 4 | describe("localWinsVersionTiebreak", () => { |
| 5 | it("wins when remote is missing (first-insert path)", () => { |
| 6 | expect(localWinsVersionTiebreak({ version: 1, versionNonce: 1 }, null)).toBe(true); |
| 7 | }); |
| 8 | |
| 9 | it("wins when local version is strictly higher", () => { |
| 10 | expect(localWinsVersionTiebreak({ version: 5, versionNonce: 9999 }, { version: 4, versionNonce: 1 })).toBe(true); |
| 11 | }); |
| 12 | |
| 13 | it("loses when remote version is strictly higher", () => { |
| 14 | expect(localWinsVersionTiebreak({ version: 4, versionNonce: 1 }, { version: 5, versionNonce: 9999 })).toBe(false); |
| 15 | }); |
| 16 | |
| 17 | it("wins on version tie when local versionNonce sorts first", () => { |
| 18 | expect(localWinsVersionTiebreak({ version: 7, versionNonce: 10 }, { version: 7, versionNonce: 20 })).toBe(true); |
| 19 | }); |
| 20 | |
| 21 | it("loses on version tie when remote versionNonce sorts first", () => { |
| 22 | expect(localWinsVersionTiebreak({ version: 7, versionNonce: 20 }, { version: 7, versionNonce: 10 })).toBe(false); |
| 23 | }); |
| 24 | |
| 25 | it("loses on full tie (both version and nonce equal) — remote is the tie-break winner", () => { |
| 26 | expect(localWinsVersionTiebreak({ version: 7, versionNonce: 10 }, { version: 7, versionNonce: 10 })).toBe(false); |
| 27 | }); |
| 28 | }); |