f0b570284e
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
43 lines
1.7 KiB
TypeScript
43 lines
1.7 KiB
TypeScript
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);
|
||
});
|
||
});
|