import { describe, it, expect } from "vitest"; import { uniqueBy } from "./array"; describe("uniqueBy", () => { it("should remove duplicates based on single key", () => { const input = [ { id: 1, name: "John" }, { id: 1, name: "Jane" }, { id: 2, name: "Doe" }, ]; const result = uniqueBy(input, ["id"]); expect(result).toHaveLength(2); expect(result).toEqual([ { id: 1, name: "John" }, { id: 2, name: "Doe" }, ]); }); it("should remove duplicates based on multiple keys", () => { const input = [ { id: 1, type: "A", value: "first" }, { id: 1, type: "A", value: "second" }, { id: 1, type: "B", value: "third" }, { id: 2, type: "A", value: "fourth" }, ]; const result = uniqueBy(input, ["id", "type"]); expect(result).toHaveLength(3); expect(result).toEqual([ { id: 1, type: "A", value: "first" }, { id: 1, type: "B", value: "third" }, { id: 2, type: "A", value: "fourth" }, ]); }); it("should handle empty array", () => { const input: Array<{ id: number }> = []; const result = uniqueBy(input, ["id"]); expect(result).toEqual([]); }); it("should handle array with single item", () => { const input = [{ id: 1, name: "John" }]; const result = uniqueBy(input, ["id"]); expect(result).toEqual(input); }); });