Add clip pinning test coverage
This commit is contained in:
@@ -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")
|
||||
|
||||
Reference in New Issue
Block a user