Dev mode revamp
This commit is contained in:
@@ -1291,3 +1291,68 @@ def test_websocket_state_push():
|
||||
assert ws.receive_json() == {"type": "state_changed"}
|
||||
finally:
|
||||
app.dependency_overrides.clear()
|
||||
|
||||
def test_skip_character_creation(session):
|
||||
game = crud.create_game(session)
|
||||
p1 = crud.add_player(session, game.id, "Carlos", is_creator=True)
|
||||
p2 = crud.add_player(session, game.id, "Barry")
|
||||
p3 = crud.add_player(session, game.id, "Jaspar")
|
||||
session.refresh(game)
|
||||
game.phase = "character_creation"
|
||||
game.dev_mode = True
|
||||
session.add(game)
|
||||
session.commit()
|
||||
|
||||
# p1 did part of the work by hand; the skip must not overwrite it
|
||||
p1.avatar_look = "Hand-written bandana"
|
||||
session.add(p1)
|
||||
session.commit()
|
||||
crud.submit_techniques(session, p1.id, "Carlos Strike", "Hide", "Roll")
|
||||
|
||||
fills = {p.id: {
|
||||
"avatar_look": f"Look for {p.name}",
|
||||
"avatar_smell": "of test cheese",
|
||||
"first_words": "Test!",
|
||||
"good_at_math": "Only in tests",
|
||||
"like": "Their test coverage",
|
||||
"hate": "Their flaky tests",
|
||||
} for p in game.players}
|
||||
|
||||
ok, msg = crud.skip_character_creation(session, game, fills)
|
||||
assert ok, msg
|
||||
session.refresh(game)
|
||||
assert game.phase == "scene_setup"
|
||||
|
||||
for p in (p1, p2, p3):
|
||||
session.refresh(p)
|
||||
assert p.avatar_look and p.avatar_smell and p.first_words and p.good_at_math
|
||||
assert p.other_like and p.other_hate
|
||||
assert p.tech_jack and p.tech_queen and p.tech_king
|
||||
# Everyone holds techniques created by someone else
|
||||
own = {t.lower() for t in json.loads(p.created_techniques)}
|
||||
held = {p.tech_jack.lower(), p.tech_queen.lower(), p.tech_king.lower()}
|
||||
assert not (own & held)
|
||||
session.refresh(p1)
|
||||
assert p1.avatar_look == "Hand-written bandana"
|
||||
assert json.loads(p1.created_techniques) == ["Carlos Strike", "Hide", "Roll"]
|
||||
|
||||
# Ranks were rolled: one rank-3 Deep, one rank-1 Pi-Rat, rest rank 2
|
||||
ranks = sorted(p.rank for p in (p1, p2, p3))
|
||||
assert ranks == [1, 2, 3]
|
||||
|
||||
def test_skip_character_creation_wrong_phase(session):
|
||||
game = crud.create_game(session)
|
||||
crud.add_player(session, game.id, "Carlos", is_creator=True)
|
||||
session.refresh(game)
|
||||
ok, msg = crud.skip_character_creation(session, game, {})
|
||||
assert not ok
|
||||
|
||||
def test_dev_mode_default_env(session, monkeypatch):
|
||||
# Unset = local checkout, defaults on
|
||||
monkeypatch.delenv("PIRATS_DEV_MODE", raising=False)
|
||||
assert crud.create_game(session).dev_mode is True
|
||||
# Set = deployment controls it explicitly
|
||||
monkeypatch.setenv("PIRATS_DEV_MODE", "false")
|
||||
assert crud.create_game(session).dev_mode is False
|
||||
monkeypatch.setenv("PIRATS_DEV_MODE", "true")
|
||||
assert crud.create_game(session).dev_mode is True
|
||||
|
||||
Reference in New Issue
Block a user