Abspielen spielt ab
Im Aufmacher der Startseite stand „Abspielen", und wer draufdrückte, landete auf der Detailseite. Gemessen am laufenden Server: beide Knöpfe riefen dieselbe Funktion — `oeffnen` —, der eine hiess nur anders. Drei Dinge waren falsch, alle an derselben Stelle: **Der Knopf log.** Jetzt startet er den Spieler, mit Fortsetzen ab der Stelle, an der man war. Ohne Datei — eine ganze Serie — heisst er „Ansehen" und führt dorthin, wo man wählen kann. **Eine angefangene Folge war kein Film.** Sie lief durch `alsHero` mit `art: 'filme'` und ihrer eigenen Kennung; der Klick ging auf `#/filme/<Folgenkennung>` und endete in „Diesen Film gibt es nicht mehr". Nachgemessen im Browser, dann `angefangenAlsHero` dafür gebaut: die Detailseite gehört der Serie, der Fortschritt der Folge. **Ein geplanter Titel sah aus wie jeder andere.** Jetzt steht statt des Knopfes „Bald ist es soweit" mit dem Termin, wie auf der Detailseite. Dafür nennt `/home/continue` und `/home/next` nun Datei, Länge und Termin, und die Vorschläge bringen ihre Dateien mit — ohne die konnte der Aufmacher gar nicht abspielen. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
343b0cdcfb
commit
f10fb4c1bc
@@ -139,6 +139,46 @@ public class PlaybackTests
|
||||
});
|
||||
}
|
||||
|
||||
/// <summary>„Weiterschauen" muss sagen, was abgespielt würde.</summary>
|
||||
///
|
||||
/// <remarks>
|
||||
/// <b>Sonst kann der Aufmacher nur blättern.</b> Er bot „Abspielen" an
|
||||
/// und öffnete die Detailseite — weil ihm die Datei fehlte. Und bei einer
|
||||
/// Folge führte er auf <c>#/filme/<Folgenkennung></c>, wo nichts
|
||||
/// steht: die Detailseite gehört der Serie, der Fortschritt der Folge.
|
||||
/// </remarks>
|
||||
[Test]
|
||||
public async Task Weiterschauen_nennt_Datei_und_Serie()
|
||||
{
|
||||
Datei("Dark (2017)/Season 01/Dark - S01E01 - Geheimnisse.mkv");
|
||||
using var server = new FlaroServer();
|
||||
var client = await Eingelesen(server, "Shows");
|
||||
|
||||
var serien = await client.GetFromJsonAsync<Page<SeriesResponse>>("/api/v1/series");
|
||||
var serie = serien!.Items.Single();
|
||||
var folgen = await client.GetFromJsonAsync<Page<EpisodeResponse>>(
|
||||
$"/api/v1/series/{serie.Id}/episodes");
|
||||
var folge = folgen!.Items.Single();
|
||||
|
||||
await Melden(client, folge.Id, 120, 1500);
|
||||
|
||||
var reihe = await client.GetFromJsonAsync<Page<ContinueEntry>>("/api/v1/home/continue");
|
||||
var zeile = reihe!.Items.Single();
|
||||
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
Assert.That(zeile.Kind, Is.EqualTo("episode"));
|
||||
Assert.That(zeile.SeriesId, Is.EqualTo(serie.Id),
|
||||
"ohne die Serie landet der Aufmacher auf einer Folge, die als Film nicht existiert");
|
||||
Assert.That(zeile.FileId, Is.EqualTo(folge.Files.Single().Id),
|
||||
"ohne die Datei kann „Abspielen\u201c nicht abspielen");
|
||||
// Dieselbe Länge wie die Datei selbst. Im Prüfbestand liegen
|
||||
// Attrappen ohne Spuren, also steht dort beidemal nichts — der
|
||||
// Punkt ist, dass es derselbe Wert ist.
|
||||
Assert.That(zeile.DurationSeconds, Is.EqualTo(folge.Files.Single().DurationSeconds));
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
public async Task Durchgeschautes_verlaesst_Weiterschauen()
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user