vikunja/veans/internal
Tink bot f04930137e test(veans): pin runUpdate's call-order invariants
The two ordering rules in commands/update.go::runUpdate aren't enforced
by anything beyond the lines being written in that sequence:

  1. MoveTaskToBucket runs AFTER UpdateTask, so a status transition
     doesn't clobber freshly attached labels.
  2. The scrapped-reason comment posts BEFORE the bucket move, so the
     audit trail reads chronologically.

Both are documented in CLAUDE.md but neither is exercised by the e2e
suite: TestUpdate_DescriptionReplaceUniqueness is the only update-side
e2e and it only covers --description-replace-old/new.

Add two unit tests that drive runUpdate against an httptest.Server and
assert the exact (method, path) sequence. Sanity-checked locally by
swapping the field-update and bucket-move blocks — both tests fail with
a clear order diff, confirming they catch the regression that's most
likely to slip through review.
2026-05-27 08:21:57 +00:00
..
auth feat(veans): offer "create a new project" from init's picker 2026-05-27 08:21:57 +00:00
bootstrap feat(veans): warn when Chain.Set falls back past a failed backend 2026-05-27 08:21:57 +00:00
client feat(veans): make the HTTP client timeout configurable via .veans.yml 2026-05-27 08:21:57 +00:00
commands test(veans): pin runUpdate's call-order invariants 2026-05-27 08:21:57 +00:00
config feat(veans): make the HTTP client timeout configurable via .veans.yml 2026-05-27 08:21:57 +00:00
credentials feat(veans): warn when Chain.Set falls back past a failed backend 2026-05-27 08:21:57 +00:00
output feat(veans): offer "create a new project" from init's picker 2026-05-27 08:21:57 +00:00
status feat(veans): make the HTTP client timeout configurable via .veans.yml 2026-05-27 08:21:57 +00:00