MotirBuilding in public
MOTIR · moooon
onMotir
You’re viewing a public project. Anyone can view it — no account needed. Sign in to submit, upvote, or comment on requests.View-only — you can’t edit work items
MOTIR-405

6.11.8 Tests (vitest) — read-exclusion everywhere + promote/decline/dedupe/snooze

Done
Description

Estimate: 60m · Depends on: 6.11.4, 6.11.5

Lock the two load-bearing guarantees: (1) triage items are excluded from EVERY normal read, and (2) the actions do exactly what the taxonomy says. On a real Postgres (the standing rule), covering:

  • Exclusion at every read — create a triage item, then assert it is ABSENT from: the issue tree, each board read, each list/saved-view read, the ready set, and a 6.1.1 FilterAST search that matches its title; and assert it IS present in the triage-queue read. (A parameterized test over the read set so adding a new read without the exclusion is caught.)
  • Intake — the in-app submit creates a triage item attributed to the session member (submittedByUserId); the shared intake service also attributes a signed-in NON-member (the 6.12 path) to a real submittedByUserId; a logged-out caller is rejected (401) and creates nothing.
  • Actions — accept lands it in the backlog at default status; promote sets parent + position via workItemsService and the item now appears in the tree/search; decline cancels it; mark-duplicate folds comments+attachments into the canonical item and cancels the duplicate; snooze hides it from the queue and new activity returns it. Each respects 6.4 permissions.

Acceptance criteria

  • The exclusion is asserted at tree, every board read, every list read, ready set, AND FilterAST search; the queue-only read is asserted; the parameterized read-set test fails if a read omits the exclusion.
  • Promote/accept/decline/merge/snooze each assert their post-state (parent/position/status/queue-presence) against a repository read.
  • The intake rejects a logged-out caller (no work item created); promote/decline assert 6.4 permission enforcement.
  • New service/repository code respects the per-file coverage gate (CLAUDE.md § coverage); tests use the real Postgres helper.

Context refs

  • 6.11.3 (exclusion + queue read), 6.11.4 (intake), 6.11.5 (actions).
  • motir-core/CLAUDE.md § tests-use-real-Postgres + the per-file coverage gate.
  • tests/helpers/db.ts — the truncate-between-tests harness.