59 lines
1.3 KiB
TypeScript
59 lines
1.3 KiB
TypeScript
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([]);
|
|
});
|
|
});
|