feat(ADM-018): completed feature
This commit is contained in:
48
work/artifacts/F-017/qa.json
Normal file
48
work/artifacts/F-017/qa.json
Normal file
@@ -0,0 +1,48 @@
|
||||
{
|
||||
"feature_id": "F-017",
|
||||
"agent": "qa",
|
||||
"verdict": "APPROVED",
|
||||
"summary": "QA approved. All F-017 acceptance criteria are traced to implementation and executable evidence. The PostgreSQL integration suite passed with TEST_DATABASE_URL, including server-side VAT calculation, ignored client price fields, and append-only price history.",
|
||||
"evidence": [
|
||||
"PricingService.calculate AC covered by project/src/modules/pricing/tests/pricing-service.test.ts and project/src/app/tests/pricing.itest.ts",
|
||||
"Client-supplied price ignored AC covered by pricing.itest.ts payload with bogus netUnitAmountCents/totalCents/vatAmountCents",
|
||||
"Price history AC covered by pricing.itest.ts querying pricing_price_history after create and update",
|
||||
"cd project && TEST_DATABASE_URL='postgres://mdv:mdv_dev_only@localhost:5432/mdv_test' npm run test:integration -- pricing.itest migrations.itest passed: 9 integration files, 39 tests",
|
||||
"cd project && npm run lint passed",
|
||||
"cd project && npm run typecheck passed",
|
||||
"cd project && npm run build passed",
|
||||
"cd project && npm test passed: 21 passed, 9 skipped without TEST_DATABASE_URL",
|
||||
"./scripts/verify.sh passed"
|
||||
],
|
||||
"acceptance": [
|
||||
{
|
||||
"criterion": "Given variant and quantity When PricingService.calculate Then total with VAT returned",
|
||||
"status": "PASS",
|
||||
"evidence": "Pricing unit/integration tests calculate 1000 cents x2 with 21% VAT as totalCents=2420"
|
||||
},
|
||||
{
|
||||
"criterion": "Given client-supplied price in any request Then price ignored and recalculated",
|
||||
"status": "PASS",
|
||||
"evidence": "pricing.itest.ts sends bogus client price fields to /pricing/calculate and response uses persisted server price 500 cents with reduced VAT"
|
||||
},
|
||||
{
|
||||
"criterion": "Price change writes history row, never silent update",
|
||||
"status": "PASS",
|
||||
"evidence": "pricing.itest.ts verifies pricing_price_history has one row for initial create and one row for update with previous/new values"
|
||||
},
|
||||
{
|
||||
"criterion": "verify.sh green",
|
||||
"status": "PASS",
|
||||
"evidence": "./scripts/verify.sh PASS"
|
||||
}
|
||||
],
|
||||
"commands": [
|
||||
"cd project && npm run lint: PASS",
|
||||
"cd project && npm run typecheck: PASS",
|
||||
"cd project && npm run build: PASS",
|
||||
"cd project && npm test: PASS; 21 passed, 9 skipped when TEST_DATABASE_URL absent",
|
||||
"cd project && TEST_DATABASE_URL='postgres://mdv:mdv_dev_only@localhost:5432/mdv_test' npm run test:integration -- pricing.itest migrations.itest: PASS; 9 files, 39 tests",
|
||||
"./scripts/verify.sh: PASS"
|
||||
],
|
||||
"timestamp": "2026-08-15T16:24:50Z"
|
||||
}
|
||||
Reference in New Issue
Block a user