- Updated `SupplierAnalysisResult` to include a `product` field and modified related tests. - Refactored `addRowsSheet` to accommodate changes in the product structure. - Enhanced UPC file analysis to utilize a new `toSupplierInputRecord` function for cleaner record creation. - Introduced new types for supplier input records and product observations. - Updated frontend components to handle new product details and analysis history. - Improved database writing functions to streamline run completion and error handling. - Added new API endpoints for product details and adjusted routing in the frontend.
56 lines
1.7 KiB
TypeScript
56 lines
1.7 KiB
TypeScript
import { expect, test } from "bun:test";
|
|
import { parseCatalogUpcLookupResponse } from "./sp-api.ts";
|
|
|
|
test("parseCatalogUpcLookupResponse resolves one ASIN", () => {
|
|
const detail = parseCatalogUpcLookupResponse("012345678901", {
|
|
items: [{ asin: "b000found1" }],
|
|
});
|
|
|
|
expect(detail.status).toBe("found");
|
|
expect(detail.asin).toBe("B000FOUND1");
|
|
expect(detail.candidateAsins).toEqual(["B000FOUND1"]);
|
|
});
|
|
|
|
test("parseCatalogUpcLookupResponse marks no match", () => {
|
|
const detail = parseCatalogUpcLookupResponse("012345678901", {
|
|
payload: { items: [] },
|
|
});
|
|
|
|
expect(detail.status).toBe("not_found");
|
|
expect(detail.asin).toBeNull();
|
|
});
|
|
|
|
test("parseCatalogUpcLookupResponse ignores invalid ASIN identifiers", () => {
|
|
const detail = parseCatalogUpcLookupResponse("012345678901", {
|
|
items: [{ asin: "012345678901" }],
|
|
});
|
|
|
|
expect(detail.status).toBe("not_found");
|
|
expect(detail.asin).toBeNull();
|
|
});
|
|
|
|
test("parseCatalogUpcLookupResponse marks multiple ASINs", () => {
|
|
const detail = parseCatalogUpcLookupResponse("012345678901", {
|
|
payload: {
|
|
items: [{ asin: "B000000001" }, { asin: "B000000002" }],
|
|
},
|
|
});
|
|
|
|
expect(detail.status).toBe("multiple_asins");
|
|
expect(detail.candidateAsins).toEqual(["B000000001", "B000000002"]);
|
|
});
|
|
|
|
test("parseCatalogUpcLookupResponse marks invalid UPCs", () => {
|
|
const detail = parseCatalogUpcLookupResponse("123", { items: [] });
|
|
|
|
expect(detail.status).toBe("invalid_upc");
|
|
});
|
|
|
|
test("parseCatalogUpcLookupResponse marks malformed response as failed", () => {
|
|
const detail = parseCatalogUpcLookupResponse("012345678901", {
|
|
unexpected: true,
|
|
});
|
|
|
|
expect(detail.status).toBe("request_failed");
|
|
});
|