Verify and explain defender-only PvP redraws
This commit is contained in:
@@ -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]
|
||||
|
||||
Reference in New Issue
Block a user