import { describe, expect, it } from "vitest"; import { autoConvertible, BARCODE_PATTERN, describePackage, packageInTypeUnit } from "./products"; const p = ( packageQuantity: number, packageUnit: string, typeUnit: string, typeQuantity: number | null = null, ) => ({ packageQuantity, packageUnit, typeUnit, typeQuantity, }); describe("paketin ürün tipi birimindeki karşılığı", () => { it("aynı birim ve aynı boyut kendiliğinden", () => { expect(packageInTypeUnit(p(5_000, "kg", "kg"))).toBe(5_000); expect(packageInTypeUnit(p(500_000, "g", "kg"))).toBe(500); expect(packageInTypeUnit(p(1_500, "lt", "ml"))).toBe(1_500_000); expect(packageInTypeUnit(p(40_000, "tablet", "tablet"))).toBe(40_000); expect(autoConvertible("g", "kg")).toBe(true); expect(autoConvertible("kg", "lt")).toBe(false); expect(autoConvertible("paket", "adet")).toBe(false); }); it("farklı boyut veya özel birimde elle dönüşüm, yoksa null", () => { expect(packageInTypeUnit(p(5_000, "kg", "yıkama", 50_000))).toBe(50_000); expect(packageInTypeUnit(p(1_000, "paket", "tablet", 40_000))).toBe(40_000); expect(packageInTypeUnit(p(5_000, "kg", "yıkama"))).toBeNull(); // Kendiliğinden çevrilebiliyorsa elle girilen yok sayılır. expect(packageInTypeUnit(p(500_000, "g", "kg", 999))).toBe(500); }); it("paket açıklaması ve barkod", () => { expect(describePackage(p(5_000, "kg", "yıkama", 50_000))).toBe("5 kg · 50 yıkama"); expect(describePackage(p(500_000, "g", "kg"))).toBe("500 g · 0,5 kg"); expect(describePackage(p(2_000, "kg", "kg"))).toBe("2 kg"); expect(BARCODE_PATTERN.test("8690000000001")).toBe(true); expect(BARCODE_PATTERN.test("123")).toBe(false); }); });