优化房间点赞同步为增量更新策略

This commit is contained in:
2026-03-03 13:07:22 +08:00
parent 325b7b5742
commit 4a5ed3b25a
3 changed files with 134 additions and 17 deletions
+58
View File
@@ -0,0 +1,58 @@
import { describe, it, expect } from "vitest";
import { diffRoomLikes } from "@/lib/roomRepository";
describe("diffRoomLikes", () => {
it("returns incremental create/delete changes", () => {
const current = {
r1: ["u1", "u2"],
r2: ["u3"],
};
const updated = {
r1: ["u1", "u3"],
r3: ["u2"],
};
const result = diffRoomLikes(current, updated);
expect(result.toDelete).toEqual(
expect.arrayContaining([
{ userId: "u2", restaurantId: "r1" },
{ userId: "u3", restaurantId: "r2" },
]),
);
expect(result.toCreate).toEqual(
expect.arrayContaining([
{ userId: "u3", restaurantId: "r1" },
{ userId: "u2", restaurantId: "r3" },
]),
);
});
it("deduplicates repeated user likes", () => {
const current = {
r1: ["u1", "u1", "u1"],
};
const updated = {
r1: ["u1"],
};
const result = diffRoomLikes(current, updated);
expect(result.toCreate).toEqual([]);
expect(result.toDelete).toEqual([]);
});
it("returns empty arrays when likes are unchanged", () => {
const current = {
r1: ["u1", "u2"],
};
const updated = {
r1: ["u1", "u2"],
};
const result = diffRoomLikes(current, updated);
expect(result.toCreate).toEqual([]);
expect(result.toDelete).toEqual([]);
});
});