feat: add announced checkbox to track rows
Add a persistent "announced" checkbox after each track's Announce button. The state is stored in a new `announced` column on `show_tracks` and is auto-set when the Announce button is pressed. The checkbox is also freely togglable, and announced tracks have their Announce button disabled. Also fixes .env leakage in test_config.py (pass _env_file=None) and adds tests for the new DB method, API endpoint, and announce side-effect. Made-with: Cursor
This commit is contained in:
@@ -187,3 +187,66 @@ def test_ws_subscribe_with_invalid_token(app):
|
||||
ws.send_json({"type": "subscribe", "token": "wrong"})
|
||||
with pytest.raises(Exception):
|
||||
ws.receive_json()
|
||||
|
||||
|
||||
# --- Announced endpoint tests ---
|
||||
|
||||
def test_announce_sets_announced_flag(client, db):
|
||||
show = _seed_show(db)
|
||||
resp = client.post(
|
||||
"/admin/announce",
|
||||
json={"show_id": show.id, "position": 1},
|
||||
headers={"Authorization": "Bearer test-token"},
|
||||
)
|
||||
assert resp.status_code == 200
|
||||
tracks = db.get_show_tracks(show.id)
|
||||
assert tracks[0]["announced"] == 1
|
||||
|
||||
|
||||
def test_set_announced_with_bearer(client, db):
|
||||
show = _seed_show(db)
|
||||
resp = client.post(
|
||||
"/admin/announced",
|
||||
json={"show_id": show.id, "position": 1, "announced": True},
|
||||
headers={"Authorization": "Bearer test-token"},
|
||||
)
|
||||
assert resp.status_code == 200
|
||||
assert resp.json()["status"] == "ok"
|
||||
tracks = db.get_show_tracks(show.id)
|
||||
assert tracks[0]["announced"] == 1
|
||||
|
||||
|
||||
def test_set_announced_toggle_off(client, db):
|
||||
show = _seed_show(db)
|
||||
client.post(
|
||||
"/admin/announced",
|
||||
json={"show_id": show.id, "position": 1, "announced": True},
|
||||
headers={"Authorization": "Bearer test-token"},
|
||||
)
|
||||
resp = client.post(
|
||||
"/admin/announced",
|
||||
json={"show_id": show.id, "position": 1, "announced": False},
|
||||
headers={"Authorization": "Bearer test-token"},
|
||||
)
|
||||
assert resp.status_code == 200
|
||||
tracks = db.get_show_tracks(show.id)
|
||||
assert tracks[0]["announced"] == 0
|
||||
|
||||
|
||||
def test_set_announced_without_auth(client, db):
|
||||
_seed_show(db)
|
||||
resp = client.post(
|
||||
"/admin/announced",
|
||||
json={"show_id": 1, "position": 1, "announced": True},
|
||||
)
|
||||
assert resp.status_code == 401
|
||||
|
||||
|
||||
def test_set_announced_invalid_position(client, db):
|
||||
_seed_show(db)
|
||||
resp = client.post(
|
||||
"/admin/announced",
|
||||
json={"show_id": 1, "position": 99, "announced": True},
|
||||
headers={"Authorization": "Bearer test-token"},
|
||||
)
|
||||
assert resp.status_code == 404
|
||||
|
||||
Reference in New Issue
Block a user