Skip to content
File

Blob: tests/client/components/canvas/tiebreak.test.ts

typescript29 lines
1import { describe, expect, it } from "vitest";
2import { localWinsVersionTiebreak } from "@/client/components/canvas/tiebreak";
3 
4describe("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});