← all tickets

50 — Backfill test: Hiram "0mission" Svensson (36017)

Status: fixed

What to build: 36017 is the only *identity* that is implemented, non-vanilla, and untested — it rides the grandfather list (tests/fixtures/untested_cards_grandfathered.json). Write at least one card_36017_* Rust test and delete the 36017 exemption entry (the list only shrinks; an entry that gains a test must be deleted, per docs/adding-a-card.md).

Where: implementation is in rust/netrunner-core/src/cards/vp.rs:19-24 (hooks on_hardware_install + on_hardware_trash, impl hiram_peek at vp.rs:65+). Tests go in a #[cfg(test)] mod tests in vp.rs — note vp.rs currently has zero card_* tests, so this ticket also establishes the test module for the pack (follow the sg.rs pattern, including the set_runner_identity helper style at sg.rs:2103-2111).

Definition of done: card_36017_* test exercising the install and trash triggers passes; 36017 removed from the grandfathered fixture; has_tests flipped in game/cards_impl/vp.json; tests/test_card_manifest_honesty.py green.

Resolution

vp.rs now has a #[cfg(test)] mod tests — the first one in the pack — built on the sg.rs helper shape (base_card / base_state / set_runner_identity, plus a become_hiram wrapper since both tests swap the identity).

Two tests. card_36017_hardware_install_and_trash_peek_the_top_of_rd fires hooks::trigger_hardware_install and trigger_hardware_trash under a non-Hiram identity first (no decision — the hooks are keyed by identity code), then under 36017, and asserts each trigger pushes a Runner DecisionData::Hiram carrying the *top* card of a two-card R&D, that R&D still holds both cards (a peek is not a draw), and that the log names the peeked title. card_36017_peek_with_an_empty_rd_shows_no_card covers the empty-R&D arm: still a decision, card: None, "R&D is empty" logged — the runner's AcknowledgeHiram is owed either way.

36017 deleted from tests/fixtures/untested_cards_grandfathered.json (15 codes left, seeded_count untouched at 71) and has_tests flipped to true in game/cards_impl/vp.json.

cargo fmt, cargo clippy --workspace --all-targets -- -D warnings, cargo test --workspace (162, was 160) and pytest -q (160, incl. the 16 manifest-honesty tests) all green.