Files
2026-08-17 22:23:10 +02:00

25 lines
1.8 KiB
JSON

{
"feature_id": "F-018",
"agent": "qa",
"verdict": "APPROVED",
"summary": "QA approved. All F-018 acceptance criteria are covered by executable integration tests and green checks. Cart read recalculates price after price changes, flags out-of-stock items, and ignores client-supplied price fields.",
"evidence": [
"cart.itest.ts covers price change after add and recalculated totals",
"cart.itest.ts covers out-of-stock item availability flag",
"cart.itest.ts covers ignored client price fields and validates cart_items columns contain no price/tax/stock fields",
"cd project && npm run lint passed",
"cd project && npm run typecheck passed",
"cd project && npm run build passed",
"cd project && npm test passed: 23 passed, 10 skipped without TEST_DATABASE_URL",
"cd project && TEST_DATABASE_URL='postgres://mdv:mdv_dev_only@localhost:5432/mdv_test' npm run test:integration -- cart.itest migrations.itest passed: 10 files, 42 tests",
"./scripts/verify.sh passed"
],
"acceptance": [
{ "criterion": "Given product price changed after add to cart When cart read Then new price shown", "status": "PASS", "evidence": "Integration test updates server price after add; GET /cart returns recalculated totals" },
{ "criterion": "Given variant out of stock When cart read Then item flagged unavailable", "status": "PASS", "evidence": "Integration test sets inventory stock to zero and cart item available=false" },
{ "criterion": "Cart payload from client containing price fields is ignored", "status": "PASS", "evidence": "Integration test sends bogus netUnitAmountCents/totalCents and response uses server price; DB columns have no price fields" },
{ "criterion": "verify.sh green", "status": "PASS", "evidence": "./scripts/verify.sh PASS" }
],
"timestamp": "2026-08-15T17:32:06Z"
}