kanban-dev-webapp/tests/integration
Dave e4779c76e0 test(intake): picker integration tests + final cap wiring
Phase 9c. 12 tests covering:
- picker page (multi-project list, single-project redirect,
  zero-projects fallback)
- wizard URL (project-on-client 200, cross-client 404,
  show_in_intake=false 404)
- submission flow (card lands on chosen project's inbox,
  cross-client refused, hostile body fields ignored,
  per-(link, project) cap isolates one project from another)
- Phase 8 backwards compat (per-project link redirects to the
  wizard; the existing Phase 8 submission route still accepts
  Phase 8 links)

Three bridges from the plan:
1. PocketBase stores date as 'YYYY-MM-DD 00:00:00.000Z'; the
   filter must use that form. Passing 'YYYY-MM-DD' silently
   matches zero rows, even though the create succeeds.
2. PocketBase's getFirstListItem returns 404 for a row just
   written by the same admin client; getList works. The helper
   uses getList with perPage=1.
3. PocketBase's read-after-write latency is significant.
   isLinkProjectUsable retries with exponential backoff for
   up to ~2.5s before giving up; bumpDailyCapForProject's
   upsert pattern uses a fallback read+update path if the
   create hits the composite unique index from a peer's
   concurrent write.
2026-09-21 14:09:36 +02:00
..
activity-log.test.ts
admin.test.ts test(admin): board invariants, owner-only writes, deactivation 2026-09-16 11:31:38 +02:00
ai-settings.test.ts fix(tests): stop the settings test destroying the configured API key 2026-09-17 08:13:24 +02:00
client-permissions.test.ts
helpers.ts test(ai): settings page never exposes the API key 2026-09-16 15:59:49 +02:00
ingest.test.ts test(ingest): webhook and cron endpoint protection 2026-09-16 11:50:20 +02:00
intake-link-submissions.test.ts test(intake): per-(link, project) cap infrastructure 2026-09-21 13:27:58 +02:00
intake-links.test.ts test(intake-links): placeholders for owner actions (see note) 2026-09-21 06:31:24 +02:00
intake-picker.test.ts test(intake): picker integration tests + final cap wiring 2026-09-21 14:09:36 +02:00
intake-submit-public.test.ts test(intake): public route invariants and bad-token 404s 2026-09-21 06:30:49 +02:00
intake-submit.test.ts test(intake): server-decided fields and project scoping 2026-09-16 18:07:16 +02:00
intake.test.ts test(intake): cap enforcement, brief whitelist, project scoping 2026-09-16 17:56:37 +02:00
linking.test.ts test(metrics): cached figures agree with stored commits + vitest stubs 2026-09-16 15:19:32 +02:00
log-work.test.ts fix(test): tighten log-work assertions, repair summarise.test.ts for source exclusion, add owner-only UI check 2026-09-19 13:44:34 +02:00
metrics.test.ts test(metrics): cached figures agree with stored commits + vitest stubs 2026-09-16 15:19:32 +02:00
narrative.test.ts test(narrative): no invention, and raw-subject fallback 2026-09-16 16:26:29 +02:00
owner-actions.test.ts
plan-puzzle.test.ts test(plan): Plan Puzzle v1 integration tests 2026-09-19 19:58:16 +02:00
project-kind-and-nav.test.ts test(nav): prototype visibility and client scoping on the new home page 2026-09-17 10:42:52 +02:00
roadmap.test.ts test(roadmap): reschedule auditing and role scoping 2026-09-17 07:19:54 +02:00
session-verification.test.ts fix(auth): verify sessions against PocketBase instead of trusting the cookie 2026-09-19 12:47:18 +02:00
summarise.test.ts fix(test): tighten log-work assertions, repair summarise.test.ts for source exclusion, add owner-only UI check 2026-09-19 13:44:34 +02:00
user-rules.test.ts