优化房间点赞同步为增量更新策略
This commit is contained in:
@@ -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([]);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user