← back to Govarbitrage
src/lib/marketplace-links.test.ts
50 lines
import { describe, expect, it } from "vitest";
import { searchQuery, auctionNetworkLinks, boardLinks, internationalNetworkLinks, internationalTopLinks } from "./marketplace-links";
describe("searchQuery", () => {
it("prefers manufacturer + model and strips lot/qty noise", () => {
expect(searchQuery({ title: "Computer Tables (4 EA)", manufacturer: "Herman Miller", model: "Aeron B" })).toBe(
"Herman Miller Aeron B",
);
expect(searchQuery({ title: "HOSPITAL STRECHERS (1 LOT)" })).toBe("HOSPITAL STRECHERS");
expect(searchQuery({ title: "Lot of 12 Apple MacBook Pro 14" })).toContain("Apple MacBook Pro 14");
});
it("ignores generic manufacturer/model values", () => {
expect(searchQuery({ title: "Mixed Metals Scrap", manufacturer: "Assorted", model: "Various" })).toBe(
"Mixed Metals Scrap",
);
});
});
describe("link builders", () => {
it("produces auction + resale + retail links, encoded", () => {
const links = auctionNetworkLinks({ title: "Toyota Forklift", category: "Industrial" });
const labels = links.map((l) => l.label);
expect(labels).toContain("eBay Sold");
expect(labels).toContain("GovDeals");
expect(labels).toContain("MachineryTrader"); // category specialist
expect(links.every((l) => l.url.includes("Toyota") || l.url.includes("Forklift"))).toBe(true);
});
it("adds DOTmed for medical items and produces board links", () => {
const med = auctionNetworkLinks({ title: "Patient Transfer Chair", category: "Medical" });
expect(med.map((l) => l.label)).toContain("DOTmed");
const boards = boardLinks({ title: "Patient Transfer Chair" });
expect(boards.map((l) => l.label)).toEqual(
expect.arrayContaining(["Reddit", "r/Flipping", "Facebook Marketplace", "Discord (Disboard)"]),
);
});
it("covers all five international regions with encoded queries", () => {
const intl = internationalNetworkLinks({ title: "Toyota Forklift" });
expect(intl.map((r) => r.region)).toEqual(["Europe", "Japan", "Hong Kong", "Australia", "China"]);
const allUrls = intl.flatMap((r) => r.links.map((l) => l.url));
expect(allUrls.some((u) => u.includes("yahoo.co.jp"))).toBe(true);
expect(allUrls.some((u) => u.includes("taobao.com"))).toBe(true);
expect(allUrls.some((u) => u.includes("graysonline.com"))).toBe(true);
expect(allUrls.every((u) => u.includes("Toyota") || u.includes("Forklift"))).toBe(true);
expect(internationalTopLinks({ title: "Toyota Forklift" })).toHaveLength(4);
});
});