Skip to content

test: refresh card fixtures from live captures; fix(cli): empty Properties block for {} - #25

Merged
dsociative merged 3 commits into
masterfrom
chore/refresh-card-fixtures
Aug 27, 2026
Merged

test: refresh card fixtures from live captures; fix(cli): empty Properties block for {}#25
dsociative merged 3 commits into
masterfrom
chore/refresh-card-fixtures

Conversation

@dsociative

Copy link
Copy Markdown
Owner

Why

The card fixtures were hand-trimmed subsets of July captures (9–39 of the ~90 keys a card carries; external_links absent everywhere) and had been enriched by hand with a child card, a file and a blocker that no longer existed on the test account. Tests could only prove that the models parse what we thought the API returns.

What

  • card_get_full.json (both crates), mcp_card_full.json, card_get_no_properties.json, card_with_tags.json, card_with_checklists.json, cards_list.json (both crates) are now full live captures of the dstest fixture card 67089469 (GET /cards/{id}) and of GET /cards?space_id=810671, sanitized: emails → <user>@example.com, avatar data URLs → null, inbound email keys zeroed, share ids null.
  • Hand overlays remain only for what the test tariff cannot produce — relations (children), blocking (blockers/blocked) and custom properties — plus the CLI two-item checklist and two-tag scenarios.
  • The dstest fixture card is now frozen (permanent attachment probe-attach.txt = file 62769658, permanent external link); a separate card is the playground for mutating smoke tests.
  • Test expectations follow the data: new attachment id/uuid, five real cards in the list (one title with an emoji and Cyrillic — the table copes), and a corrected assumption: list cards do carry members, tags and checklists (the old test asserted they don't).

Bug found by the realistic fixtures

Kaiten returns "properties": {} for a card without custom properties; card view printed an empty Properties: block with {} under it (reproduced live on dstest). The hand-made fixture said null and hid it. Fixed in the first commit (fix(cli): …), verified RED → GREEN in isolation; the MCP projection already treated {} as "none".

No public API change; fix → 0.5.1.

Kaiten returns `"properties": {}` for a card without custom properties; `card
view` printed an empty `Properties:` block with `{}` under it. The hand-made
fixture said `null`, which hid this — found while refreshing the fixtures from
live captures. The MCP projection already treated an empty object as "none".
…itized)

The card fixtures were hand-trimmed subsets of July captures (9–39 of the 90
keys a card carries, `external_links` absent everywhere), later enriched by
hand with a child card, a file and a blocker that no longer existed on the
test account. They are now full captures of the frozen dstest fixture card
67089469 and of `GET /cards?space_id=810671`, sanitized (emails →
`<user>@example.com`, avatar data URLs → null, inbound email keys zeroed,
share ids null).

Hand overlays remain only for what the test tariff cannot produce —
relations (`children`), blocking (`blockers`, `blocked`) and custom
`properties` — plus the CLI's two-item checklist and two-tag scenarios.
Test constants follow the permanent attachment (file 62769658), the list has
the five real cards (one title with an emoji and Cyrillic), and one wrong
assumption is corrected: list cards do carry members, tags and checklists.
@codecov-commenter

codecov-commenter commented Aug 27, 2026

Copy link
Copy Markdown

⚠️ Please install the 'codecov app svg image' to ensure uploads and comments are reliably processed by Codecov.

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 86.70%. Comparing base (fc76f09) to head (27a562f).
❗ Your organization needs to install the Codecov GitHub app to enable full functionality.

Additional details and impacted files
@@           Coverage Diff           @@
##           master      #25   +/-   ##
=======================================
  Coverage   86.69%   86.70%           
=======================================
  Files          33       33           
  Lines        4894     4897    +3     
=======================================
+ Hits         4243     4246    +3     
  Misses        651      651           

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

…e card); review follow-ups

The two-item checklist scenario is captured live again: the frozen dstest
fixture card got a permanent unchecked "second item", so the checklist and
`goals_*` counters come from the API as they are. `card_with_tags.json` keeps
its legacy tag-without-tag_id overlay with a consistent `tag_ids`. The
"no properties" predicate is shared by the CLI and the MCP projection
(`properties::no_properties`); README example uses the permanent attachment id.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants