Add clip pinning test coverage

This commit is contained in:
Codex
2026-04-22 08:33:47 -05:00
parent 0a13aedbef
commit 58efca9a9f
9 changed files with 124 additions and 6 deletions

View File

@@ -346,6 +346,104 @@ def test_player_can_reorder_clips_in_their_library() -> None:
assert [item["sort_order"] for item in clips.json()] == [0, 1]
def test_hidden_clips_are_removed_from_gameday_views_but_remain_pinnable() -> None:
login = client.post("/auth/admin/login", json={"username": "admin", "password": "admin"})
assert login.status_code == 200
db = SessionLocal()
session = UserSession(
session_token="player-hidden-session",
provider="teamsnap",
external_team_id="team-hidden",
external_player_id="player-hidden",
)
db.add(session)
db.flush()
asset = AudioAsset(
external_team_id="team-hidden",
owner_external_player_id="player-hidden",
uploaded_by_session_id=session.id,
title="Hidden song",
original_filename="hidden.mp3",
mime_type="audio/mpeg",
size_bytes=123,
storage_path="uploads/hidden.mp3",
)
db.add(asset)
db.flush()
clip = AudioClip(
asset_id=asset.id,
label="Hidden clip",
start_ms=0,
end_ms=10000,
normalization_status="ready",
normalized_path="clips/hidden.mp3",
)
db.add(clip)
db.commit()
db.refresh(clip)
db.close()
client.cookies.set(settings.session_cookie_name, "player-hidden-session")
pin_response = client.post(
"/games/game-hidden/assignments",
json={
"external_team_id": "team-hidden",
"external_player_id": "player-hidden",
"clip_id": clip.id,
"batting_slot": 1,
"status": "ready",
},
)
assert pin_response.status_code == 200
visible_before_hide = client.get(
"/media/clips",
params={"external_team_id": "team-hidden", "owner_external_player_id": "player-hidden"},
)
assert visible_before_hide.status_code == 200
assert [item["id"] for item in visible_before_hide.json()] == [clip.id]
assert visible_before_hide.json()[0]["hidden"] is False
hide_response = client.patch(
f"/media/clips/{clip.id}",
params={"owner_external_player_id": "player-hidden"},
json={"start_ms": 0, "end_ms": 10000, "hidden": True},
)
assert hide_response.status_code == 200
assert hide_response.json()["hidden"] is True
visible_after_hide = client.get(
"/media/clips",
params={"external_team_id": "team-hidden", "owner_external_player_id": "player-hidden"},
)
assert visible_after_hide.status_code == 200
assert visible_after_hide.json() == []
hidden_in_library = client.get(
"/media/clips",
params={
"external_team_id": "team-hidden",
"owner_external_player_id": "player-hidden",
"include_hidden": True,
},
)
assert hidden_in_library.status_code == 200
assert [item["id"] for item in hidden_in_library.json()] == [clip.id]
assert hidden_in_library.json()[0]["hidden"] is True
game_assignments = client.get("/games/game-hidden/assignments")
prep = client.get("/games/game-hidden/prep")
pins = client.get("/games/pins", params={"external_player_id": "player-hidden"})
assert game_assignments.status_code == 200
assert prep.status_code == 200
assert pins.status_code == 200
assert game_assignments.json() == []
assert prep.json()["assignments"] == []
assert [item["clip_id"] for item in pins.json()] == [clip.id]
def test_clip_updates_can_use_player_scoped_authorization() -> None:
uploader_session = UserSession(session_token="uploader-session", provider="teamsnap")
editor_session = UserSession(session_token="editor-session", provider="teamsnap")