import { describe, test, expect } from "vitest"; import { parseIngredientText } from "./use-recipe-ingredients"; import { RecipeIngredient } from "~/lib/api/types/recipe"; describe(parseIngredientText.name, () => { const createRecipeIngredient = (overrides: Partial): RecipeIngredient => ({ quantity: 1, food: { id: "1", name: "Item 1", }, unit: { id: "1", name: "cup", }, ...overrides, }); test("uses ingredient note if disableAmount: true", () => { const ingredient = createRecipeIngredient({ note: "foo" }); expect(parseIngredientText(ingredient, true)).toEqual("foo"); }); test("adds note section if note present", () => { const ingredient = createRecipeIngredient({ note: "custom note" }); expect(parseIngredientText(ingredient, false)).toContain("custom note"); }); test("ingredient text with fraction", () => { const ingredient = createRecipeIngredient({ quantity: 1.5, unit: { fraction: true, id: "1", name: "cup" } }); expect(parseIngredientText(ingredient, false, 1, true)).contain("1 1").and.to.contain("2"); }); test("ingredient text with fraction no formatting", () => { const ingredient = createRecipeIngredient({ quantity: 1.5, unit: { fraction: true, id: "1", name: "cup" } }); const result = parseIngredientText(ingredient, false, 1, false); expect(result).not.contain("<"); expect(result).not.contain(">"); expect(result).contain("1 1/2"); }); test("sanitizes html", () => { const ingredient = createRecipeIngredient({ note: "" }); expect(parseIngredientText(ingredient, false)).not.toContain("