Scrum4Me/__tests__/actions
Madhura68 6fee0394c5 actions: materializeIdeaPlanAction + relinkIdeaPlanAction (M12 T-498)
actions/ideas.ts:
- materializeIdeaPlanAction(id):
  - guard: status===PLAN_READY, plan_md present, product linked, demo-403
  - parsePlanMd → 422 with line-info on fail
  - Prisma.\$transaction:
    - SELECT max(code) for PBI/Story/Task within product
    - INSERT PBI with sort_order = lastPbi+1 within priority
    - per story: INSERT (sequential ST-NNN), per task: INSERT (T-N)
    - UPDATE idea SET pbi_id, status=PLANNED
    - INSERT IdeaLog{PLAN_RESULT, metadata}
  - returns 409 on P2002 (concurrent-materialize race)
- relinkIdeaPlanAction(id):
  - guard: status===PLANNED && pbi_id===null (PBI manually deleted via SetNull FK)
  - reverts to PLAN_READY + IdeaLog{NOTE}

Tests: 39 cases total (8 new for materialize + relink): happy creates entities,
status-mismatch-422, parse-fail-422 with details, demo-403, P2002→409,
relink happy + invalid-precondition guards.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-04 19:51:18 +02:00
..
active-product.test.ts feat(M9): active product backlog — persistent active PB, NavBar splits, sprint card styling (#10) 2026-04-27 20:25:13 +02:00
auth.test.ts feat(ST-1135): UA-redirect bij login — phone naar /m/* (T-322/T-323/T-324) 2026-05-04 10:09:09 +02:00
claude-jobs-batch.test.ts Solo batch-enqueue: per-PBI volgorde + blocker-dialog (#65) 2026-05-03 13:55:13 +02:00
claude-jobs.test.ts Solo batch-enqueue: per-PBI volgorde + blocker-dialog (#65) 2026-05-03 13:55:13 +02:00
ideas-crud.test.ts actions: materializeIdeaPlanAction + relinkIdeaPlanAction (M12 T-498) 2026-05-04 19:51:18 +02:00
pairing.test.ts M10: Password-loze inlog via QR-pairing (ST-1001..ST-1008) (#12) 2026-04-28 00:01:04 +02:00
products.test.ts feat(product-dialog): conform aan dialog-pattern + entity-profile 2026-05-04 07:18:39 +02:00
questions.test.ts M11: Claude vraagt, gebruiker antwoordt (ST-1101..ST-1108) (#13) 2026-04-29 11:38:23 +02:00
sprint-dates.test.ts feat(sprint-dialogs): conform aan dialog-pattern + entity-profile 2026-05-04 07:30:46 +02:00
sprints-cascade.test.ts M12 / ST-1109: PBI krijgt een status (Ready / Blocked / Done) (#16) 2026-04-29 17:52:34 +02:00
story-claim.test.ts feat(ST-353): add assignee chip and claim/reassign dropdown to sprint story card 2026-04-26 16:24:34 +02:00
tasks-dialog.test.ts M14: TaskDialog (create/edit) + story auto-promotion (#21) 2026-04-30 16:55:20 +02:00