Vierundzwanzig Bilder, und der Weg dorthin fehlte sowieso

Zwei Dinge, die zusammengehören.

**Den Bilderdialog gab es nur an der Kachel.** Wer auf der Seite eines
Films stand und sah, dass das Plakat falsch ist, stand genau dort, wo er
nichts dagegen tun konnte — der Weg führte zurück in die Liste und über
das Dreipunktmenü. Jetzt steht „Bearbeiten" in der Knopfreihe der
Detailseite, bei Filmen wie bei Serien, und nur im Kopf: dieselbe Reihe
steht auch über jeder Fassung und jeder Folge.

**Und es waren vierundzwanzig, weil dort vierundzwanzig stand.** Bei
„365 Tage" hat TMDB neunundsechzig Plakate. Dazu ein zweiter, leiserer
Filter: gefragt wurden nur drei Sprachen. Fürs automatische Holen ist
das richtig — dort wird eines genommen, und es soll passen. Wer von Hand
wählt, will sehen, was es gibt; sortiert wird ohnehin nach Sprache, also
steht das Passende weiterhin oben.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Scarriffle
2026-10-12 20:49:37 +02:00
co-authored by Claude Opus 5
parent 78e347c58d
commit bfe263d495
3 changed files with 94 additions and 7 deletions
@@ -28,6 +28,50 @@ public class TmdbClientTests
Assert.That(attrappe.Aufrufe, Is.Empty, "Ohne Schlüssel darf keine Anfrage hinausgehen");
}
/// <summary>Die Bilderliste für die Auswahl von Hand.</summary>
///
/// <remarks>
/// <b>Zwei Grenzen, die beide störten.</b> Die Anfrage holte nur drei
/// Sprachen, und gezählt wurde bei vierundzwanzig je Art zu Ende — bei
/// „365 Tage" hat TMDB neunundsechzig Plakate, und die fehlenden
/// fünfundvierzig sah niemand. Wer von Hand wählt, soll sehen, was es
/// gibt.
/// </remarks>
[Test]
public async Task Die_Bilderliste_ist_nicht_bei_vierundzwanzig_zu_Ende()
{
var plakate = string.Join(",", Enumerable.Range(0, 69)
.Select(i => $$"""{"file_path":"/p{{i}}.jpg","iso_639_1":"en","vote_average":1.0}"""));
var attrappe = Attrappe.MitJson($$"""{"posters":[{{plakate}}],"backdrops":[],"logos":[]}""");
var bilder = await Client(attrappe).BilderAsync(603, serie: false);
Assert.Multiple(() =>
{
Assert.That(bilder.Count(b => b.Kind == "poster"), Is.EqualTo(69));
Assert.That(attrappe.Aufrufe[0], Does.Not.Contain("include_image_language"),
"Die Auswahl von Hand soll alle Sprachen sehen");
});
}
/// <summary>Die passende Sprache steht trotzdem oben.</summary>
[Test]
public async Task Die_eigene_Sprache_steht_vorn()
{
var attrappe = Attrappe.MitJson("""
{"posters":[
{"file_path":"/en.jpg","iso_639_1":"en","vote_average":9.0},
{"file_path":"/de.jpg","iso_639_1":"de","vote_average":1.0},
{"file_path":"/ja.jpg","iso_639_1":"ja","vote_average":8.0}],
"backdrops":[],"logos":[]}
""");
var bilder = await Client(attrappe, FesteEinstellungen.MitSchluessel("de-DE"))
.BilderAsync(603, serie: false);
Assert.That(bilder[0].Url, Does.Contain("/de.jpg"));
}
[Test]
public async Task Ein_Film_wird_gelesen()
{