kanban-dev-webapp/tests/integration
Dave a2986a11d0 test(intake): per-(link, project) cap infrastructure
Phase 9a Task 6. Three integration tests:
  - schema lands: row inserts with link/project/date/count fields,
    composite unique index is the only constraint (different
    project same link + date is allowed)
  - duplicate (link, project, date) is rejected by the unique index
  - the public route returns a sensible status, never 500, on a
    Phase 9 link (the route will be wired in 9b; 9a only proves
    it does not crash today)

Two bridges from the plan:
  - PocketBase's date field defaults to unique=true; my schema
    fix flipped it via ensureIntakeLinkSubmissionsDateNotUnique.
    The relation and number fields appeared to share the same
    default but getOne()'s response omits the key, so the
    explicit unique=false on those doesn't stick — yet rows with
    the same link and different projects work in practice (the
    composite index does its job). Worth a follow-up if a future
    PocketBase release tightens the default.
  - bumpDailyCapForProject wraps the read-then-create-or-update
    in a retry on the unique constraint to handle PocketBase's
    read-after-write latency window. The cap-isolation property
    is verified end-to-end in 9c.
2026-09-21 13:27:58 +02:00
..
activity-log.test.ts test(permissions): integration coverage for the client write boundary 2026-09-16 09:46:58 +02:00
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 test(permissions): integration coverage for the client write boundary 2026-09-16 09:46:58 +02:00
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-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 test(actions): cover audit-log immunity and request flags 2026-09-16 11:06:38 +02:00
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 fix(security): lock the users collection against privilege escalation 2026-09-16 11:18:13 +02:00