Discard completed obstacles automatically and verify scene refresh rules
This commit is contained in:
@@ -2651,3 +2651,44 @@ def test_kick_last_pending_voter_completes_voting(session):
|
||||
assert crud.kick_player(session, game, b)[0]
|
||||
assert game.phase == "deep_upkeep"
|
||||
assert game.last_rank_up_player_id == a.id
|
||||
|
||||
|
||||
def test_completed_obstacle_discards_without_replacement(session):
|
||||
game, deep, (rat,) = make_scene_game(session)
|
||||
obs = game.obstacles[0]
|
||||
oid = obs.id
|
||||
obs.played_cards = json.dumps([{"card": "KC", "success": True}])
|
||||
rat.hand_cards = json.dumps(["QD"])
|
||||
session.add(obs)
|
||||
session.add(rat)
|
||||
session.commit()
|
||||
assert crud.create_challenge(session, game.id, deep.id, rat.id, [oid])[0]
|
||||
assert crud.play_challenge_card(session, rat.id, oid, "QD")[0]
|
||||
assert session.get(Obstacle, oid) is None
|
||||
session.refresh(game)
|
||||
assert len(game.obstacles) == 1
|
||||
|
||||
|
||||
def test_cannot_clear_unfinished_obstacle(session):
|
||||
game, deep, (rat,) = make_scene_game(session)
|
||||
oid = game.obstacles[0].id
|
||||
crud.clear_completed_obstacle(session, game.id, oid)
|
||||
assert session.get(Obstacle, oid) is not None
|
||||
|
||||
|
||||
def test_setup_joker_only_increases_following_scene(session, monkeypatch):
|
||||
game, deep, (rat,) = make_scene_game(session)
|
||||
for obs in list(game.obstacles):
|
||||
session.delete(obs)
|
||||
game.current_scene_number = 2
|
||||
deep.previous_role = "pirat"
|
||||
rat.previous_role = "deep"
|
||||
session.commit()
|
||||
monkeypatch.setattr('pirats.crud_scene.reshuffle_discard_pile', lambda db, game: None)
|
||||
game.deck_cards = json.dumps(["Joker1", "2H", "3H", "4H"])
|
||||
session.commit()
|
||||
assert crud.confirm_scene_setup(session, game.id)[0]
|
||||
session.refresh(game)
|
||||
assert len(game.obstacles) == 2
|
||||
assert game.extra_obstacles == 1
|
||||
assert crud.get_game_deck(game) == ["4H"]
|
||||
|
||||
Reference in New Issue
Block a user