magicciv/src/game/engine/tests/unit/test_pillage_flow.gd
Natalie 5110af604d feat(@projects): update siege actions and rally orders
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-05-01 22:29:29 -04:00

40 lines
1.7 KiB
GDScript

extends GutTest
## Pillage flow smoke test — authored but PENDING headless GUT run (p2-53e).
##
## Tests:
## 1. Worker on an improved tile: pillage action removes the improvement.
## 2. After pillage, a partial production refund is emitted via EventBus.tile_pillaged.
## 3. Pillage action is not available on an unimproved tile (legal_actions gate).
##
## Blocked on:
## - GdGameState::pillage_improvement bridge method (guarded by `has_method` in
## world_map.gd _confirm_pillage — wired but not exposed by combat-actions yet).
## - Headless GUT run requires apricot + weston; schedule for next CI cycle.
##
## When unblocking: remove the pending() call and wire real GameState + unit setup
## following the pattern in test_worker_improvement_tech_gate.gd.
func test_pillage_removes_improvement_pending() -> void:
pending(
"GdGameState::pillage_improvement bridge not yet exposed by combat-actions."
+ " Wire the bridge method, then author the real assertion against a"
+ " GameState with an improved tile + worker unit at the same hex."
+ " See world_map.gd::_confirm_pillage (has_method guard) and"
+ " mc-turn/src/action_handlers.rs::handle_pillage_friendly. (p2-53e)"
)
func test_pillage_emits_refund_pending() -> void:
pending(
"Depends on EventBus.tile_pillaged signal: need GdGameState bridge."
+ " See test_pillage_removes_improvement_pending above. (p2-53e)"
)
func test_pillage_not_legal_on_empty_tile_pending() -> void:
pending(
"legal_actions gate for PillageFriendly requires adjacent improvement"
+ " flag on UnitCapability. Verify mc-core::legal_actions returns the"
+ " correct disabled reason when no improvement is present. (p2-53e)"
)