Das Speichern schrieb den Formularwert immer fest in den Lagerbestand. Wurde zwischen Oeffnen und Speichern ein Glas verkauft, kam es dadurch wieder in den Bestand, ohne dass es je zurueckkam. - Das Formular schickt den Bestand beim Oeffnen mit (quantityLoaded) - Feld unveraendert: Bestand wird nicht angefasst - Feld geaendert: Schreiben nur, wenn der Bestand noch dem geladenen Stand entspricht (Bedingung atomar im UPDATE); sonst wird nichts gespeichert und der aktuelle Wert angezeigt - Fehlt quantityLoaded (alter Tab), muss neu geladen werden Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
46 lines
1.9 KiB
TypeScript
46 lines
1.9 KiB
TypeScript
import { describe, test, expect } from "vitest";
|
|
import { needsRestockOnCancel, planInventoryEdit } from "./inventory";
|
|
|
|
describe("planInventoryEdit", () => {
|
|
test("laesst den Bestand unberuehrt, wenn das Feld nicht geaendert wurde", () => {
|
|
// Zwischen Oeffnen und Speichern verkaufte Glaeser duerfen nicht
|
|
// mit dem alten Formularwert ueberschrieben werden.
|
|
expect(planInventoryEdit({ loaded: "105", submitted: 105 })).toEqual({ kind: "keep" });
|
|
});
|
|
|
|
test("setzt den Bestand nur unter der Bedingung, dass er noch dem geladenen Wert entspricht", () => {
|
|
expect(planInventoryEdit({ loaded: "105", submitted: 120 })).toEqual({
|
|
kind: "set",
|
|
expected: 105,
|
|
quantity: 120,
|
|
});
|
|
});
|
|
|
|
test("verlangt ein Neuladen, wenn der geladene Wert fehlt", () => {
|
|
// Formular aus einem Tab, der vor dem Deployment geoeffnet wurde.
|
|
expect(planInventoryEdit({ loaded: "", submitted: 105 })).toEqual({ kind: "reload" });
|
|
});
|
|
|
|
test("verlangt ein Neuladen bei einem manipulierten geladenen Wert", () => {
|
|
expect(planInventoryEdit({ loaded: "-1", submitted: 105 })).toEqual({ kind: "reload" });
|
|
expect(planInventoryEdit({ loaded: "1.5", submitted: 105 })).toEqual({ kind: "reload" });
|
|
expect(planInventoryEdit({ loaded: "abc", submitted: 105 })).toEqual({ kind: "reload" });
|
|
});
|
|
});
|
|
|
|
describe("needsRestockOnCancel", () => {
|
|
test("bucht zurueck, wenn es keine Retoure gibt", () => {
|
|
expect(needsRestockOnCancel(null)).toBe(true);
|
|
});
|
|
|
|
test("bucht zurueck, solange die Retoure noch nicht erstattet ist", () => {
|
|
expect(needsRestockOnCancel("ANGEFRAGT")).toBe(true);
|
|
expect(needsRestockOnCancel("ANGENOMMEN")).toBe(true);
|
|
expect(needsRestockOnCancel("ABGELEHNT")).toBe(true);
|
|
});
|
|
|
|
test("bucht nicht noch einmal zurueck, wenn die Retoure die Ware schon zurueckgebucht hat", () => {
|
|
expect(needsRestockOnCancel("ERSTATTET")).toBe(false);
|
|
});
|
|
});
|