Verify and explain defender-only PvP redraws

This commit is contained in:
2026-09-04 19:27:25 -07:00
parent 2f8f67a24c
commit cf63ffed47
5 changed files with 25 additions and 4 deletions
+20
View File
@@ -2835,3 +2835,23 @@ def test_personal_objective_api_requires_vote(session):
assert rat.completed_personal_1
finally:
app.dependency_overrides.clear()
@pytest.mark.parametrize('defense, success, redraw', [
('9S', True, True), ('2S', False, True),
('9H', True, False), ('2H', False, False), ('QS', True, True),
])
def test_pvp_redraw_depends_on_color_not_success(session, defense, success, redraw):
game, deep, (attacker, defender) = make_scene_game(session, num_pirats=2)
attacker.hand_cards = '["7C"]'
defender.hand_cards = json.dumps([defense])
game.deck_cards = '["AD"]'
session.commit()
assert crud.create_pvp_challenge(session, game.id, attacker.id, defender.id, '7C')[0]
duel = game.challenges[0]
ok, _, result = crud.play_pvp_defense(session, duel.id, defender.id, defense)
assert ok and result['success'] == success
assert result['drew_card'] == ('AD' if redraw else None)
assert crud.get_player_hand(attacker) == []
assert crud.get_player_hand(defender) == (['AD'] if redraw else [])
assert not crud.play_pvp_defense(session, duel.id, defender.id, 'AD')[0]