Discard completed obstacles automatically and verify scene refresh rules

This commit is contained in:
2026-09-04 19:21:35 -07:00
parent 1837bf04e6
commit 749bef6ff1
5 changed files with 51 additions and 3 deletions
+41
View File
@@ -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"]