Skip to content

moooon

Motir

Vibe your whole project. Bring an idea — Motir's three AI layers plan it, track it, and ship it, end to end. You're looking at Motir, built in Motir.

  • Vibe Project
  • Open Source
  • AI Agent
  • AI Loop
1
requests
0
upvotes
145
planned
1,361
shipped

Motir · Work items

MOTIR-190Done

3.6.4 Story tests — column config service + the unmapped→mapped resolution E2E

Estimate: 18m · Depends on: 3.6.2, 3.6.3

The closing test subtask — the same split Stories 3.1.7 / 3.2.7 used: component/unit over the config logic + a Playwright E2E proving the headline resolution end-to-end (unmapped status → mapped → on the board).

Component / unit (vitest, real Postgres). The column-config service: add / rename / reorder / delete; mapStatusToColumn enforces @@unique([boardId, statusId]) (re-map replaces, never duplicates); deleteColumn unmaps its statuses and deletes no work item; the delete guard; the membership + workspace gates. The BoardConfigEditor render + the map/unmap interaction (incl. the keyboard path) + the repointed tray CTA.

E2E (Playwright) tests/e2e/board-config.spec.ts. Against a seeded project: add a custom status in Workflow settings → assert it shows in the board’s unmapped-statuses tray on /boards → open Board settings, map it to a column → assert it now renders as/in that column on /boards and the tray entry is gone. Plus: reorder a column (persists on reload); delete an empty column (its statuses return to the tray, no cards lost); a non-admin sees the surface read-only.

Acceptance criteria

  • pnpm test covers the config service (add/rename/reorder/delete/map/unmap, the unique-move, the delete guard, the gates) and the editor render + map/unmap (incl. keyboard) + the repointed tray.
  • pnpm test:e2e --grep board-config runs green over the real stack, asserting the unmapped→mapped→on-board resolution end-to-end, a column reorder persisting, a column delete returning statuses to the tray without losing work items, and the non-admin read-only gate.
  • Reuses the real-Postgres harness (tests/helpers/db.ts) + the seeded project; it does NOT duplicate the 3.2.7 drag/board-UI journeys.

Context refs

  • tests/e2e/board-projection.spec.ts (3.1.7) + tests/e2e/board-ui.spec.ts (3.2.7) — the board E2E patterns this builds on; tests/helpers/db.ts — real-Postgres truncation
  • tests/components/board-completeness.test.tsx (3.2.6) — the unmapped-tray component test to extend for the repointed CTA
  • Story 3.6.2 / 3.6.3 — the service + UI under test; motir-core/CLAUDE.md — test conventions (real Postgres, no mocks)