This commit is contained in:
team3
2026-10-07 15:41:41 +02:00
parent b65f4d75f4
commit 2f771a9c30
10 changed files with 527 additions and 37 deletions

View File

@@ -151,13 +151,25 @@ def test_host_darf_jeden_film_nachschlagen(client, zuschauer, film, hostmodus):
assert zuschauer.get(f"/api/users/{anna}/schutz").json()["film"]["title"] == "Alien"
def test_ohne_schluessel_kein_hostmodus(zuschauer):
"""Die Tastenkombination allein reicht nicht mehr."""
def hostfilm_setzen(client, hostmodus, movie_id):
"""Ein Host setzt den Host-Film und gibt die Rechte wieder ab."""
hostmodus(client)
client.post("/api/host/film", json={"movie_id": movie_id})
client.post("/api/host", json={"an": False})
def test_ohne_hostfilm_reicht_die_tastenkombination(zuschauer):
assert zuschauer.post("/api/host", json={"an": True}).json()["host"] is True
def test_mit_hostfilm_kein_hostmodus_ohne_film(zuschauer, hostmodus, film):
hostfilm_setzen(zuschauer, hostmodus, film(1))
assert zuschauer.post("/api/host", json={"an": True}).status_code == 403
assert zuschauer.get("/api/host").json()["host"] is False
def test_falscher_schluessel_kein_hostmodus(zuschauer):
def test_falscher_schluessel_kein_hostmodus(zuschauer, hostmodus, film):
hostfilm_setzen(zuschauer, hostmodus, film(1))
antwort = zuschauer.post(
"/api/host", json={"an": True, "schluessel": "geraten"}
)
@@ -173,7 +185,8 @@ def test_schluessel_schaltet_frei_und_bleibt(zuschauer, hostmodus):
assert zuschauer.get("/api/host").json()["host"] is True
def test_ausschalten_geht_ohne_schluessel(zuschauer, hostmodus):
def test_ausschalten_geht_ohne_schluessel(zuschauer, hostmodus, film):
hostfilm_setzen(zuschauer, hostmodus, film(1))
hostmodus(zuschauer)
assert zuschauer.post("/api/host", json={"an": False}).json()["host"] is False
# Jetzt ist die Sitzung wieder gewöhnlich
@@ -189,9 +202,12 @@ def test_hostfilm_oeffnet_den_hostmodus(zuschauer, client, hostmodus, film):
# Nur der Host darf den Host-Film setzen oder sehen
assert client.post("/api/host/film", json={"movie_id": film(1)}).status_code == 403
assert client.get("/api/host/film").status_code == 403
# Ob es einen gibt, sieht jeder — welcher, nicht
assert client.get("/api/host").json() == {"host": False, "film": False}
hostmodus(zuschauer)
assert zuschauer.post("/api/host/film", json={"movie_id": film(1)}).json()["gesetzt"] is True
assert zuschauer.get("/api/host/film").json()["film"]["id"] == film(1)
assert client.get("/api/host").json() == {"host": False, "film": True}
# Falscher Film: nichts; richtiger Film: Host
assert client.post("/api/host", json={"an": True, "movie_id": film(2)}).status_code == 403
@@ -199,8 +215,8 @@ def test_hostfilm_oeffnet_den_hostmodus(zuschauer, client, hostmodus, film):
assert client.post("/api/host", json={"an": True, "movie_id": film(1)}).json()["host"] is True
assert client.get("/api/host").json()["host"] is True
# Aufheben: der Film öffnet nichts mehr
# Aufheben: ohne Host-Film reicht die Tastenkombination
zuschauer.post("/api/host/film", json={"movie_id": None})
assert zuschauer.get("/api/host/film").json()["film"] is None
client.post("/api/host", json={"an": False})
assert client.post("/api/host", json={"an": True, "movie_id": film(1)}).status_code == 403
assert client.post("/api/host", json={"an": True}).json()["host"] is True